Можно ли создать несколько экземпляров OMXCodec, используя stagefright
Я хочу использовать libstagefright.so
в телефонах Android для медиа-операций. Я исследовал пример, приведенный на этой странице. Я пытался реализовать то же самое. При тестировании этой реализации для нескольких OMXCodec
экземпляры, это выходной буфер конфликтует друг с другом.
Я разработал проект Android в затмении и связан libstagefright
под JNI. Я добавил два класса CustomDataSource
(Что происходит MediaSource
) а также CustomOmxDecoder
, CustomDataSource
класс реализует все виртуальные методы MediaSource
, В CustomOmxDecoder
класс, я звоню OMXCodec::Create
метод. Затем я создал две темы, которые имеют отдельный экземпляр CustomOmxDecoder
, Используя эти экземпляры, я вызываю метод ProcessNextFrame
в котором я называю основной, videoDecoder->read()
метод. Вот как моя установка.
Теперь, когда я запускаю приложение с вышеупомянутыми настройками. OMXCodec
декодирует кадры обоих источников, но когда я рендерил их на поверхность, это показывает мне противоречивый вывод. Кажется, что декодированный буфер обоих источников каким-то образом запутался. Я создаю два декодера h264 одновременно. В чем здесь может быть проблема? Может ли это быть связано с MediaBufferGroup
? Я приобретаю буфер в CustomDataSource
и освободить буфер в CustomOmxDecoder
"s ProcessNextFrame
после звонка videoDecoder->read()
вызов.
Любое предложение будет отличным. Благодарю.
1 ответ
Я проверил и решил свою проблему, сомневаясь, что возможно несколько экземпляров OMXCodec. Проблема была в моем коде. И после исправления я вижу, что множественный экземпляр OMXCodec работает стабильно и плавно. Так что да, несколько экземпляров OMXCodec возможно.
Спасибо вам всем.