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

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.メディア品質フレームワークのコンポーネント間のインタラクション

  • メディア品質マネージャー(SDK API): アプリが画像プロファイルと音声プロファイルを管理できるようにする、アプリ向けの SDK API。
  • メディア品質サービス: コア ビジネス ロジックを含むシステム サービス。プロファイル、権限、HAL との通信を管理します。
  • メディア品質データベース: すべての画像プロファイルと音声プロファイルを保存する SQLite データベース。
  • メディア品質コントラクト: アプリとフレームワーク間の通信に使用される標準化されたパラメータとデータ構造を定義します。
  • メディア品質 HAL: SoC ベンダーが実装するハードウェア抽象化レイヤ。画像プロファイルと音声プロファイルの変更を基盤となるハードウェアに伝達します。

機能

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

プロフィールの管理

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

全体的なワークフロー

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

画像プロファイルを作成して適用する

写真プロフィールを作成する

図 2.画像プロファイルを作成するためのシーケンス図

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

ストリームごとの画像プロファイルを設定する

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

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

図 3.ストリームごとの画像プロファイルを設定するためのシーケンス図

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

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

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

  1. システムアプリは、フレームワークから使用可能な画像プロファイルのリストを取得します。
  2. 次に、アプリは setDefaultPictureProfile(id) を呼び出して、これらのプロファイルのいずれかを新しいグローバル デフォルトとして選択します。
  3. フレームワークは、そのプロファイルのパラメータをメディア品質 HAL に送信します。メディア品質 HAL は、変更を適用します。

メディア品質 SDK API

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