自 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 高於較高位元率的編碼作業產生的平均 QP,則 CTS 會通過。
如要驗證關閉匯出影片編碼統計資料功能 (已啟用),請使用 VIDEO_ENCODING_STATISTICS_LEVEL_NONE
鍵,如下所示:
format.setInteger(MediaFormat.KEY_VIDEO_ENCODING_STATISTICS_LEVEL, MediaFormat.VIDEO_ENCODING_STATISTICS_LEVEL_NONE);