27 Mart 2025'ten itibaren AOSP'yi derlemek ve AOSP'ye katkıda bulunmak için aosp-main
yerine android-latest-release
kullanmanızı öneririz. Daha fazla bilgi için AOSP'de yapılan değişiklikler başlıklı makaleyi inceleyin.
Video kodlama istatistiklerini dışa aktarma
Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
Android 13'ten itibaren uygulama istemcileri, video kodlayıcıdan her kodlanmış video karesi için kodlama istatistiklerini dışa aktarmasını isteyebilir. Video kodlayıcıdan elde edilen istatistiklerle uygulamalar, kodlamadan önce çok geçişli kodlama ve 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ü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 karenin 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'te Codec 2.0 tabanına aşağıdaki anahtarlar eklendi:
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.
Mevcut karedeki tüm bloklar atlanmış moddaysa SoC kodlayıcı INT_MAX
döndürmelidir. Bu durum, çerçeveye hiçbir katsayı kodlanmadığında ve önemli bir QP bilgisi kodlanmadığında ortaya çıkar.
KEY_PICTURE_TYPE
, kodlanmış karenin resim türünü PICTURE_TYPE_I
, PICTURE_TYPE_P
, PICTURE_TYPE_B
veya PICTURE_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:
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 ş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. Daha düşük bit hızına sahip kodlamadan elde edilen ortalama QP, daha yüksek bit hızına sahip kodlamadan elde edilen ortalama QP'den yüksekse CTS geçer.
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);
Bu sayfadaki içerik ve kod örnekleri, İçerik Lisansı sayfasında açıklanan lisanslara tabidir. Java ve OpenJDK, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2025-07-27 UTC.
[[["Anlaması kolay","easyToUnderstand","thumb-up"],["Sorunumu çözdü","solvedMyProblem","thumb-up"],["Diğer","otherUp","thumb-up"]],[["İhtiyacım olan bilgiler yok","missingTheInformationINeed","thumb-down"],["Çok karmaşık / çok fazla adım var","tooComplicatedTooManySteps","thumb-down"],["Güncel değil","outOfDate","thumb-down"],["Çeviri sorunu","translationIssue","thumb-down"],["Örnek veya kod sorunu","samplesCodeIssue","thumb-down"],["Diğer","otherDown","thumb-down"]],["Son güncelleme tarihi: 2025-07-27 UTC."],[],[],null,["# Export video encoding statistics\n\nStarting with Android 13, app clients can request the\nvideo encoder to export encoding statistics for each encoded video frame. With\nthe statistics obtained from the video encoder, apps can optimize their video\nencoding tasks such as multipass encoding and frame preprocessing prior to\nencoding.\n\nTo export video encoding statistics, SoC vendors must change the video encoder\ndriver as described in [Updates to the video encoder driver](#updates-encoder).\n\nVideo encoding statistics data\n------------------------------\n\nWith Android 13, the video encoder exports statistics\ndata as shown in the following table.\n\n| Name of encoder statistics | Description |\n|----------------------------|-------------------------------------------------------------------------------------|\n| Average block QP per frame | The average of all block QPs in the video frame that are encoded into the bitstream |\n| Picture type | Type I or P or B |\n\nDevelopers can retrieve statistics information for each frame by using the\n[`MediaFormat`](https://developer.android.com/reference/android/media/MediaFormat)\ndeveloper class.\n\nUpdates to the video encoder driver\n-----------------------------------\n\nTo support the export of video encoding statistics, SoC vendors must change the\nvideo encoder driver. The following keys are added in the Codec 2.0 base in\nAndroid 13:\n\n- [`KEY_VIDEO_QP_AVERAGE`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/media/java/android/media/MediaFormat.java;drc=5ad6db77423479d027abb791ad3c02da39513a2c;l=1154) describes the per-frame\n average block QP.\n\n The following rules apply to the implementation of the `KEY_VIDEO_QP_AVERAGE`\n key:\n - The SoC encoder must round the average of the block QPs to the nearest\n integer before emitting to Codec 2.0.\n\n - The average value is computed only from a luma plane.\n\n - The SoC encoder must return `INT_MAX` if all the blocks in the current\n frame are in the skipped mode. This condition occurs when no coefficients are\n encoded and no significant QP info is encoded in the frame.\n\n- [`KEY_PICTURE_TYPE`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/media/java/android/media/MediaFormat.java;drc=5ad6db77423479d027abb791ad3c02da39513a2c;l=1163)\n describes the picture type of the encoded frame as [`PICTURE_TYPE_I`](https://developer.android.com/reference/android/media/MediaFormat#PICTURE_TYPE_I),\n [`PICTURE_TYPE_P`](https://developer.android.com/reference/android/media/MediaFormat#PICTURE_TYPE_P),\n [`PICTURE_TYPE_B`](https://developer.android.com/reference/android/media/MediaFormat#PICTURE_TYPE_B),\n or [`PICTURE_TYPE_UNKNOWN`](https://developer.android.com/reference/android/media/MediaFormat#PICTURE_TYPE_UNKNOWN).\n\n- [`KEY_VIDEO_ENCODING_STATISTICS_LEVEL`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/media/java/android/media/MediaFormat.java;drc=5ad6db77423479d027abb791ad3c02da39513a2c;l=1122) describes the level of\n encoding statistics information emitted from video encoder, as follows:\n\n - When the encoder generates no information about encoding statistics,\n this key is set to [`VIDEO_ENCODING_STATISTICS_LEVEL_NONE`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/media/java/android/media/MediaFormat.java;drc=5ad6db77423479d027abb791ad3c02da39513a2c;l=1129).\n\n - When the encoder generates `KEY_VIDEO_QP_AVERAGE` and `KEY_PICTURE_TYPE`\n for each frame, this key is set to [`VIDEO_ENCODING_STATISTICS_LEVEL_1`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/media/java/android/media/MediaFormat.java;drc=5ad6db77423479d027abb791ad3c02da39513a2c;l=1136).\n\nSee [`VideoEncodingStatisticsTest`](https://cs.android.com/android/platform/superproject/+/android-latest-release:cts/tests/tests/media/codec/src/android/media/codec/cts/VideoEncodingStatisticsTest.java;drc=77bafd18279c8d6dad49fd74dac2e369fdc6ba69;l=56)\nfor a reference implementation.\n\nValidation\n----------\n\nRun the [`VideoEncodingStatisticsTest`](https://cs.android.com/android/platform/superproject/+/android-latest-release:cts/tests/tests/media/codec/src/android/media/codec/cts/VideoEncodingStatisticsTest.java;drc=77bafd18279c8d6dad49fd74dac2e369fdc6ba69;l=56)\nCTS test to validate that the average QP part of the video encoding statistics\nworks correctly: CTS runs two encodings of the same input video, one with a\nhigher bitrate, and another with a lower bitrate. CTS then compares the two\nexported average QP values from the two encodings. If the average QP from the encoding\nwith the lower bitrate is higher than the average QP from the encoding with the\nhigher bitrate, CTS passes.\n\nTo validate turning off the exporting video encoding statistics feature when\nenabled, use the `VIDEO_ENCODING_STATISTICS_LEVEL_NONE` key as follows: \n\n format.setInteger(MediaFormat.KEY_VIDEO_ENCODING_STATISTICS_LEVEL, MediaFormat.VIDEO_ENCODING_STATISTICS_LEVEL_NONE);"]]