ImageConverter引起的 invalid address or address of corrupt block 0xb7feab58 passed to dlfree
虹软人脸识别,其方法要传NV21格式的byte[], github上有一个虹软的Demo,是不是虹软工作人员写的不清楚,这个Demo里bitmap转NV21格式byte[]用的是一个第三方库https://github.com/gqjjqg/android-extend,
用法如下:
ImageConverter convert = new ImageConverter();
convert.initial(mBitmap.getWidth(), mBitmap.getHeight(), ImageConverter.CP_PAF_NV21);
if (convert.convert(mBitmap, data)) {Log.d(TAG, "convert ok!");
}
convert.destroy();
!
本来是没有问题,但是我这边需求是大量检测照片,所以会频繁多次调用这个方法,以900次为例,在某些平板上是没有问题的,但是个别平板在100次左右时会报错:
07-18 21:44:53.719 6365-6609/cn.gxh.face A/libc: invalid address or address of corrupt block 0xb80402f8 passed to dlfreeFatal signal 11 (SIGSEGV), code 1, fault addr 0xdeadbaad in tid 6609 (pool-2-thread-2)
07-18 21:44:53.820 175-175/? E/DEBUG: Failed to find a valid tombstone, default to using tombstone 0.failed to open tombstone file '/data/tombstones/tombstone_00': No such file or directory
解决方法:可以换一个转换方法。
public byte[] getNV21(int inputWidth, int inputHeight, Bitmap scaled) {int[] argb = new int[inputWidth * inputHeight];scaled.getPixels(argb, 0, inputWidth, 0, 0, inputWidth, inputHeight);byte[] yuv = new byte[inputWidth * inputHeight * 3 / 2];encodeYUV420SP(yuv, argb, inputWidth, inputHeight);return yuv;}private void encodeYUV420SP(byte[] yuv420sp, int[] argb, int width, int height) {int frameSize = width * height;int yIndex = 0;int uvIndex = frameSize;int R, G, B, Y, U, V;int index = 0;for (int j = 0; j < height; j++) {for (int i = 0; i < width; i++) {R = (argb[index] & 0xff0000) >> 16;G = (argb[index] & 0xff00) >> 8;B = (argb[index] & 0xff);// well known RGB to YUV algorithmY = ((66 * R + 129 * G + 25 * B + 128) >> 8) + 16;U = ((-38 * R - 74 * G + 112 * B + 128) >> 8) + 128;V = ((112 * R - 94 * G - 18 * B + 128) >> 8) + 128;yuv420sp[yIndex++] = (byte) ((Y < 0) ? 0 : ((Y > 255) ? 255 : Y));if (j % 2 == 0 && index % 2 == 0 && uvIndex < yuv420sp.length - 2) {yuv420sp[uvIndex++] = (byte) ((V < 0) ? 0 : ((V > 255) ? 255 : V));yuv420sp[uvIndex++] = (byte) ((U < 0) ? 0 : ((U > 255) ? 255 : U));}index++;}}}
经测试,可用。
ImageConverter引起的 invalid address or address of corrupt block 0xb7feab58 passed to dlfree相关推荐
- Android之invalid address or address of corrupt block 0xabb494a0 passed to dlfree崩溃解决办法
1.问题 手机崩溃 invalid address or address of corrupt block 0xabb494a0 passed to dlfree Fatal signal 11 (S ...
- Linux: crash: invalid kernel virtual address: ffffffffb54b75b0 type: “cpu_possible_mask“
文章目录 错误 原因之一,是版本不匹配 另一个原因 错误 [root@rh7_drop_server mzhan017]# crash /usr/lib/debug/lib/modules/3.10. ...
- html语言的address,HTML: address 标签
HTML: 标签 HTML 标记定义了HTML文档中最接近的 或 的联系信息.传统上,浏览器将在 标记中找到的文本呈现为斜体文本.此标记通常也称为 元素. 在线示例 nhooo.com 的联系信息: ...
- android tombstone发生过程,Android Tombstone 分析
1.什么是tombstone 当一个动态库(native 程序)开始执行时,系统会注册一些连接到 debuggerd 的 signal handlers,当系统 crash 的时候,会保存一个 tom ...
- addr2line 和 tombstone问题分析
做安卓开发的同学对于tombstone问题应该是很熟悉了,但是对于如何排查和分析值得总结和整理的,这篇文章对入门安卓开发的技术来说是个入门指导,同时对安卓开发的中高级开发也有借鉴. 首先我们来说下什么 ...
- Android常见系统问题分析工具
bugreport bugreport会收集系统中的相关信息 系统build相关信息 内存/CPU/进程等信息 kernel log system log event log tombstones信息 ...
- Android冻结程序,Android Studio 3.0和应用程序冻结
我已经将我的 android工作室从2.x更新到android 3.0 stable. 从那时起,当我尝试使用cyanogenmod 12.1(android 5.1.1)将应用程序推送到我的Nexu ...
- Android Tombstone 分析
1.什么是tombstone 当一个动态库(native 程序)开始执行时,系统会注册一些连接到 debuggerd 的 signal handlers,当系统 crash 的时候,会保存一个 tom ...
- Android知识点 400 -- /data/tombstones
原文地址 https://www.cnblogs.com/CoderTian/p/5980426.html 返回知识列表 Android知识点list tombstone一般是由Dalvik错误.状态 ...
最新文章
- PL/pgSQL学习笔记之九
- php项目包导入项目,zend studio导入项目文件的图文操作
- ffmpeg-URL(转)
- linux服务器程序乱码,Linux安装GBK/GB2312程序显示乱码的五种解决方法
- 小程序文章怎么导出来_宠物小程序怎么进行盈利
- 《数值分析》学习笔记 ·003——数值计算中应该注意的几个问题
- GeoWebCache之单独部署arcgis瓦片
- java实现数据的Excel导出(合并单元格、样式等)
- Drug X跨越鸿沟:一个生物科学家的新药研发跋涉记
- TDL、CDL信道模型简述
- PS 打开黑屏怎么办?
- STC15W201S串口蓝牙通信PWM控制RGB彩灯
- 此生不戒多巴胺—冲刺总结
- micropython 常量_MicroPython添加Module(二)
- linux制作U盘win10启动盘
- 昆山杜克大学IT/AV Analyst Entry-level面经
- win98系统常见问题解决方法(转)
- 离散数学考前复习:(五)图
- PMP海量题库免费在线练习
- INF文件是什么(转)