Как декодировать видео h264 с помощью OpenMax в Linux? Этот код правильный? - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь декодировать видеопоток h264 с помощью декодера OpenMAX:

https://gist.github.com/NicholasShatokhin/f6a86d03707decf53d684c4c82f909a6

Похоже, что все в порядке, но когда я отправляю данные в декодер, он не заполняет выходные буферы. Обратный вызов FillBufferDone не вызывается во время работы приложения. Только когда вызывается функция Flush, я получаю этот обратный вызов с пустым буфером.

Что мне здесь не хватало? Есть ли проблема с моим кодом или с самим декодером? Как это проверить?

1 Ответ

0 голосов
/ 31 октября 2018

Полагаю, что этот вопрос достаточно долго остается без ответа, чтобы вы могли найти его в другом месте, но я отвечу независимо.

В обработчике события обратного вызова для события PortSettingsChanged вы только распечатываете сообщение об этом, но спецификация OpenMAX, описанная в разделе 3.4.5, - это динамическая реконфигурация порта. В случае туннелированной реализации потребуется только отключить / повторно включить порт, для которого произошло это событие (отключение порта приведет к возврату и освобождению буферов, подключенных к этому порту, включение выделит новые буферы, настроенные с новыми настройками порта). В случае не туннелированной реализации вам необходимо: - отключить порт, - бесплатные буферы, - прочитать настройки порта, - включить порт, - распределить новые буферы в соответствии с настройками.

Должно работать оттуда.

...