Я пытаюсь выполнить аппаратное кодирование (avc) потока NV12 с помощью Android MediaCodec API.Получение кодеков QualComm для работы через API MediaCodec
При использовании OMX.qcom.video.encoder.avc, разрешение 1280x720 и 640x480 прекрасно работает, в то время как другие (т.е. 640x360, 320x240, 800x480) производит вывод, где компонент цветности кажется сдвинутым (см snapshot).
Я проверил два раза правильное входное изображение, сохранив его в файле jpeg. Эта проблема возникает только на устройствах QualComm (например, Samsung Galaxy S4).
У кого-нибудь это работает нормально? Необходимы ли дополнительные настройки/quirks?
Android 4.3 добавил некоторые полезные новые функции, а также добавил тесты CTS, которые передают данные YUV в 'MediaCodec'. Тестирование буфера в буфер и буфера на поверхность в http://bigflake.com/mediacodec/#EncodeDecodeTest может быть информативным. – fadden
BTW, есть дискуссия в андроидной платформе Google Group, в которой упоминаются кодеры QualComm: https://groups.google.com/d/msg/android-platform/awaNwgb6EbY/a-YiIOwaL0QJ Один из комментаторов заявляет, что цветной плоскость должен быть выровнен на границе 2048 байт, но это работает только для меня. Некоторые разрешения по-прежнему неэффективны, например, 176x144. –