Экспорт статистики кодирования видео

Начиная с Android 13, клиенты приложений могут запрашивать у видеокодера экспорт статистики кодирования для каждого закодированного видеокадра. Используя статистику, полученную от видеокодера, приложения могут оптимизировать свои задачи кодирования видео, такие как многопроходное кодирование и предварительная обработка кадров перед кодированием.

Для экспорта статистики кодирования видео поставщики SoC должны изменить драйвер видеокодера, как описано в разделе Обновления драйвера видеокодера .

Данные статистики кодирования видео

В Android 13 видеокодер экспортирует статистические данные, как показано в следующей таблице.

Имя статистики кодировщика Описание
Средний QP блока на кадр Среднее значение всех блоков QP в видеокадре, закодированных в битовый поток
Тип изображения Тип I или P или B

Разработчики могут получать статистическую информацию для каждого кадра, используя класс разработчика MediaFormat .

Обновления драйвера видеокодера

Для поддержки экспорта статистики кодирования видео поставщики SoC должны изменить драйвер видеокодера. В базе Codec 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);