Eksportowanie statystyk kodowania filmów

Od Androida 13 klienci aplikacji mogą prosić koder wideo o eksportowanie statystyk kodowania dla każdej zakodowanej klatki wideo. Dzięki statystykom uzyskanym z enkodera wideo aplikacje mogą optymalizować zadania kodowania wideo, takie jak kodowanie wieloprzebiegowe i wstępne przetwarzanie klatek przed kodowaniem.

Aby eksportować statystyki kodowania wideo, dostawcy układów SoC muszą zmienić sterownik kodera wideo zgodnie z opisem w sekcji Aktualizacje sterownika kodera wideo.

Dane statystyczne dotyczące kodowania filmów

W Androidzie 13 koder wideo eksportuje dane statystyczne w sposób pokazany w tej tabeli.

Nazwa statystyk kodera Opis
Średnia liczba bloków QP na klatkę Średnia wszystkich wartości QP bloków w klatce wideo, które są zakodowane w strumieniu bitów.
Typ obrazu Wpisz I, P lub B

Deweloperzy mogą pobierać informacje o statystykach każdej klatki za pomocą klasy deweloperskiej MediaFormat.

Aktualizacje sterownika kodera wideo

Aby umożliwić eksportowanie statystyk kodowania wideo, dostawcy układów SoC muszą zmienić sterownik kodera wideo. W Androidzie 13 w bazie Codec 2.0 dodano te klucze:

  • KEY_VIDEO_QP_AVERAGE opisuje średnią wartość QP bloku na klatkę.

    W przypadku implementacji klucza KEY_VIDEO_QP_AVERAGE obowiązują te reguły:

    • Koder SoC musi zaokrąglić średnią wartości QP bloku do najbliższej liczby całkowitej przed przekazaniem jej do Codec 2.0.

    • Średnia wartość jest obliczana tylko na podstawie płaszczyzny luminancji.

    • Koder SoC musi zwrócić INT_MAX, jeśli wszystkie bloki w bieżącej klatce są w trybie pominięcia. Ten warunek występuje, gdy nie są kodowane żadne współczynniki i w klatce nie są kodowane żadne istotne informacje o QP.

  • KEY_PICTURE_TYPE określa typ obrazu zakodowanej ramki jako PICTURE_TYPE_I, PICTURE_TYPE_P, PICTURE_TYPE_B lub PICTURE_TYPE_UNKNOWN.

  • KEY_VIDEO_ENCODING_STATISTICS_LEVEL określa poziom informacji o statystykach kodowania emitowanych przez koder wideo w ten sposób:

Wzorcową implementację znajdziesz w sekcji VideoEncodingStatisticsTest.

Weryfikacja

Uruchom test VideoEncodingStatisticsTest CTS, aby sprawdzić, czy średnia część QP statystyk kodowania wideo działa prawidłowo: CTS uruchamia 2 kodowania tego samego filmu wejściowego – jedno z wyższą szybkością transmisji bitów, a drugie z niższą. Następnie CTS porównuje 2 wyeksportowane średnie wartości QP z 2 kodowań. Jeśli średnia wartość QP z kodowania z niższą szybkością transmisji jest wyższa niż średnia wartość QP z kodowania z wyższą szybkością transmisji, test CTS jest zaliczony.

Aby sprawdzić, czy funkcja eksportowania statystyk kodowania wideo jest wyłączona, gdy jest włączona, użyj klucza VIDEO_ENCODING_STATISTICS_LEVEL_NONE w ten sposób:

format.setInteger(MediaFormat.KEY_VIDEO_ENCODING_STATISTICS_LEVEL, MediaFormat.VIDEO_ENCODING_STATISTICS_LEVEL_NONE);