Начиная с Android 13, клиенты приложений могут запрашивать у видеокодера экспорт статистики кодирования для каждого закодированного видеокадра. Используя статистику, полученную от видеокодера, приложения могут оптимизировать задачи кодирования видео, такие как многопроходное кодирование и предварительная обработка кадров перед кодированием.
Для экспорта статистики кодирования видео поставщики SoC должны изменить драйвер видеокодера, как описано в разделе Обновления драйвера видеокодера .
Данные статистики кодирования видео
В Android 13 видеокодер экспортирует статистические данные, как показано в следующей таблице.
| Имя кодировщика статистики | Описание |
|---|---|
| Средний QP блока на кадр | Среднее значение всех блоков QP в видеокадре, закодированных в битовый поток |
| Тип изображения | Тип I или P или B |
Разработчики могут получить статистическую информацию для каждого кадра, используя класс разработчика MediaFormat .
Обновления драйвера видеокодера
Для поддержки экспорта статистики кодирования видео производителям SoC необходимо изменить драйвер видеокодера. В базу кодеков 2.0 в Android 13 добавлены следующие ключи:
KEY_VIDEO_QP_AVERAGEописывает средний QP блока для каждого кадра.При реализации ключа
KEY_VIDEO_QP_AVERAGEприменяются следующие правила:Кодер SoC должен округлить среднее значение QP блока до ближайшего целого числа перед передачей в кодек 2.0.
Среднее значение вычисляется только по плоскости яркости.
Кодер SoC должен возвращать
INT_MAXесли все блоки в текущем кадре находятся в режиме пропуска. Это состояние возникает, когда ни один коэффициент не кодируется, и в кадре не кодируется значимая информация QP.
KEY_PICTURE_TYPEописывает тип изображения кодированного кадра какPICTURE_TYPE_I,PICTURE_TYPE_P,PICTURE_TYPE_BилиPICTURE_TYPE_UNKNOWN.KEY_VIDEO_ENCODING_STATISTICS_LEVELописывает уровень статистической информации кодирования, выдаваемой видеокодером, следующим образом:Когда кодер не генерирует информацию о статистике кодирования, этот ключ устанавливается в значение
VIDEO_ENCODING_STATISTICS_LEVEL_NONE.Когда кодер генерирует
KEY_VIDEO_QP_AVERAGEиKEY_PICTURE_TYPEдля каждого кадра, этот ключ устанавливается в значениеVIDEO_ENCODING_STATISTICS_LEVEL_1.
См. VideoEncodingStatisticsTest для эталонной реализации.
Проверка
Запустите тест VideoEncodingStatisticsTest CTS, чтобы убедиться в корректности работы части статистики кодирования видео, касающейся среднего QP: CTS выполняет два кодирования одного и того же входного видео: одно с более высоким битрейтом, а другое — с более низким. Затем CTS сравнивает два экспортированных средних значения QP из двух кодирований. Если среднее значение QP при кодировании с более низким битрейтом выше среднего значения QP при кодировании с более высоким битрейтом, CTS проходит тест.
Чтобы подтвердить отключение функции экспорта статистики кодирования видео, если она включена, используйте ключ VIDEO_ENCODING_STATISTICS_LEVEL_NONE следующим образом:
format.setInteger(MediaFormat.KEY_VIDEO_ENCODING_STATISTICS_LEVEL, MediaFormat.VIDEO_ENCODING_STATISTICS_LEVEL_NONE);