メディア品質フレームワーク

メディア品質フレームワークは、画質(PQ)と音質(AQ)の調整のための標準化された API を確立することを目的として、Android TV 向けに Android 16 で導入されます。主な目的は、さまざまな 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 ベンダーが実装し、画像と音声のプロファイル変更を基盤となるハードウェアに伝達するハードウェア抽象化レイヤ。

機能

メディア品質フレームワークは、メディア品質を管理するための柔軟で強力なシステムを提供するために、幅広い機能をサポートしています。

プロフィール管理

  • アプリ管理プロファイル: アプリは、カスタマイズされたエクスペリエンスのために独自のプロファイルを作成、更新、削除できます。
  • デフォルトのプロファイル: システムアプリは、特定のアプリまたは TV 入力(HDMI 1 など)のデフォルトのプロファイルを設定できます。
  • グローバル デフォルト プロファイル: 特定のプロファイルが設定されていない場合に適用されるシステム全体のフォールバック プロファイル。

全体的なワークフロー

次の図は、一般的なメディア品質オペレーションの呼び出しシーケンスを示しています。

ピクチャー プロファイルを作成して適用する

写真プロフィールを作成する
図 2. 画像プロファイルを作成するためのシーケンス図。
  1. システムアプリは setPictureProfileAllowList() を呼び出して、メディアアプリにプロファイルを作成する権限を付与します。
  2. メディアアプリは、プロファイルの変更に関する通知を受け取るために PictureProfileCallback を登録します。
  3. メディアアプリは PictureProfile オブジェクトを使用して createPictureProfile() を呼び出します。
  4. MediaQualityService はリクエストを処理し、プロファイルをデータベースに保存して、登録されたコールバック(onPictureProfileAdded() または onError())を使用してアプリに成功または失敗を通知します。

ストリームごとのピクチャー プロファイルを設定する

このワークフローは、再生中にアプリケーションが特定のプロファイルを動画コンテンツに適用する方法を示しています。

ストリーム写真プロファイルを設定する
図 3. ストリームごとの画像プロファイルを設定するためのシーケンス図。
  1. メディアアプリは MediaQualityManager をクエリして、使用可能な画像プロファイルのリストを取得します。
  2. アプリは MediaCodec.setParameters を使用して、選択したプロファイルを選択し、ストリームに設定します。
  3. フレームワークはこの選択を Media Quality(MQ)HAL に伝え、プロファイル ID とそのパラメータを渡します。
  4. 最後に、MQ HAL はこれらのパラメータを Composer HAL に送信します。Composer HAL は、指定された画像プロファイルで動画ストリームをレンダリングします。

グローバル デフォルト プロファイルを設定する

特定のプロファイルが割り当てられていないコンテンツのフォールバックとして機能するグローバル デフォルト プロファイルを設定できるのは、システムアプリのみです。

  1. システムアプリは、フレームワークから利用可能なピクチャー プロファイルのリストを取得します。
  2. アプリは setDefaultPictureProfile(id) を呼び出して、これらのプロファイルのいずれかを新しいグローバル デフォルトとして選択します。
  3. フレームワークは、そのプロファイルのパラメータを Media Quality HAL に送信し、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 は、hardware/interfaces/tv/mediaquality/aidl/ で定義される AIDL ベースのインターフェースです。SoC ベンダーは、デバイスでメディア品質フレームワークを有効にするために、このインターフェースを実装する必要があります。HAL は、Android フレームワークの MediaQualityService と基盤となるハードウェア間の通信ブリッジとして機能し、画像と音声の調整を適用する役割を担います。

HAL は AIDL パーセルを使用して画像と音声のプロファイルを管理します。これには、フレームワークからプロファイルの変更を受け取り、ハードウェア レベルで行われた調整をフレームワークに通知することが含まれます。

モジュール

HAL インターフェースは、いくつかの主要な AIDL ファイルで構成されています。

HAL ファイル 説明
IMediaQuality.aidl リスナーの設定とハードウェア機能の検出に使用される、メディア品質サービスのメイン インターフェース。
IPictureProfileChangedListener.aidl フレームワークが HAL(特に、Composer HAL などのコンポーネント)に画像プロファイルの変更を通知するために使用するリスナー インターフェース。
IPictureProfileAdjustmentListener.aidl HAL がハードウェア レベルで行われた調整をフレームワークに通知するために使用するリスナー インターフェース。たとえば、ユーザーがハードウェア リモコンを使用して設定を直接変更した場合などです。
PictureParameter.aidl 調整可能なコントラストやシャープネスなどの標準的な画像パラメータをすべて定義する AIDL 共用体。
PictureProfile.aidl HAL レイヤの PictureProfile オブジェクトを表す AIDL パーセル可能。プロファイル ID とそれに関連付けられたパラメータを含みます。
ISoundProfileChangedListener.aidl フレームワークがサウンド プロファイルの変更を HAL に通知するために使用するリスナー インターフェース。
ISoundProfileAdjustmentListener.aidl HAL がハードウェア レベルで行われた音の調整をフレームワークに通知するために使用するリスナー インターフェース。