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.
- 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
- Eine System-App ruft
setPictureProfileAllowList()auf, um einer Media-App die Berechtigung zum Erstellen von Profilen zu erteilen. - Die Media-App registriert einen
PictureProfileCallback, um Benachrichtigungen über Profiländerungen zu erhalten. - Die Media-App ruft
createPictureProfile()mit einemPictureProfileObjekt auf. - Der
MediaQualityServiceverarbeitet die Anfrage, speichert das Profil in der Datenbank und benachrichtigt die App über den Erfolg oder Misserfolg mit dem registrierten Callback (onPictureProfileAdded()oderonError()).
Bildprofil pro Stream festlegen
Dieser Workflow zeigt, wie eine Anwendung während der Wiedergabe ein bestimmtes Profil auf ihre Videoinhalte anwenden kann.
- Die Media-App fragt den
MediaQualityManagerab, um eine Liste der verfügbaren Bildprofile zu erhalten. - Die App verwendet dann
MediaCodec.setParameters, um das ausgewählte Profil für den Stream auszuwählen und festzulegen. - Das Framework teilt diese Auswahl der Media Quality (MQ) HAL mit und übergibt die Profil-ID und die zugehörigen Parameter.
- 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.
- Die System-App ruft eine Liste der verfügbaren Bildprofile aus dem Framework ab.
- Die App wählt dann eines dieser Profile als neues globales Standardprofil aus, indem sie
setDefaultPictureProfile(id)aufruft. - 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. |