メディア品質フレームワークは、画質(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 チームは、エコシステム パートナーと協力してメディア品質フレームワークをサポートしています。
コンポーネント
メディア品質フレームワークは、アプリ、フレームワーク、ハードウェアの各レイヤで連携して動作するいくつかの主要コンポーネントで構成されています。
- メディア品質マネージャー(SDK API): アプリが画像と音声のプロファイルを管理できるようにする、アプリ向けの SDK API。
- メディア品質サービス: コア ビジネス ロジックを含み、プロファイル、権限、HAL との通信を管理するシステム サービス。
- メディア品質データベース: すべての画像と音声のプロファイルを保存する SQLite データベース。
- メディア品質コントラクト: アプリとフレームワーク間の通信に使用される標準化されたパラメータとデータ構造を定義します。
- メディア品質 HAL: SoC ベンダーが実装し、画像と音声のプロファイル変更を基盤となるハードウェアに伝達するハードウェア抽象化レイヤ。
機能
メディア品質フレームワークは、メディア品質を管理するための柔軟で強力なシステムを提供するために、幅広い機能をサポートしています。
プロフィール管理
- アプリ管理プロファイル: アプリは、カスタマイズされたエクスペリエンスのために独自のプロファイルを作成、更新、削除できます。
- デフォルトのプロファイル: システムアプリは、特定のアプリまたは TV 入力(HDMI 1 など)のデフォルトのプロファイルを設定できます。
- グローバル デフォルト プロファイル: 特定のプロファイルが設定されていない場合に適用されるシステム全体のフォールバック プロファイル。
全体的なワークフロー
次の図は、一般的なメディア品質オペレーションの呼び出しシーケンスを示しています。
ピクチャー プロファイルを作成して適用する
- システムアプリは
setPictureProfileAllowList()を呼び出して、メディアアプリにプロファイルを作成する権限を付与します。 - メディアアプリは、プロファイルの変更に関する通知を受け取るために
PictureProfileCallbackを登録します。 - メディアアプリは
PictureProfileオブジェクトを使用してcreatePictureProfile()を呼び出します。 MediaQualityServiceはリクエストを処理し、プロファイルをデータベースに保存して、登録されたコールバック(onPictureProfileAdded()またはonError())を使用してアプリに成功または失敗を通知します。
ストリームごとのピクチャー プロファイルを設定する
このワークフローは、再生中にアプリケーションが特定のプロファイルを動画コンテンツに適用する方法を示しています。
- メディアアプリは
MediaQualityManagerをクエリして、使用可能な画像プロファイルのリストを取得します。 - アプリは
MediaCodec.setParametersを使用して、選択したプロファイルを選択し、ストリームに設定します。 - フレームワークはこの選択を Media Quality(MQ)HAL に伝え、プロファイル ID とそのパラメータを渡します。
- 最後に、MQ HAL はこれらのパラメータを Composer HAL に送信します。Composer HAL は、指定された画像プロファイルで動画ストリームをレンダリングします。
グローバル デフォルト プロファイルを設定する
特定のプロファイルが割り当てられていないコンテンツのフォールバックとして機能するグローバル デフォルト プロファイルを設定できるのは、システムアプリのみです。
- システムアプリは、フレームワークから利用可能なピクチャー プロファイルのリストを取得します。
- アプリは
setDefaultPictureProfile(id)を呼び出して、これらのプロファイルのいずれかを新しいグローバル デフォルトとして選択します。 - フレームワークは、そのプロファイルのパラメータを 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 がハードウェア レベルで行われた音の調整をフレームワークに通知するために使用するリスナー インターフェース。 |