媒體品質架構

Android 16 推出 Android TV 專用的媒體品質架構,目的是為影像品質 (PQ) 和音訊品質 (AQ) 調整作業建立標準化 API。主要目標是為不同 Android TV 裝置的調整作業提供統一方法。這個標準化架構提供一致的 Android API 集,可簡化應用程式開發人員、原始設備製造商 (OEM) 和單晶片系統 (SoC) 供應商的開發作業。對 SoC 供應商而言,這項功能可讓 Android 架構處理 PQ 和 AQ 設定,減少與不同應用程式開發人員合作的負擔。

最終,這項功能有助於減少 Google 和 Android 平台的分散情形、提升品質和擴充性、提供新功能,並為統一的 AQ/PQ UI 和更優質的使用者體驗奠定基礎。

媒體品質架構支援各種用途,可提升電視觀看體驗。請注意,設定檔和設定可依套件名稱 (應用程式) 和輸入 ID 管理。此外,系統應用程式或許可清單中的其他應用程式也能建立設定檔。只有商家檔案擁有者可以更新或移除商家檔案。具體來說,這個架構會管理圖片和聲音設定檔。圖片參數的例子包括亮度、對比度、銳利度。音訊參數的例子包括低音和高音。這些設定檔可套用至各種情境,包括設定全域預設設定檔、透過 MediaCodec 串流設定檔、為特定媒體應用程式設定應用程式預設設定檔,以及為特定輸入端 (例如 HDMI) 設定電視輸入圖片設定檔。架構也支援狀態變更,可為 HDR 等狀態提供不同的參數集、管理持續處理的有效圖片設定檔,以及處理環境背光功能。

Android 團隊正與生態系統合作夥伴攜手,支援媒體品質架構。

元件

媒體品質架構由多個重要元件組成,這些元件會在應用程式、架構和硬體層級相互搭配運作。

PQ AQ 標準化圖

圖 1. 媒體品質架構元件之間的互動

  • 媒體品質管理工具 (SDK API):面向應用程式的 SDK API,可供應用程式管理圖片和音訊設定檔。
  • 媒體品質服務:包含核心商業邏輯的系統服務,可管理設定檔、權限,以及與 HAL 的通訊。
  • 媒體品質資料庫:儲存所有圖片和音效設定檔的 SQLite 資料庫。
  • 媒體品質合約:定義應用程式與架構之間通訊所用的標準化參數和資料結構。
  • 媒體品質 HAL:SoC 供應商實作的硬體抽象層,可將圖片和聲音設定檔變更傳達至基礎硬體。

功能

媒體品質架構支援多項功能,可提供彈性且強大的系統,方便您管理媒體品質。

商家檔案管理

  • 應用程式管理的設定檔:應用程式可以建立、更新及刪除自己的設定檔,提供個人化體驗。
  • 預設設定檔:系統應用程式可以為特定應用程式或電視輸入設定預設設定檔 (例如 HDMI 1)。
  • 全域預設設定檔:當未設定特定設定檔時,系統會套用這個全域備用設定檔。

整體工作流程

下圖說明常見媒體品質作業的呼叫順序。

建立及套用圖片設定檔

建立圖片個人資料

圖 2. 建立圖片設定檔的序列圖

  1. 系統應用程式會呼叫 setPictureProfileAllowList(),授予媒體應用程式建立設定檔的權限。
  2. 媒體應用程式會註冊 PictureProfileCallback,接收有關設定檔變更的通知。
  3. 媒體應用程式會使用 PictureProfile 物件呼叫 createPictureProfile()
  4. MediaQualityService 會處理要求、將設定檔儲存至資料庫,並透過已註冊的回呼 (onPictureProfileAdded()onError()) 通知應用程式作業成功或失敗。

設定每個串流的圖片設定檔

這個工作流程示範應用程式如何在播放期間,將特定設定檔套用至影片內容。

設定串流圖片設定檔

圖 3. 設定每個串流的圖片設定檔的序列圖

  1. 媒體應用程式會查詢 MediaQualityManager,取得可用的圖片設定檔清單。
  2. 接著,應用程式會使用 MediaCodec.setParameters 選取並設定串流的所需設定檔。
  3. 架構會將這項選擇傳達給媒體品質 (MQ) HAL,並傳遞設定檔 ID 和其參數。
  4. 最後,MQ HAL 會將這些參數傳送至 Composer HAL,後者會使用指定的圖片設定檔算繪影片串流。

設定全域預設設定檔

只有系統應用程式可以設定全域預設設定檔,做為未指派特定設定檔的任何內容的備用設定檔。

  1. 系統應用程式會從架構擷取可用的圖片設定檔清單。
  2. 接著,應用程式會呼叫 setDefaultPictureProfile(id),從這些設定檔中選取一個做為新的全域預設設定檔。
  3. 架構會將該設定檔的參數傳送至 Media Quality HAL,然後套用變更。

Media Quality SDK API

應用程式可透過 Media Quality SDK API 與架構互動,主要進入點是 android.media.quality 套件。

android.media.quality

這個套件包含管理媒體品質的主要類別。

類別 說明
MediaQualityManager 與 MQF 互動的中央類別。
PictureProfile 資料類別,代表特定模式的完整圖片參數集。
SoundProfile 音效參數的資料類別。
MediaQualityContract 這個類別包含所有預先定義參數鍵的常數。

MediaQualityManager

主要方法包括:

方法 說明
createPictureProfile(PictureProfile profile) 建立新的圖片設定檔。需要特殊權限或將應用程式加入許可清單。
updatePictureProfile(PictureProfile profile) 更新現有的圖片設定檔。只能由設定檔建立者呼叫。
removePictureProfile(String profileId) 刪除設定檔。只能由設定檔建立者呼叫。
getAvailablePictureProfiles() 傳回所有可用的圖片設定檔清單。
setDefaultPictureProfile(String profileId) 設定全域預設圖片設定檔。需要 MANAGE_GLOBAL_PICTURE_QUALITY_SERVICE 權限。
registerPictureProfileCallback(PictureProfileCallback cb) 註冊回呼,監聽商家檔案變更。

PictureProfile 物件

PictureProfile 物件會封裝特定圖片模式的所有資訊。

public final class PictureProfile {
  private String id;
  private int type; // System or Application
  private String name; // e.g., "Movie", "Game"
  private String inputId; // e.g., "HDMI1"
  private String packageName; // e.g., "com.google.android.youtube"
  private PersistableBundle parameters; // Bundle containing all PQ parameters
}

媒體品質 HAL

媒體品質 HAL 是 AIDL 型介面,定義於 hardware/interfaces/tv/mediaquality/aidl/。SoC 供應商必須實作這個介面,才能在裝置上啟用媒體品質架構。HAL 是 Android 架構中 MediaQualityService 與基礎硬體之間的通訊橋樑,負責套用圖片和聲音調整設定。

HAL 會使用 AIDL 可封送物件管理圖片和聲音設定檔。這包括從架構接收設定檔變更,以及通知架構硬體層級所做的任何調整。

模組

HAL 介面由幾個重要的 AIDL 檔案組成:

HAL 檔案 說明
IMediaQuality.aidl 媒體品質服務的主要介面,用於設定監聽器及探索硬體功能。
IPictureProfileChangedListener.aidl 架構用來通知 HAL (具體來說,是合成器 HAL 等元件) 圖片設定檔變更的接聽器介面。
IPictureProfileAdjustmentListener.aidl HAL 用來通知架構硬體層級調整的監聽器介面,例如使用者直接透過硬體遙控器變更設定時。
PictureParameter.aidl AIDL 聯集,定義所有可調整的標準圖片參數,例如對比度和銳利度。
PictureProfile.aidl AIDL 可封送物件,代表 HAL 層的 PictureProfile 物件,內含設定檔 ID 和相關聯的參數。
ISoundProfileChangedListener.aidl 框架用來通知 HAL 音效設定檔變更的接聽介面。
ISoundProfileAdjustmentListener.aidl HAL 用於通知架構硬體層級音效調整的監聽器介面。