Od Androida 13 klienci aplikacji mogą poprosić koder wideo o eksportowanie statystyk kodowania dla każdego zakodowanego klatki wideo. Dzięki statystykom uzyskanym z kodera wideo aplikacje mogą optymalizować zadania związane z kodowaniem 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 instrukcjami podanymi w artykule Aktualizacje sterownika kodera wideo.
Dane statystyk kodowania filmów
W Androidzie 13 koder wideo eksportuje dane statystyczne zgodnie z tabelą poniżej.
Nazwa statystyk kodera | Opis |
---|---|
Średnia liczba QP bloku na klatkę | Średnia wartość wszystkich QP bloków w klatce wideo, które są zakodowane w strumieniu bitów. |
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 umożliwić eksportowanie statystyk kodowania wideo, dostawcy układów SoC muszą zmienić sterownik kodera wideo. W Androidzie 13 w Kodekie 2.0 na Androidzie 13 znajdują się wymienione niżej klucze:
KEY_VIDEO_QP_AVERAGE
określa średni QP bloku na ramkę.Te reguły dotyczą implementacji klucza
KEY_VIDEO_QP_AVERAGE
:Przed przekazaniem kodu do Kodeka 2.0 enkoder SOC musi zaokrąglić średnią wartości QP bloku do najbliższej liczby całkowitej.
Średnia wartość jest obliczana tylko na podstawie samolotu luma.
Jeśli wszystkie bloki w bieżącym klatku są w trybie pomijania, koder SoC musi zwrócić
INT_MAX
. Ten stan występuje, gdy nie są kodowane żadne współczynniki i nie są kodowane żadne istotne informacje QP w ramce.
Funkcja
KEY_PICTURE_TYPE
opisuje 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 statystyk kodowania emitowanych przez koder wideo:Gdy koder nie generuje żadnych informacji o statystykach kodowania, 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
.
Więcej informacji o implementacji referencyjnej znajdziesz na stronie VideoEncodingStatisticsTest
.
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. Następnie CTS porównuje 2 wyeksportowane średnie wartości QP z 2 kodowań. Jeśli średnia QP z kodowania z mniejszą szybkością transmisji bitów jest wyższa niż średnia QP z kodowania z większą szybkością transmisji bitów, moduł CTS.
Aby sprawdzić, czy funkcja eksportowania statystyk kodowania wideo została wyłączona, gdy była 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);