Eksportowanie statystyk kodowania filmów

Od Androida 13 klienci aplikacji mogą żądać od kodera wideo eksportowania statystyk kodowania dla każdej zakodowanej klatki wideo. Dzięki statystykom uzyskanym z kodera 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 statystyk kodowania wideo

W Androidzie 13 koder wideo eksportuje dane statystyczne w sposób pokazany w tabeli poniżej.

Nazwa statystyki kodera Opis
Średnia wartość QP bloku na klatkę Średnia wszystkich wartości QP bloku w klatce wideo, które są kodowane do strumienia bitów.
Typ obrazu Typ I, P lub B.

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

Aktualizacje sterownika kodera wideo

Aby obsługiwać eksportowanie statystyk kodowania wideo, dostawcy układów SoC muszą zmienić sterownik kodera wideo. W Androidzie 13 do podstawy 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:

    • Przed wysłaniem do Codec 2.0 koder SoC musi zaokrąglić średnią wartość QP bloku do najbliższej liczby całkowitej.

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

    • Jeśli wszystkie bloki w bieżącej klatce są w trybie pominiętym, koder SoC musi zwrócić wartość INT_MAX. 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 opisuje typ obrazu zakodowanej klatki jako PICTURE_TYPE_I, PICTURE_TYPE_P, PICTURE_TYPE_B, lub PICTURE_TYPE_UNKNOWN.

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

Implementację referencyjną znajdziesz w VideoEncodingStatisticsTest.

Weryfikacja

Aby sprawdzić, czy średnia wartość QP w statystykach kodowania wideo działa prawidłowo, uruchom test VideoEncodingStatisticsTest CTS: CTS uruchamia 2 kodowania tego samego wejściowego filmu – jedno z wyższą, a drugie z niższą szybkością transmisji bitów. 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 bitów jest wyższa niż średnia wartość QP z kodowania z wyższą szybkością transmisji bitów, test CTS przechodzi.

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);