Renderscript 致命信号 11 (SIGSEGV) 代码 1 (SEGV_MAPERR) 故障地址

Vic*_*gna 5 rgb android yuv android-ndk renderscript

我正在使用camera2 API来获取格式的图像流ImageFormat.YUV_420_888。我需要使用一个库对它们进行一些处理,该库需要将图像作为 RGB 字节数组发送(因此byte array length = width * height * 3

我使用这个线程(也可能是所有其他线程)将图像转换为 RGB 字节数组(这似乎有效,至少结果字节数组是我需要的)。

另外,这是我在 Kotlin 中用于将 YUV_420 转换为 RGB 的确切代码,并进行了一些更新:https://gist.github.com/VictorMotogna/e7a8493af65be994f29f5508660dd4a9

A/libc: Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xe00000084 in tid 20776 (package name), pid 20776问题是几次尝试后转换崩溃并显示消息。

我尝试过其他图像格式、其他转换,但似乎没有任何效果 - 我要么遇到相同的崩溃(使用 YUV_420 或 NV21 时),要么无法获得正确的图像/转换。

似乎有帮助的一件事是:android:hardwareAccelerated="false"应用程序在运行次数比运行次数多得多后崩溃android:hardwareAccelerated="true"

有谁知道如何修理它?

Ser*_*sor 0

我在你的示例代码中注意到的事情:

  • 在使用完分配之前销毁它们(可以像 rs 上下文一样重用)
  • 您定义并设置默认启动选项(不需要)