Я разрабатываю аппаратный ускоритель видеоего Android для декодирования потока потока H264 в реальном времени. После небольшого исследования мне кажется, что мне нужно, чтобы мои руки были грязными, чтобы сделать это. Я нашел несколько ключевых слов, таких как OMXCodec
, ОС Android stagefright
и ffmpeg's stagefright
, MediaCodec
API, GStreamer
. Также я узнал об этом - нет никакой возможности для аппаратной агностической реализации поддерживать все оборудование вендора. На этом этапе все это слишком запутывает меня, так как я не нашел прямых ресурсов, чтобы идти вперед по любому из них. Мои требования -Аппаратный ускоритель видеоего Android для потока H264
- Android Hardware Accelerated Video Decoder
- Поддержка по крайней мере Snapdragon компании Qualcomm, Exynos и Tegra от Samsung
- Реализация должна быть в родном C/C++ слой (не Java слой)
- Поддержка от Android 4.1.x Jellybean хватит
- Не нужно реализовывать последующие этапы, такие как рендеринг, поскольку они уже работают. Просто нужно декодировать входной буфер и создать декодированный выходной буфер для перехода к существующему конвейеру.
Я попытался получить некоторые подсказки от кода исполняемого файла командной строки сценария AwesomePlayer.cpp, SimplePlayer.cpp и ffmpeg stagefright. Но для меня нет смысла выбирать и продолжать любой из этих вещей.
Как я могу подойти? Есть ли полезные ресурсы, чтобы получить ясную интуицию?
Заранее благодарен!
Спасибо за ваше предложение. Да, мне также советуют избегать ffmpeg для решения проблемы с лицензией. Кроме того, я предложил интерфейс JNI-интерфейса API MediaCodec API, но было бы лучше, если бы я мог сделать это на чистом уровне C/C++. Один вопрос, нужно ли вам делать дополнительные материалы для поддержки оборудования другого поставщика? Или ваша реализация была аппаратной независимой? –
Теоретически API MediaCodec является аппаратным агностиком, и я действительно наблюдал это до сих пор - он работал на каждом устройстве, которое я пробовал до сих пор. –
FYI Я выполнял кодирование и декодирование и использовал функции MediaCodec, которые были введены в уровень API 18. Поскольку вам нужно только декодировать, то, вероятно, можно вернуться к уровню API 16. –