请教一个 libyuv 的问题

2021 年 10 月 20 日
 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]

代码

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

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

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

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

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

© 2021 V2EX