我在 Android 上使用 libyuv,bitmap 转换 i420 数据时,部分手机会直接奔溃掉,出现概率比较低,这个问题很难复现,测试机器都试过没问题,但是线上的版本有出现闪退。实在找不出什么原因了,跪求大佬帮忙。
#00 pc 0001f012 ABGRToUVRow_NEON + 55 [armeabi-v7a]
#01 pc 0000f529 ABGRToI420 + 220 [armeabi-v7a]
#02 pc 00020911 Java_cn_test_library_yuv_YuvUtils_bitmap2i420WithC + 120 [armeabi-v7a]
代码
1
771007147 2021-10-20 12:33:04 +08:00 via Android
看看源码里这个函数 ABGRToUVRow_NEON ?有些设备对 NEON 支持有问题?库是你自己编译的?
|
2
newmlp 2021-10-20 12:51:06 +08:00
一般是 yuv 三个分量的 stride 计算有问题,你这为什么要先加 1 再除以 2 啊,不是直接除以 2 吗
|
5
luny 2021-10-22 11:40:18 +08:00
把 neon 加速关了试试
|
6
zhanlanhuizhang 2021-10-28 10:18:10 +08:00
好像跟长宽的像素有关。
|
7
hashdog OP @zhanlanhuizhang 那要怎么计算呢,我看网上的基本都是 width/2 ,我更新了新版本把+1 去掉了还是有问题,第一次接触这个还不太会。
|
8
zhanlanhuizhang 2021-11-04 09:48:32 +08:00
你要看你的 bitmap 数据哪里来的。看 bitmap 原先的像素比例,然后不够的要填充,或者裁切。
|