Можно ли создать несколько экземпляров 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 возможно.

Спасибо вам всем.

Другие вопросы по тегам