Android 13'ten itibaren uygulama müşterileri, video kodlayıcıdan kodlanmış her video karesi için kodlama istatistiklerini dışa aktarmasını isteyebilir. Uygulamalar, video kodlayıcıdan elde edilen istatistiklerle, çok geçişli kodlama ve kare ön işlemesi 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ündeki 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 | Video karesindeki ve bit akışına kodlanan 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 kareyle ilgili istatistik bilgilerini alabilir.
Video kodlayıcı sürücüsünde yapılan güncellemeler
SoC tedarikçi firmalarının, video kodlama istatistiklerinin dışa aktarılmasını desteklemek için video kodlayıcı sürücüsünü değiştirmesi gerekir. Android 13'te Codec 2.0 tabanına aşağıdaki anahtarlar eklenir:
KEY_VIDEO_QP_AVERAGE
, kare başına ortalama blok QP'yi tanımlar.KEY_VIDEO_QP_AVERAGE
anahtarının uygulanması için aşağıdaki kurallar geçerlidir:SoC kodlayıcı, Codec 2.0'a yayınlamadan önce blok QP'lerinin ortalamasını en yakın tam sayıya yuvarlamalıdır.
Ortalama değer yalnızca bir luma düzleminden hesaplanır.
Geçerli çerçevedeki tüm bloklar atlanan moddaysa SoC kodlayıcı
INT_MAX
değerini döndürmelidir. Bu durum, hiçbir katsayı kodlanmadığında ve çerçeve içine önemli QP bilgisi kodlanmadığında ortaya çıkar.
KEY_PICTURE_TYPE
, kodlanmış karenin resim türünüPICTURE_TYPE_I
,PICTURE_TYPE_P
,PICTURE_TYPE_B
veyaPICTURE_TYPE_UNKNOWN
olarak tanımlar.KEY_VIDEO_ENCODING_STATISTICS_LEVEL
, video kodlayıcıdan yayınlanan kodlama istatistikleri bilgilerinin düzeyini aşağıdaki gibi açıklar:Kodlayıcı, kodlama istatistikleri hakkında hiçbir bilgi oluşturmadığında bu anahtar
VIDEO_ENCODING_STATISTICS_LEVEL_NONE
olarak ayarlanır.Kodlayıcı her kare için
KEY_VIDEO_QP_AVERAGE
veKEY_PICTURE_TYPE
oluşturduğunda bu anahtarVIDEO_ENCODING_STATISTICS_LEVEL_1
olarak ayarlanır.
Referans uygulaması için bkz. VideoEncodingStatisticsTest
.
Doğrulama
Video kodlama istatistiklerinin ortalama QP bölümünün doğru şekilde çalıştığını doğrulamak için VideoEncodingStatisticsTest
CTS testini çalıştırın: CTS, aynı giriş videosunun biri daha yüksek bit hızında, diğeri daha düşük bit hızında iki kodlamasını çalıştırır. CTS daha sonra iki kodlamadan dışa aktarılan iki ortalama QP değerini karşılaştırır. Düşük bit hızına sahip kodlamadaki ortalama QP, daha yüksek bit hızına sahip kodlamadaki ortalama QP'den yüksekse CTS'yi geçmelidir.
Etkinleştirildiğinde video kodlama istatistiklerini dışa aktarma özelliğinin devre dışı bırakıldığı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);