请教一个 libyuv 的问题

2021-10-20 11:56:19 +08:00
 hashdog

我在 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]

代码

5093 次点击
所在节点    Android
8 条回复
771007147
2021-10-20 12:33:04 +08:00
看看源码里这个函数 ABGRToUVRow_NEON ?有些设备对 NEON 支持有问题?库是你自己编译的?
newmlp
2021-10-20 12:51:06 +08:00
一般是 yuv 三个分量的 stride 计算有问题,你这为什么要先加 1 再除以 2 啊,不是直接除以 2 吗
hashdog
2021-10-20 14:57:30 +08:00
@771007147 是自己编译的
hashdog
2021-10-20 14:59:27 +08:00
@newmlp 接手前辈的代码,理论上计算有问题应该所有手机都会崩溃
luny
2021-10-22 11:40:18 +08:00
把 neon 加速关了试试
zhanlanhuizhang
2021-10-28 10:18:10 +08:00
好像跟长宽的像素有关。
hashdog
2021-10-28 16:30:55 +08:00
@zhanlanhuizhang 那要怎么计算呢,我看网上的基本都是 width/2 ,我更新了新版本把+1 去掉了还是有问题,第一次接触这个还不太会。
zhanlanhuizhang
2021-11-04 09:48:32 +08:00
你要看你的 bitmap 数据哪里来的。看 bitmap 原先的像素比例,然后不够的要填充,或者裁切。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/809168

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX