Od Androida 13 klienci aplikacji mogą poprosić koder wideo o eksportowanie statystyk kodowania dla każdego zakodowanego klatki wideo. Na statystyki uzyskane za pomocą kodera wideo – aplikacje mogą optymalizować filmy, zadania związane z kodowaniem, takie jak kodowanie wieloprzebiegowe i wstępne przetwarzanie ramek przed kodowanie.
Aby eksportować statystyki kodowania wideo, dostawcy SOC muszą zmienić koder wideo sterownika zgodnie z opisem w sekcji Aktualizacje sterownika kodera wideo.
Dane statystyczne dotyczące kodowania filmów
W Androidzie 13 koder wideo eksportuje statystyki jak w poniższej tabeli.
Nazwa statystyk kodera | Opis |
---|---|
Średnia liczba QP bloku na klatkę | Średnia ze wszystkich blokowych pytań QP w klatce wideo zakodowanych w strumieniu bitowym |
Typ obrazu | Typ I lub P lub B |
Deweloperzy mogą pobierać informacje statystyczne o każdym ujęciu za pomocą klasy dla deweloperów MediaFormat
.
Aktualizacje sterownika kodera wideo
Aby obsługiwać eksportowanie statystyk kodowania wideo, dostawcy układów SoC muszą zmienić sterownika kodera wideo. Poniższe klucze zostały dodane w Codec 2.0 w Android 13:
KEY_VIDEO_QP_AVERAGE
określa średni QP bloku na ramkę.Poniższe reguły dotyczą implementacji
KEY_VIDEO_QP_AVERAGE
klucz:Enkoder SOC musi zaokrąglić średnią wartość QP bloku do najbliższej przed przesłaniem na kodek 2.0.
Średnia wartość jest obliczana tylko na podstawie samolotu luma.
Enkoder SOC musi zwracać wartość
INT_MAX
, jeśli wszystkie bloki w bieżącym są w trybie pomijania. Ten stan występuje, gdy nie są kodowane żadne współczynniki i nie są kodowane żadne istotne informacje QP w ramce.
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 następujące statystyki kodowania:Jeśli koder nie generuje żadnych 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żdego kadru, ten klucz jest ustawiany naVIDEO_ENCODING_STATISTICS_LEVEL_1
.
Zobacz VideoEncodingStatisticsTest
jako przykład implementacji.
Weryfikacja
Uruchom test CTS VideoEncodingStatisticsTest
, aby sprawdzić, czy średnia wartość QP w statystykach kodowania wideo działa prawidłowo. CTS wykonuje kodowanie tego samego filmu wejściowego dwukrotnie: raz z wyższym bitrate, a drugi raz z niższym bitrate. Zespół CTS porównuje te 2 usługi
wyeksportowano średnie wartości QP z dwóch kodowań. Jeśli średni QP z kodowania o niższym bitrate jest wyższy niż średni QP z kodowania o wyższym bitrate, CTS przechodzi test.
Aby sprawdzić, czy funkcja eksportowania statystyk kodowania wideo jest wyłączona,
jest włączony, 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);