Начиная с Android 13, приложения могут запрашивать у видеокодера экспорт статистики кодирования для каждого закодированного видеокадра. Используя полученную от видеокодера статистику, приложения могут оптимизировать задачи кодирования видео, такие как многопроходное кодирование и предварительная обработка кадров перед кодированием.
Для экспорта статистики кодирования видео производителям SoC необходимо изменить драйвер видеокодера, как описано в разделе «Обновления драйвера видеокодера» .
статистические данные по кодированию видео
В Android 13 видеокодер экспортирует статистические данные, как показано в следующей таблице.
| Название статистических данных кодировщика | Описание |
|---|---|
| Среднее количество QP в блоке на кадр | Среднее значение всех блоковых QP в видеокадре, закодированных в битовый поток. |
| Тип изображения | Тип I или P или B |
Разработчики могут получать статистическую информацию для каждого кадра, используя класс разработчика MediaFormat .
Обновления драйвера видеокодера
Для поддержки экспорта статистики кодирования видео производителям SoC необходимо изменить драйвер видеокодера. В Android 13 в базовый пакет Codec 2.0 добавлены следующие ключи:
KEY_VIDEO_QP_AVERAGEописывает среднее значение QP для каждого кадра.К реализации ключа
KEY_VIDEO_QP_AVERAGEприменяются следующие правила:Перед передачей данных в кодек 2.0 кодер SoC должен округлить среднее значение QP блока до ближайшего целого числа.
Среднее значение вычисляется только в плоскости яркости.
Кодировщик 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);