Eksportowanie statystyk kodowania filmów

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 kodowania wideo, takie jak kodowanie wieloprzebiegowe i wstępna obróbka ramek 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
Średni 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 SoC muszą zmienić sterownik kodera wideo. W wersji bazowej Codec 2.0 w Androidzie 13 dodano te klucze:

  • KEY_VIDEO_QP_AVERAGEopisuje średni QP bloku na ramkę.

    W przypadku implementacji klucza KEY_VIDEO_QP_AVERAGE obowiązują te reguły:

    • Koder SoC musi zaokrąglić średnią wartość QP bloku do najbliższej liczby całkowitej przed przesłaniem do kodeka 2.0.

    • Średnia wartość jest obliczana tylko na podstawie płaszczyzny luminancji.

    • Jeśli wszystkie bloki w bieżącym klatku są w trybie pominięcia, 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.

  • KEY_PICTURE_TYPE opisuje typ obrazu zakodowanego ramki jako PICTURE_TYPE_I, PICTURE_TYPE_P, PICTURE_TYPE_B lub PICTURE_TYPE_UNKNOWN.

  • KEY_VIDEO_ENCODING_STATISTICS_LEVEL określa poziom informacji statystyk kodowania emitowanych przez koder wideo:

Przykładową implementację znajdziesz w pliku 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. CTS porównuje następnie 2 wyeksportowane średnie wartości QP z 2 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, gdy jest włączona, użyj klawisza 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);