Android 13'ten itibaren uygulama istemcileri, her kodlanmış video karesi için kodlama istatistiklerini dışa aktarmak üzere video kodlayıcıdan istekte bulunabilir. Video kodlayıcıdan elde edilen istatistikler sayesinde uygulamalar, çok geçişli kodlama ve kodlamadan önce kare ön işleme gibi video kodlama görevlerini optimize edebilir.
Video kodlama istatistiklerini dışa aktarmak için SoC tedarikçilerinin, Video kodlayıcı sürücüsünde yapılan güncellemeler bölümünde açıklandığı gibi video kodlayıcı sürücüsünü değiştirmesi gerekir.
Video kodlama istatistikleri verileri
Android 13 ile video kodlayıcı, istatistik verilerini aşağıdaki tabloda gösterildiği gibi dışa aktarır.
| Kodlayıcı istatistiklerinin adı | Açıklama |
|---|---|
| Kare başına ortalama blok QP | Bit akışına kodlanan video karesindeki tüm blok QP'lerinin ortalaması |
| Resim türü | I, P veya B yazın |
Geliştiriciler, MediaFormat geliştirici sınıfını kullanarak her bir kare için istatistik bilgilerini alabilir.
Video kodlayıcı sürücüsünde yapılan güncellemeler
Video kodlama istatistiklerinin dışa aktarılmasını desteklemek için SoC satıcılarının video kodlayıcı sürücüsünü değiştirmesi gerekir. Android 13'teki Codec 2.0 tabanına aşağıdaki anahtarlar eklenir:
KEY_VIDEO_QP_AVERAGE, kare başına ortalama blok QP'sini açıklar.KEY_VIDEO_QP_AVERAGEanahtarının uygulanması için aşağıdaki kurallar geçerlidir:SoC kodlayıcı, Codec 2.0'a göndermeden önce blok QP'lerinin ortalamasını en yakın tam sayıya yuvarlamalıdır.
Ortalama değer yalnızca bir parlaklık düzleminden hesaplanır.
SoC kodlayıcı, geçerli karedeki tüm bloklar atlanan moddaysa
INT_MAXdeğerini döndürmelidir. Bu koşul, katsayılar kodlanmadığında ve karede önemli QP bilgileri kodlanmadığında ortaya çıkar.
KEY_PICTURE_TYPEkodlanmış çerçevenin resim türünüPICTURE_TYPE_I,PICTURE_TYPE_P,PICTURE_TYPE_B, veyaPICTURE_TYPE_UNKNOWNolarak tanımlar.KEY_VIDEO_ENCODING_STATISTICS_LEVEL, video kodlayıcıdan yayılan kodlama istatistikleri bilgilerinin düzeyini aşağıdaki şekilde açıklar:Kodlayıcı, kodlama istatistikleri hakkında bilgi oluşturmadığında bu anahtar
VIDEO_ENCODING_STATISTICS_LEVEL_NONEolarak ayarlanır.Kodlayıcı her kare için
KEY_VIDEO_QP_AVERAGEveKEY_PICTURE_TYPEoluşturduğunda bu anahtarVIDEO_ENCODING_STATISTICS_LEVEL_1olarak ayarlanır.
Referans uygulama için VideoEncodingStatisticsTest bölümüne bakın.
Doğrulama
Video kodlama istatistiklerinin ortalama QP bölümünün doğru çalıştığını doğrulamak için VideoEncodingStatisticsTest CTS testini çalıştırın: CTS, aynı giriş videosunun iki kodlamasını çalıştırır. Bunlardan biri daha yüksek bit hızına, diğeri ise daha düşük bit hızına sahiptir. CTS daha sonra iki kodlamadan dışa aktarılan iki ortalama QP değerini karşılaştırır. Daha düşük bit hızlı kodlamadan elde edilen ortalama QP, daha yüksek bit hızlı kodlamadan elde edilen ortalama QP'den yüksekse CTS testi başarılı olur.
Etkinleştirildiğinde video kodlama istatistiklerini dışa aktarma özelliğinin devre dışı bırakılmasını doğrulamak için VIDEO_ENCODING_STATISTICS_LEVEL_NONE anahtarını aşağıdaki gibi kullanın:
format.setInteger(MediaFormat.KEY_VIDEO_ENCODING_STATISTICS_LEVEL, MediaFormat.VIDEO_ENCODING_STATISTICS_LEVEL_NONE);