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 jakoPICTURE_TYPE_I
,PICTURE_TYPE_P
,PICTURE_TYPE_B
lubPICTURE_TYPE_UNKNOWN
.KEY_VIDEO_ENCODING_STATISTICS_LEVEL
określa poziom informacji o statystykach kodowania emitowanych przez koder wideo w ten sposób:Jeśli koder nie generuje informacji o statystykach kodowania, ten klucz ma wartość
VIDEO_ENCODING_STATISTICS_LEVEL_NONE
.Gdy koder generuje
KEY_VIDEO_QP_AVERAGE
iKEY_PICTURE_TYPE
dla każdej klatki, ten klucz jest ustawiony naVIDEO_ENCODING_STATISTICS_LEVEL_1
.
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);