自 Android 13 起,應用程式用戶端可以要求影片編碼器匯出每個已編碼影片影格中的編碼統計資料。取代為 應用程式可以調整從影片編碼器取得的統計資料 例如多道編碼和影格預先處理 編碼。
如要匯出影片編碼統計資料,SoC 供應商必須變更影片編碼器驅動程式,詳情請參閱「影片編碼器驅動程式的更新」。
影片編碼統計資料
在 Android 13 中,影片編碼器會匯出統計資料,如下表所示。
編碼器統計資料的名稱 | 說明 |
---|---|
每個影格的平均區塊 QP | 編碼至位元串流的視訊框架中所有區塊 QP 的平均值 |
相片類型 | 請輸入 I、P 或 B |
開發人員可以使用 MediaFormat
開發人員類別,擷取每個影格統計資料的資訊。
影片編碼器驅動程式更新
如要支援匯出視訊編碼統計資料,SoC 供應商必須變更視訊編碼器驅動程式。在 Android 13 的 Codec 2.0 基礎中,新增了下列鍵:
KEY_VIDEO_QP_AVERAGE
會說明每個影格平均的區塊 QP。以下規則適用於
KEY_VIDEO_QP_AVERAGE
鍵的實作方式:SoC 編碼器必須在將區塊 QP 平均值傳送至編解碼器 2.0 之前,將其四捨五入至最接近的整數。
平均值只會從亮度平面計算。
如果目前影格中的所有區塊都處於略過模式,SoC 編碼器必須傳回
INT_MAX
。當係數沒有 經過編碼,但沒有重要的 QP 資訊都會經過編碼。
KEY_PICTURE_TYPE
會將編碼影格描述為PICTURE_TYPE_I
、PICTURE_TYPE_P
、PICTURE_TYPE_B
或PICTURE_TYPE_UNKNOWN
等相片類型。KEY_VIDEO_ENCODING_STATISTICS_LEVEL
是指 從影片編碼器傳出的編碼統計資料資訊如下:當編碼器未產生編碼統計資料的相關資訊時, 這組金鑰已設為「
VIDEO_ENCODING_STATISTICS_LEVEL_NONE
」。當編碼器為每個影格產生
KEY_VIDEO_QP_AVERAGE
和KEY_PICTURE_TYPE
時,這個鍵會設為VIDEO_ENCODING_STATISTICS_LEVEL_1
。
查看「VideoEncodingStatisticsTest
」
。
驗證
執行 VideoEncodingStatisticsTest
透過 CTS 測試,驗證影片編碼統計資料的平均 QP 部分
正確運作:CTS 會針對相同的輸入影片執行兩種編碼,一種使用
另一個採用較低的位元率接著,CTS 會比較兩種編碼方式中兩個匯出的平均 QP 值。如果解碼器產生的平均 QP
較低的位元率,高於
兩者之間的一致性較高
如要確認關閉匯出影片編碼統計資料的功能,
已啟用,請使用 VIDEO_ENCODING_STATISTICS_LEVEL_NONE
鍵,如下所示:
format.setInteger(MediaFormat.KEY_VIDEO_ENCODING_STATISTICS_LEVEL, MediaFormat.VIDEO_ENCODING_STATISTICS_LEVEL_NONE);