Начиная с 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действуют следующие правила:Перед передачей в Codec 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 при кодировании с более низким битрейтом выше, чем при кодировании с более высоким битрейтом, тест CTS считается пройденным.
Чтобы проверить, отключена ли функция экспорта статистики кодирования видео, используйте ключ VIDEO_ENCODING_STATISTICS_LEVEL_NONE следующим образом:
format.setInteger(MediaFormat.KEY_VIDEO_ENCODING_STATISTICS_LEVEL, MediaFormat.VIDEO_ENCODING_STATISTICS_LEVEL_NONE);