Il framework per la 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 questi aggiustamenti 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 a 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 l'overhead 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 per la 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 input. Inoltre, i profili possono essere creati da app di sistema o da altre app incluse nella lista consentita. I profili possono essere aggiornati o rimossi solo dal proprietario. 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, profili di streaming tramite MediaCodec, profili predefiniti delle app per app multimediali specifiche e profili immagine di input TV per input specifici come HDMI. Il framework supporta anche le modifiche di stato, consentendo diversi set di parametri per stati come HDR, la gestione dei profili 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 Media Quality.
Componenti
Il framework per la qualità dei contenuti multimediali è composto da diversi componenti chiave che lavorano insieme nei livelli di applicazione, framework e hardware.

Figura 1. Interazioni tra i componenti del framework per la qualità dei contenuti multimediali
- Media Quality Manager (API SDK): l'API SDK rivolta alle applicazioni 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, gestisce profili, autorizzazioni e comunicazione con l'HAL.
- Database della qualità dei contenuti multimediali: un database SQLite che archivia tutti i profili di immagini 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 per la qualità dei contenuti multimediali: il livello di astrazione hardware che i fornitori di SoC implementano per comunicare le modifiche al profilo di immagine e audio all'hardware sottostante.
Funzionalità
Il framework per la 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 ingressi TV specifici (ad es. HDMI 1).
- Profilo predefinito globale: un profilo di riserva a livello di sistema che viene applicato quando non è impostato alcun profilo specifico.
Flusso di lavoro complessivo
I seguenti diagrammi illustrano le sequenze di chiamate per le operazioni comuni di qualità dei contenuti multimediali.
Creare e applicare un profilo con immagine

Figura 2. Diagramma di sequenza per la creazione di un profilo con 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 al profilo. - L'app multimediale chiama
createPictureProfile()con un oggettoPictureProfile. MediaQualityServiceelabora la richiesta, salva il profilo nel database e comunica all'app l'esito positivo o negativo tramite il callback registrato (onPictureProfileAdded()oonError()).
Impostare un profilo immagine per stream
Questo flusso di lavoro mostra come un'applicazione può applicare un profilo specifico ai suoi contenuti video durante la riproduzione.

Figura 3. Diagramma di sequenza per l'impostazione di un profilo immagine per stream
- L'app multimediale esegue query su
MediaQualityManagerper ottenere un elenco di profili immagine disponibili. - L'app utilizza quindi
MediaCodec.setParametersper selezionare e impostare il profilo desiderato per lo stream. - Il framework comunica questa scelta all'HAL Media Quality (MQ), trasmettendo l'ID profilo e i relativi parametri.
- Infine, l'HAL MQ invia questi parametri all'HAL Composer, che esegue il rendering del flusso video con il profilo 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 è stato assegnato un profilo specifico.
- L'app di sistema recupera un elenco dei profili 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 Media Quality, che applica le modifiche.
API Media Quality SDK
L'API SDK Media Quality fornisce gli strumenti necessari alle app per interagire con il framework. L'entry point 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 interagire con MQF. |
PictureProfile |
Una classe di dati che rappresenta un insieme completo di parametri dell'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 predefinite. |
MediaQualityManager
I metodi principali includono:
| Metodo | Descrizione |
|---|---|
createPictureProfile(PictureProfile profile) |
Crea un nuovo profilo con immagine. Richiede autorizzazioni speciali o che l'app sia inclusa nella lista consentita. |
updatePictureProfile(PictureProfile profile) |
Aggiorna un profilo con foto 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 immagine disponibili. |
setDefaultPictureProfile(String profileId) |
Imposta il profilo immagine predefinito globale. Richiede l'autorizzazione MANAGE_GLOBAL_PICTURE_QUALITY_SERVICE. |
registerPictureProfileCallback(PictureProfileCallback cb) |
Registra un callback per ascoltare le modifiche al profilo. |
Oggetto PictureProfile
L'oggetto PictureProfile contiene tutte le informazioni per una determinata modalità 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 Qualità dei contenuti multimediali
L'HAL Media Quality è un'interfaccia basata su AIDL definita in hardware/interfaces/tv/mediaquality/aidl/. I fornitori di SoC devono implementare questa interfaccia per attivare Media Quality Framework sui loro 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 suono.
L'HAL gestisce i profili di immagine e audio utilizzando i parcelable AIDL. Ciò comporta la ricezione delle modifiche al profilo dal framework e la notifica al framework di eventuali aggiustamenti apportati a livello hardware.
Moduli
L'interfaccia HAL è composta da diversi file AIDL chiave:
| File HAL | Descrizione |
|---|---|
IMediaQuality.aidl |
L'interfaccia principale del servizio Media Quality, 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 del compositore) le modifiche a un profilo immagine. |
IPictureProfileAdjustmentListener.aidl |
Un'interfaccia listener utilizzata dall'HAL per comunicare al framework le modifiche 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 standard dell'immagine, 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 associati. |
ISoundProfileChangedListener.aidl |
Un'interfaccia di listener che il framework utilizza per notificare all'HAL le modifiche a un profilo audio. |
ISoundProfileAdjustmentListener.aidl |
Un'interfaccia listener che l'HAL utilizza per notificare al framework le regolazioni del suono apportate a livello hardware. |