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

标签 android android-ndk rgb renderscript yuv

我正在使用 camera2 API 获取格式为 ImageFormat.YUV_420_888 的图像流.我需要使用一个库对它们进行一些处理,该库需要将图像作为 RGB 字节数组发送(所以 byte array length = width * height * 3 )
我用了this thread (也可能是所有其他人)将图像转换为 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" 相比,应用程序在运行多次后崩溃
有谁知道如何修理它?

最佳答案

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

  • 您在使用完分配之前销毁分配(可以像 rs 上下文一样重复使用)
  • 您定义和设置默认启动选项(不需要)
  • 关于android - Renderscript 致命信号 11 (SIGSEGV) 代码 1 (SEGV_MAPERR) 故障地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61079363/

    相关文章:

    android - 无法解析仅在 Windows 操作系统中显示的相应 JNI 函数

    c++ - 使用 ICC 配置文件将 L*a*b* 转换为 RGB

    android - Flutter - flutter_blue 库连接问题

    安卓 java.lang.OutOfMemoryError

    android - glDrawArrays 在 vm 中工作,在手机上崩溃

    c - LittleCMS 库 : which type of variable do I have to use during conversion from rgb (bgr) to cmyk colors

    node.js - 计算线性渐变的颜色

    Android,Intent.FLAG_ACTIVITY_CLEAR_TOP 好像不行?

    安卓 Material : Status bar color won't change

    android - 带有 Android NDK 的 header