Począwszy od Androida 13, klienci aplikacji mogą zażądać od kodera wideo wyeksportowania statystyk kodowania dla każdej zakodowanej klatki wideo. Dzięki statystykom uzyskanym z kodera wideo aplikacje mogą optymalizować swoje zadania związane z kodowaniem wideo, takie jak kodowanie wieloprzebiegowe i wstępne przetwarzanie klatek przed kodowaniem.
Aby wyeksportować statystyki kodowania wideo, dostawcy SoC muszą zmienić sterownik kodera wideo zgodnie z opisem w Aktualizacje sterownika kodera wideo .
Dane statystyczne dotyczące kodowania wideo
W systemie Android 13 koder wideo eksportuje dane statystyczne, jak pokazano w poniższej tabeli.
Nazwa statystyk kodera | Opis |
---|---|
Średnia QP bloku na klatkę | Średnia wszystkich bloków QP w klatce wideo zakodowanych w strumieniu bitów |
Typ obrazu | Typ I lub P lub B |
Deweloperzy mogą pobierać informacje statystyczne dla każdej klatki, korzystając z klasy deweloperskiej MediaFormat
.
Aktualizacje sterownika kodera wideo
Aby obsługiwać eksport statystyk kodowania wideo, dostawcy SoC muszą zmienić sterownik kodera wideo. W bazie Codec 2.0 w systemie Android 13 dodano następujące klucze:
KEY_VIDEO_QP_AVERAGE
opisuje średnią QP bloku na klatkę.Przy implementacji klucza
KEY_VIDEO_QP_AVERAGE
obowiązują następujące zasady:Koder SoC musi zaokrąglić średnią QP bloków do najbliższej liczby całkowitej przed emisją do Codec 2.0.
Wartość średnią oblicza się wyłącznie z płaszczyzny luma.
Koder SoC musi zwrócić
INT_MAX
, jeśli wszystkie bloki w bieżącej ramce są w trybie pomijanym. Ten stan występuje, gdy w ramce nie są kodowane żadne współczynniki i żadna istotna informacja o QP.
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
opisuje poziom kodowania informacji statystycznych emitowanych z kodera wideo w następujący sposób:Gdy koder nie generuje żadnych informacji o statystykach kodowania, ten klucz jest ustawiony na
VIDEO_ENCODING_STATISTICS_LEVEL_NONE
.Gdy koder generuje
KEY_VIDEO_QP_AVERAGE
iKEY_PICTURE_TYPE
dla każdej klatki, ten klucz jest ustawiany naVIDEO_ENCODING_STATISTICS_LEVEL_1
.
Zobacz VideoEncodingStatisticsTest
, aby zapoznać się z implementacją referencyjną.
Walidacja
Uruchom test VideoEncodingStatisticsTest
CTS, aby sprawdzić, czy średnia część QP statystyk kodowania wideo działa poprawnie: CTS przeprowadza dwa kodowania tego samego wejściowego wideo, jedno z wyższą przepływnością, a drugie z niższą przepływnością. Następnie CTS porównuje dwie wyeksportowane średnie wartości QP z dwóch kodowań. Jeśli średnia QP z kodowania o niższej przepływności jest wyższa niż średnia QP z kodowania z większą przepływnością, CTS przechodzi pomyślnie.
Aby sprawdzić wyłączenie funkcji statystyk eksportowania wideo, gdy jest włączona, użyj klucza VIDEO_ENCODING_STATISTICS_LEVEL_NONE
w następujący sposób:
format.setInteger(MediaFormat.KEY_VIDEO_ENCODING_STATISTICS_LEVEL, MediaFormat.VIDEO_ENCODING_STATISTICS_LEVEL_NONE);