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_AVERAGEopisuje średnią wartość QP bloku na klatkę.W przypadku implementacji klucza
KEY_VIDEO_QP_AVERAGEobowią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_TYPEopisuje typ obrazu zakodowanej klatki jakoPICTURE_TYPE_I,PICTURE_TYPE_P,PICTURE_TYPE_B, lubPICTURE_TYPE_UNKNOWN.KEY_VIDEO_ENCODING_STATISTICS_LEVELopisuje poziom informacji o statystykach kodowania emitowanych przez koder wideo w ten sposób:Gdy koder nie generuje informacji o statystykach kodowania, ten klucz jest ustawiony na
VIDEO_ENCODING_STATISTICS_LEVEL_NONE.Gdy koder generuje
KEY_VIDEO_QP_AVERAGEiKEY_PICTURE_TYPEdla każdej klatki, ten klucz jest ustawiony naVIDEO_ENCODING_STATISTICS_LEVEL_1.
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);