Eksportuj statystyki kodowania wideo

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 lumy.

    • 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 jako PICTURE_TYPE_I , PICTURE_TYPE_P , PICTURE_TYPE_B lub PICTURE_TYPE_UNKNOWN .

  • KEY_VIDEO_ENCODING_STATISTICS_LEVEL opisuje poziom kodowania informacji statystycznych emitowanych z kodera wideo w następujący sposób:

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 wyższą 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);