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

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

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