Как экспортировать статистику кодирования видео

Начиная с 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);