Il framework Qualità dei contenuti multimediali verrà introdotto in Android 16 per Android TV con l'obiettivo di stabilire un'API standardizzata per le regolazioni della qualità dell'immagine (PQ) e della qualità audio (AQ). L'obiettivo principale è fornire un approccio unificato a queste regolazioni su diversi dispositivi Android TV. Questo framework standardizzato mira a semplificare lo sviluppo per gli sviluppatori di app, i produttori di apparecchiature originali (OEM) e i fornitori di system-on-chip (SoC) offrendo un insieme coerente di API Android. Per i fornitori di SoC in particolare, consente al framework Android di gestire la configurazione PQ e AQ, riducendo il sovraccarico della collaborazione con diversi sviluppatori di applicazioni.
In definitiva, per la piattaforma Google e Android, contribuisce a ridurre la frammentazione, migliorare la qualità e la scalabilità, fornire nuove funzionalità e gettare le basi per un'interfaccia utente AQ/PQ unificata e un'esperienza utente migliorata.
Il framework Qualità dei contenuti multimediali supporta vari casi d'uso per migliorare l'esperienza di visione della TV. È importante notare che i profili e le impostazioni possono essere gestiti per nome del pacchetto (app) e per ID di input. Inoltre, i profili possono essere creati dalle app di sistema o da altre app presenti nella lista consentita. I profili possono essere aggiornati o rimossi solo dal proprietario dei profili. In particolare, il framework gestisce i profili di immagine e audio. Esempi di parametri dell'immagine includono luminosità, contrasto e nitidezza. Esempi di parametri audio includono bassi e alti. Questi profili possono essere applicati in vari contesti, tra cui l'impostazione di profili predefiniti globali, i profili di streaming tramite MediaCodec, l'impostazione di profili predefiniti delle app per app multimediali specifiche e l'impostazione di profili di immagine di input TV per input specifici come HDMI. Il framework supporta anche le modifiche dello stato, consentendo diversi set di parametri per stati come HDR, la gestione dei profili di immagine attivi per l'elaborazione in corso e la gestione delle funzionalità di retroilluminazione ambientale.
Il team Android sta collaborando con i nostri partner dell'ecosistema per supportare il framework Qualità dei contenuti multimediali.
Componenti
Il framework Qualità dei contenuti multimediali è composto da diversi componenti chiave che interagiscono tra i livelli di applicazione, framework e hardware.

Figura 1. Interazioni tra i componenti del framework Qualità dei contenuti multimediali
- Gestore della qualità dei contenuti multimediali (API SDK): l'API SDK rivolta all'applicazione che consente alle app di gestire i profili di immagine e audio.
- Servizio di qualità dei contenuti multimediali: un servizio di sistema che contiene la logica di business principale, la gestione dei profili, le autorizzazioni e la comunicazione con l'HAL.
- Database di qualità dei contenuti multimediali: un database SQLite che memorizza tutti i profili di immagine e audio.
- Contratto di qualità dei contenuti multimediali: definisce i parametri e le strutture di dati standardizzati utilizzati per la comunicazione tra le app e il framework.
- HAL di qualità dei contenuti multimediali: il livello di astrazione hardware che i fornitori di SoC implementano per comunicare le modifiche dei profili di immagine e audio all'hardware sottostante.
Funzionalità
Il framework Qualità dei contenuti multimediali supporta un'ampia gamma di funzionalità per fornire un sistema flessibile e potente per la gestione della qualità dei contenuti multimediali.
Gestione del profilo
- Profili gestiti dalle app: le app possono creare, aggiornare ed eliminare i propri profili per un'esperienza personalizzata.
- Profili predefiniti: le app di sistema possono impostare profili predefiniti per app o input TV specifici (ad es. HDMI 1).
- Profilo predefinito globale: un profilo di fallback a livello di sistema che viene applicato quando non è impostato alcun profilo specifico.
Flusso di lavoro generale
I seguenti diagrammi illustrano le sequenze di chiamate per le operazioni comuni di qualità dei contenuti multimediali.
Creare e applicare un profilo di immagine

Figura 2. Diagramma di sequenza per la creazione di un profilo di immagine
- Un'app di sistema chiama
setPictureProfileAllowList()per concedere a un'app multimediale l'autorizzazione a creare profili. - L'app multimediale registra un
PictureProfileCallbackper ricevere notifiche sulle modifiche del profilo. - L'app multimediale chiama
createPictureProfile()con un oggettoPictureProfile. - Il
MediaQualityServiceelabora la richiesta, salva il profilo nel database e notifica all'app l'esito positivo o negativo tramite il callback registrato (onPictureProfileAdded()oonError()).
Impostare un profilo di immagine per stream
Questo flusso di lavoro mostra come un'applicazione può applicare un profilo specifico ai contenuti video durante la riproduzione.

Figura 3. Diagramma di sequenza per l'impostazione di un profilo di immagine per stream
- L'app multimediale esegue una query su
MediaQualityManagerper ottenere un elenco dei profili di immagine disponibili. - L'app utilizza quindi
MediaCodec.setParametersper selezionare e impostare il profilo desiderato per lo stream. - Il framework comunica questa scelta all'HAL di qualità dei contenuti multimediali (MQ), passando l'ID del profilo e i relativi parametri.
- Infine, l'HAL MQ invia questi parametri all'HAL Composer, che esegue il rendering dello stream video con il profilo di immagine specificato.
Impostare un profilo predefinito globale
Solo le app di sistema possono impostare il profilo predefinito globale, che funge da fallback per i contenuti a cui non è assegnato un profilo specifico.
- L'app di sistema recupera un elenco dei profili di immagine disponibili dal framework.
- L'app seleziona quindi uno di questi profili come nuovo profilo predefinito globale chiamando
setDefaultPictureProfile(id). - Il framework invia i parametri del profilo all'HAL di qualità dei contenuti multimediali, che poi applica le modifiche.
API SDK di qualità dei contenuti multimediali
L'API SDK di qualità dei contenuti multimediali fornisce gli strumenti necessari alle app per interagire con il framework. Il punto di ingresso principale è il pacchetto android.media.quality.
android.media.quality
Questo pacchetto contiene le classi principali per la gestione della qualità dei contenuti multimediali.
| Classe | Descrizione |
|---|---|
MediaQualityManager |
La classe centrale per l'interazione con MQF. |
PictureProfile |
Una classe di dati che rappresenta un insieme completo di parametri di immagine per una modalità specifica. |
SoundProfile |
Una classe di dati per i parametri audio. |
MediaQualityContract |
Una classe contenente costanti per tutte le chiavi dei parametri predefiniti. |
MediaQualityManager
I metodi chiave includono:
| Metodo | Descrizione |
|---|---|
createPictureProfile(PictureProfile profile) |
Crea un nuovo profilo di immagine. Richiede autorizzazioni speciali o che l'app sia nella lista consentita. |
updatePictureProfile(PictureProfile profile) |
Aggiorna un profilo di immagine esistente. Può essere chiamato solo dal creatore del profilo. |
removePictureProfile(String profileId) |
Elimina un profilo. Può essere chiamato solo dal creatore del profilo. |
getAvailablePictureProfiles() |
Restituisce un elenco di tutti i profili di immagine disponibili. |
setDefaultPictureProfile(String profileId) |
Imposta il profilo di immagine predefinito globale. Richiede l'autorizzazione MANAGE_GLOBAL_PICTURE_QUALITY_SERVICE. |
registerPictureProfileCallback(PictureProfileCallback cb) |
Registra un callback per ascoltare le modifiche del profilo. |
Oggetto PictureProfile
L'oggetto PictureProfile incapsula tutte le informazioni per una determinata modalità di immagine.
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 di qualità dei contenuti multimediali
L'HAL di qualità dei contenuti multimediali è un'interfaccia basata su AIDL definita in hardware/interfaces/tv/mediaquality/aidl/. I fornitori di SoC devono implementare questa interfaccia per abilitare il framework Qualità dei contenuti multimediali sui propri dispositivi. L'HAL funge da ponte di comunicazione tra MediaQualityService nel framework Android e l'hardware sottostante, responsabile dell'applicazione delle regolazioni di immagine e audio.
L'HAL gestisce i profili di immagine e audio utilizzando i parcelable AIDL. Ciò comporta la ricezione delle modifiche del profilo dal framework e la notifica al framework di eventuali regolazioni apportate a livello hardware.
Moduli
L'interfaccia HAL è composta da diversi file AIDL chiave:
| File HAL | Descrizione |
|---|---|
IMediaQuality.aidl |
L'interfaccia principale per il servizio di qualità dei contenuti multimediali, utilizzata per impostare i listener e scoprire le funzionalità hardware. |
IPictureProfileChangedListener.aidl |
Un'interfaccia di listener che il framework utilizza per notificare all'HAL (in particolare, a un componente come l'HAL Composer) le modifiche a un profilo di immagine. |
IPictureProfileAdjustmentListener.aidl |
Un'interfaccia di listener che l'HAL utilizza per notificare al framework le regolazioni apportate a livello hardware, ad esempio quando un utente modifica un'impostazione direttamente tramite un telecomando hardware. |
PictureParameter.aidl |
Un'unione AIDL che definisce tutti i parametri di immagine standard, come contrasto e nitidezza, che possono essere regolati. |
PictureProfile.aidl |
Il parcelable AIDL che rappresenta un oggetto PictureProfile a livello HAL, contenente un ID profilo e i relativi parametri. |
ISoundProfileChangedListener.aidl |
Un'interfaccia di listener che il framework utilizza per notificare all'HAL le modifiche a un profilo audio. |
ISoundProfileAdjustmentListener.aidl |
Un'interfaccia di listener che l'HAL utilizza per notificare al framework le regolazioni audio apportate a livello hardware. |