Intereting Posts
У указанного ребенка уже есть родитель. Вы должны сначала вызвать removeView () родителя ребенка Android JUnit4 Testing – откуда взять контекст? Окно Android не изменяет размер / панорамирование при открытии softinput из WebView Потребление приложения Android App Ошибка приложения при выборе / прокрутке элементов на Spinner. (LG Mobile) (java.lang.IllegalStateException: Итерация уже запущена) Поместите 2 переключателя рядом друг с другом (на одной «линии») в вертикальной компоновке Когда приложение переходит к фону во время выполнения AsyncTask, что он должен делать? Размер шрифта для редакторов Android Studio Перечисление папок и файлов с помощью Google Drive SDK V2 Предварительный просмотр не отображается в Android Studio Большой набор данных с ArrayAdapter и ListView в Android Добавить папку / файлы в эмуляторе Genymotion Странно: НЕОПРЕДЕЛЕННОЕ ТОП-УРОВЕННОЕ ИСКЛЮЧЕНИЕ: Выполнение не выполнено для приложения задачи: dexDebug Создание скриншотов iPhone и iPad, включая раму устройства Tinting ImageView не работает на Android 5.0. Идеи, как заставить его работать снова?

Ошибка кодера на графическом процессоре Adreno при кодировании с поверхности

Я боролся с этой проблемой больше недели, и, скорее всего, это ошибка в кодере Qualcomm GPU / аппаратном видео кодеке . Поскольку мы приступили к выпуску приложения, и их форумы разработчиков не предоставили никакой обратной связи, я также размещаю его здесь, надеясь, что кто-то сможет предоставить некоторые подсказки или, что еще лучше, обходное решение, так что ошибка в кодере Не срабатывает.

Приложение кодируется с поверхности. Когда определенные изображения визуализируются на поверхности, кодер терпит неудачу (100%) в одном и том же месте (когда кадр, который в настоящее время кодируется, является ключевым фреймом). Выход Logcat из кодера в момент сбоя (с последними строками, повторяющимися с очень высокой скоростью):

11-26 11:41:33.312: E/OMX-VENC-720p(25949): ERROR: async_msg_process() - Error statuscode = 1 11-26 11:41:33.312: E/ACodec(29317): [OMX.qcom.video.encoder.avc] ERROR(0x80001009) 11-26 11:41:33.312: E/MediaCodec(29317): Codec reported an error. (omx error 0x80001009, internalError -2147483648) 11-26 11:41:33.362: E/OMX-VENC-720p(25949): ERROR: venc_use_buf:set input buffer failed 11-26 11:41:33.362: E/OMX-VENC-720p(25949): ERROR: in dev_use_buf 11-26 11:41:33.362: E/OMX-VENC-720p(25949): ERROR: empty_buffer_done() failed! 11-26 11:41:33.372: E/OMX-VENC-720p(25949): m_fbd_count at o/p flush = 306 11-26 11:41:33.372: E/OMX-VENC-720p(25949): m_etb_count at i/p flush = 313 11-26 11:41:33.372: E/OMX-VENC-720p(25949): ERROR: ioctl VEN_IOCTL_CMD_FILL_OUTPUT_BUFFER failed 11-26 11:41:33.372: E/OMX-VENC-720p(25949): ERROR: dev_fill_buf() Failed 11-26 11:41:33.372: E/OMX-VENC-720p(25949): ERROR: FTBProxy() failed! 

Я также могу воспроизвести его также на Grafika , просто заменив в приложении Record GL рисование двух геометрических форм с рисованием одного из проблемных изображений в полноэкранном режиме в ландшафтном режиме и изменением битрейта на более высокое значение (7 Мбит / с). Крушение кодера происходит быстрее для увеличения битрейта.

Вот одно изображение, которое, похоже, легко разбивает его, и вот RecordFBOActivity.java с необходимыми изменениями.

С Grafika я тестировал, и кодер падает на Samsung S4, в международной версии и на оригинальном Nexus 4. С нашим программным обеспечением, которое немного сложнее, чем простое изображение, оно все равно падает на обоих. Не тестировалось на других устройствах Adreno. На Samsung S3 с графическим процессором Mali 400 работает отлично.

При скорости 4 Мбит / с кодер в нашем приложении по-прежнему падает как на S4, так и на N4, но позже. Grafika падает на N4 в том же месте, но не на S4.

EDIT: Согласно комментариям ниже, он может быть воспроизведен также при кодировании одного и того же изображения из буфера. Различные тесты, судя по всему, сужают условия для его воспроизведения на: h264 hw encoder на устройствах Qualcomm, кодируя неподвижное изображение для многих кадров (это определяет очень низкие битрейты в кодере из-за аналогичных кадров), при появлении ошибки при кодировании ключевого кадра Ошибка появляется только при кодировании определенных изображений, которые, как представляется, имеют более подробную информацию, т. Е. Требуется много бит для внутреннего кодирования).

Solutions Collecting From Web of "Ошибка кодера на графическом процессоре Adreno при кодировании с поверхности"