4

Я разрабатываю аппаратный ускоритель видеоего Android для декодирования потока потока H264 в реальном времени. После небольшого исследования мне кажется, что мне нужно, чтобы мои руки были грязными, чтобы сделать это. Я нашел несколько ключевых слов, таких как OMXCodec, ОС Android stagefright и ffmpeg's stagefright, MediaCodec API, GStreamer. Также я узнал об этом - нет никакой возможности для аппаратной агностической реализации поддерживать все оборудование вендора. На этом этапе все это слишком запутывает меня, так как я не нашел прямых ресурсов, чтобы идти вперед по любому из них. Мои требования -Аппаратный ускоритель видеоего Android для потока H264

  1. Android Hardware Accelerated Video Decoder
  2. Поддержка по крайней мере Snapdragon компании Qualcomm, Exynos и Tegra от Samsung
  3. Реализация должна быть в родном C/C++ слой (не Java слой)
  4. Поддержка от Android 4.1.x Jellybean хватит
  5. Не нужно реализовывать последующие этапы, такие как рендеринг, поскольку они уже работают. Просто нужно декодировать входной буфер и создать декодированный выходной буфер для перехода к существующему конвейеру.

Я попытался получить некоторые подсказки от кода исполняемого файла командной строки сценария AwesomePlayer.cpp, SimplePlayer.cpp и ffmpeg stagefright. Но для меня нет смысла выбирать и продолжать любой из этих вещей.

Как я могу подойти? Есть ли полезные ресурсы, чтобы получить ясную интуицию?

Заранее благодарен!

ответ

2

Недавно я использовал такую ​​систему, используя MediaCodec API. К сожалению, этот API не отображается в NDK, поэтому он доступен только с уровня Java.

Лучший ресурс я нашел этот набор руководств:

http://bigflake.com/mediacodec/

Поскольку у вас есть жесткое требование, чтобы реализовать это в НДК, то я думаю, вы должны написать тонкую библиотеку Java, которая делает то взаимодействие с MediaCodec API, а затем вызвать его через JNI со своего уровня C++.

Если вы идете по маршруту FFMPEG, помните о своей лицензии, это довольно ограничительно для распределенного программного обеспечения.

Удачи вам!

+0

Спасибо за ваше предложение. Да, мне также советуют избегать ffmpeg для решения проблемы с лицензией. Кроме того, я предложил интерфейс JNI-интерфейса API MediaCodec API, но было бы лучше, если бы я мог сделать это на чистом уровне C/C++. Один вопрос, нужно ли вам делать дополнительные материалы для поддержки оборудования другого поставщика? Или ваша реализация была аппаратной независимой? –

+0

Теоретически API MediaCodec является аппаратным агностиком, и я действительно наблюдал это до сих пор - он работал на каждом устройстве, которое я пробовал до сих пор. –

+1

FYI Я выполнял кодирование и декодирование и использовал функции MediaCodec, которые были введены в уровень API 18. Поскольку вам нужно только декодировать, то, вероятно, можно вернуться к уровню API 16. –