Renderscript Fatal signal 11 (SIGSEGV) код 1 (SEGV_MAPERR) адрес ошибки - PullRequest
1 голос
/ 07 апреля 2020

Я использую API camera2 для получения потока изображений формата ImageFormat.YUV_420_888. Мне нужно немного обработать их с помощью библиотеки, которая требует отправки изображения в виде байтового массива RGB (поэтому byte array length = width * height * 3)

Я использовал этот поток (а также, вероятно, все другие), чтобы преобразовать изображение в байтовый массив RGB (который, кажется, работает, по крайней мере, тот массив байтов результата - тот, который мне нужен).

Кроме того, вот точный код, который я использовал для преобразования YUV_420 в RGB, в Kotlin, с некоторыми обновлениями: 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 после нескольких попыток.

Я пробовал другие форматы изображений, другие преобразования, похоже, ничего не работает - я либо получаю тот же самый cra sh (при использовании YUV_420 или NV21), либо не могу получить правильное изображение / преобразование.

Одна вещь, которая, казалось, помогла: было android:hardwareAccelerated="false" приложение зависало после гораздо большего числа запусков, чем с android:hardwareAccelerated="true"

Я не знаю, помогает ли это ?

Кто-нибудь знает как это исправить?

1 Ответ

0 голосов
/ 13 апреля 2020

Вещи, которые я заметил в вашем примере кода:

  • вы уничтожаете свои выделения до того, как закончите их использовать (могут быть использованы повторно как контекст rs)
  • вы определяете и устанавливаете значение по умолчанию параметры запуска (не нужны)
...