Framework für die Medienqualität

Das Media Quality Framework wird in Android 16 für Android TV eingeführt, um eine standardisierte API für Anpassungen der Bildqualität (Picture Quality, PQ) und Audioqualität (Audio Quality, AQ) zu schaffen. Das Hauptziel ist, einen einheitlichen Ansatz für diese Anpassungen auf verschiedenen Android TV-Geräten zu bieten. Dieses standardisierte Framework soll die Entwicklung für App-Entwickler, Originalgerätehersteller (Original Equipment Manufacturers, OEMs) und System-on-Chip-Anbieter (SoC) vereinfachen, indem es eine konsistente Reihe von Android-APIs bietet. Für SoC-Anbieter ermöglicht es dem Android-Framework, die PQ- und AQ-Konfiguration zu verarbeiten, wodurch der Aufwand für die Zusammenarbeit mit verschiedenen App-Entwicklern reduziert wird.

Letztendlich trägt es für Google und die Android-Plattform dazu bei, die Fragmentierung zu reduzieren, die Qualität und Skalierbarkeit zu verbessern, neue Funktionen bereitzustellen und die Grundlage für eine einheitliche AQ/PQ-Benutzeroberfläche und eine verbesserte Nutzererfahrung zu schaffen.

Das Media Quality Framework unterstützt verschiedene Anwendungsfälle, um das Fernseherlebnis zu verbessern. Profile und Einstellungen können pro Paketname (App) oder pro Eingabe-ID verwaltet werden. Außerdem können Profile von System-Apps oder Apps auf der Zulassungsliste erstellt werden und nur vom Eigentümer aktualisiert oder entfernt werden.

Konkret verwaltet das Framework Bild- und Tonprofile. Beispiele für Bildparameter sind Helligkeit, Kontrast und Schärfe. Beispiele für Tonparameter sind Bass und Höhen.

Diese Profile können in verschiedenen Kontexten angewendet werden, z. B. zum Festlegen globaler Standardprofile, zum Streamen von Profilen mit MediaCodec, zum Festlegen von Standardprofilen für bestimmte Media-Apps und zum Festlegen von Bildprofilen für bestimmte TV-Eingänge wie HDMI. Das Framework unterstützt auch Statusänderungen (verschiedene Parametersätze für Zustände wie HDR), verwaltet aktive Bildprofile für die laufende Verarbeitung und verarbeitet Funktionen für die Umgebungsbeleuchtung.

Das Android-Team arbeitet mit unseren Ökosystempartnern zusammen, um das Media Quality Framework zu unterstützen.

Komponenten

Das Media Quality Framework besteht aus mehreren Schlüsselkomponenten, die auf den Anwendungs-, Framework- und Hardwareebenen zusammenarbeiten.

Diagramm zur Standardisierung von PQ AQ
Abbildung 1. Interaktionen zwischen den Komponenten des Media Quality Framework.
  • Media Quality Manager (SDK API): Die SDK API für Anwendungen, mit der Apps Bild- und Tonprofile verwalten können.
  • Media Quality Service: Ein Systemdienst, der die Kernlogik enthält und Profile, Berechtigungen und die Kommunikation mit der HAL verwaltet.
  • Media Quality Database: Eine SQLite-Datenbank, in der alle Bild- und Tonprofile gespeichert sind.
  • Media Quality Contract: Definiert die standardisierten Parameter und Daten strukturen, die für die Kommunikation zwischen Apps und dem Framework verwendet werden.
  • Media Quality HAL: Die Hardwareabstraktionsschicht, die von SoC-Anbietern implementiert wird, um Änderungen an Bild- und Tonprofilen an die zugrunde liegende Hardware zu kommunizieren.

Features

Das Media Quality Framework unterstützt eine Vielzahl von Funktionen, um ein flexibles und leistungsstarkes System zur Verwaltung der Medienqualität zu bieten.

Profilverwaltung

  • Von Apps verwaltete Profile: Apps können eigene Profile erstellen, aktualisieren und löschen, um die Nutzererfahrung anzupassen.
  • Standardprofile: System-Apps können Standardprofile für bestimmte Apps oder TV-Eingänge festlegen (z.B. HDMI 1).
  • Globales Standardprofil: Ein systemweites Fallback-Profil, das angewendet wird, wenn kein bestimmtes Profil festgelegt ist.

Gesamter Workflow

Die folgenden Diagramme veranschaulichen die Aufrufsequenzen für häufige Vorgänge zur Medienqualität.

Bildprofil erstellen und anwenden

Bildprofil erstellen
Abbildung 2. Sequenzdiagramm zum Erstellen eines Bildprofils.
  1. Eine System-App ruft setPictureProfileAllowList() auf, um einer Media-App die Berechtigung zum Erstellen von Profilen zu erteilen.
  2. Die Media-App registriert einen PictureProfileCallback, um Benachrichtigungen über Profiländerungen zu erhalten.
  3. Die Media-App ruft createPictureProfile() mit einem PictureProfile Objekt auf.
  4. Der MediaQualityService verarbeitet die Anfrage, speichert das Profil in der Datenbank und benachrichtigt die App über den Erfolg oder Misserfolg mit dem registrierten Callback (onPictureProfileAdded() oder onError()).

Bildprofil pro Stream festlegen

Dieser Workflow zeigt, wie eine Anwendung während der Wiedergabe ein bestimmtes Profil auf ihre Videoinhalte anwenden kann.

Profilbild für den Stream festlegen
Abbildung 3. Sequenzdiagramm zum Festlegen eines Bildprofils pro Stream.
  1. Die Media-App fragt den MediaQualityManager ab, um eine Liste der verfügbaren Bildprofile zu erhalten.
  2. Die App verwendet dann MediaCodec.setParameters, um das ausgewählte Profil für den Stream auszuwählen und festzulegen.
  3. Das Framework teilt diese Auswahl der Media Quality (MQ) HAL mit und übergibt die Profil-ID und die zugehörigen Parameter.
  4. Schließlich sendet die MQ HAL diese Parameter an die Composer HAL, die den Videostream mit dem angegebenen Bildprofil rendert.

Globales Standardprofil festlegen

Nur System-Apps können das globale Standardprofil festlegen, das als Fallback für alle Inhalte dient, denen kein bestimmtes Profil zugewiesen ist.

  1. Die System-App ruft eine Liste der verfügbaren Bildprofile aus dem Framework ab.
  2. Die App wählt dann eines dieser Profile als neues globales Standardprofil aus, indem sie setDefaultPictureProfile(id) aufruft.
  3. Das Framework sendet die Parameter dieses Profils an die Media Quality HAL, die die Änderungen dann anwendet.

Media Quality SDK API

Die Media Quality SDK API bietet die erforderlichen Tools für Apps, um mit dem Framework zu interagieren. Der Haupteinstiegspunkt ist das Paket android.media.quality.

android.media.quality

Dieses Paket enthält die primären Klassen für die Verwaltung der Medienqualität.

Klasse Beschreibung
MediaQualityManager Die zentrale Klasse für die Interaktion mit dem MQF.
PictureProfile Eine Datenklasse, die einen vollständigen Satz von Bildparametern für einen bestimmten Modus darstellt.
SoundProfile Eine Datenklasse für Tonparameter.
MediaQualityContract Eine Klasse mit Konstanten für alle vordefinierten Parameterschlüssel.

MediaQualityManager

Wichtige Methoden:

Methode Beschreibung
createPictureProfile(PictureProfile profile) Erstellt ein neues Bildprofil. Erfordert spezielle Berechtigungen oder dass die App auf der Zulassungsliste steht.
updatePictureProfile(PictureProfile profile) Aktualisiert ein vorhandenes Bildprofil. Kann nur vom Ersteller des Profils aufgerufen werden.
removePictureProfile(String profileId) Löscht ein Profil. Kann nur vom Ersteller des Profils aufgerufen werden.
getAvailablePictureProfiles() Gibt eine Liste aller verfügbaren Bildprofile zurück.
setDefaultPictureProfile(String profileId) Legt das globale Standardbildprofil fest. Erfordert die Berechtigung MANAGE_GLOBAL_PICTURE_QUALITY_SERVICE.
registerPictureProfileCallback(PictureProfileCallback cb) Registriert einen Callback, um auf Profiländerungen zu warten.

PictureProfile-Objekt

Das PictureProfile-Objekt enthält alle Informationen für einen bestimmten Bildmodus.

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
}

Media Quality HAL

Die Media Quality HAL ist eine AIDL-basierte Schnittstelle, die in hardware/interfaces/tv/mediaquality/aidl/ definiert ist. SoC-Anbieter müssen diese Schnittstelle implementieren, um das Media Quality Framework auf ihren Geräten zu aktivieren. Die HAL dient als Kommunikationsbrücke zwischen dem MediaQualityService im Android-Framework und der zugrunde liegenden Hardware, die für die Anpassung von Bild und Ton verantwortlich ist.

Die HAL verwaltet Bild- und Tonprofile mit AIDL-Parcelables. Dazu gehören das Empfangen von Profiländerungen vom Framework und das Benachrichtigen des Framework über alle Anpassungen auf Hardwareebene.

Module

Die HAL-Schnittstelle besteht aus mehreren wichtigen AIDL-Dateien:

HAL-Datei Beschreibung
IMediaQuality.aidl Die Hauptschnittstelle für den Media Quality Service, die zum Festlegen von Listenern und zum Ermitteln von Hardwarefunktionen verwendet wird.
IPictureProfileChangedListener.aidl Eine Listener-Schnittstelle, die das Framework verwendet, um die HAL (insbesondere eine Komponente wie die Composer HAL) über Änderungen an einem Bildprofil zu benachrichtigen.
IPictureProfileAdjustmentListener.aidl Eine Listener-Schnittstelle, die die HAL verwendet, um das Framework über Anpassungen auf Hardwareebene zu benachrichtigen, z. B. wenn ein Nutzer eine Einstellung direkt mit einer Hardware-Fernbedienung ändert.
PictureParameter.aidl Eine AIDL-Union, die alle Standardbildparameter definiert, die angepasst werden können, z. B. Kontrast und Schärfe.
PictureProfile.aidl Das AIDL-Parcelable, das ein PictureProfile-Objekt auf der HAL-Ebene darstellt und eine Profil-ID und die zugehörigen Parameter enthält.
ISoundProfileChangedListener.aidl Eine Listener-Schnittstelle, die das Framework verwendet, um die HAL über Änderungen an einem Tonprofil zu benachrichtigen.
ISoundProfileAdjustmentListener.aidl Eine Listener-Schnittstelle, die die HAL verwendet, um das Framework über Anpassungen des Tons auf Hardwareebene zu benachrichtigen.