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

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 などの特定の入力の TV 入力画像プロファイルの設定など、さまざまなコンテキストで適用できます。このフレームワークはステータスの変更もサポートしており、HDR などの状態に対してさまざまなパラメータ セットを許可したり、進行中の処理のアクティブな画像プロファイルを管理したり、アンビエント バックライト機能を処理したりできます。

Android チームは、エコシステム パートナーと協力してメディア品質フレームワークをサポートしています。

コンポーネント

メディア品質フレームワークは、アプリ、フレームワーク、ハードウェアの各レイヤで連携して動作するいくつかの主要コンポーネントで構成されています。

PQ AQ 標準化の図

図 1. メディア品質フレームワーク コンポーネント間のインタラクション

  • Media Quality Manager(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. フレームワークはこの選択を 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 がハードウェア レベルで行われた音の調整をフレームワークに通知するために使用するリスナー インターフェース。