El marco de trabajo de Calidad de medios se introduce en Android 16 para Android TV con el objetivo de establecer una API estandarizada para los ajustes de Calidad de imagen (PQ) y Calidad de audio (AQ). El objetivo principal es proporcionar un enfoque unificado para estos ajustes en los diferentes dispositivos Android TV. Este marco de trabajo estandarizado tiene como objetivo simplificar el desarrollo para los desarrolladores de apps, los fabricantes de equipos originales (OEM) y los proveedores de sistemas en chip (SoC) ofreciendo un conjunto coherente de APIs de Android. En el caso específico de los proveedores de SoC, permite que el framework de Android controle la configuración de PQ y AQ, lo que reduce la sobrecarga de colaborar con diferentes desarrolladores de aplicaciones.
En última instancia, para Google y la plataforma de Android, ayuda a reducir la fragmentación, mejorar la calidad y la escalabilidad, proporcionar funciones nuevas y sentar las bases para una IU de AQ/PQ unificada y una experiencia del usuario mejorada.
El framework de Calidad de medios admite varios casos de uso para mejorar la experiencia de mirar TV. Cabe destacar que los perfiles y la configuración se pueden administrar por nombre de paquete (app) y por ID de entrada. Además, las apps del sistema o las demás apps que se encuentran en la lista de entidades permitidas pueden crear perfiles. Solo el propietario de los perfiles puede actualizarlos o quitarlos. Específicamente, el framework administra los perfiles de imagen y sonido. Entre los ejemplos de parámetros de imagen, se incluyen el brillo, el contraste y la nitidez. Algunos ejemplos de parámetros de sonido son los graves y los agudos. Estos perfiles se pueden aplicar en varios contextos, como la configuración de perfiles predeterminados globales, la transmisión de perfiles a través de MediaCodec, la configuración de perfiles predeterminados de la app para apps de medios específicas y la configuración de perfiles de imagen de entrada de TV para entradas específicas, como HDMI. El framework también admite cambios de estado, lo que permite diferentes conjuntos de parámetros para estados como HDR, la administración de perfiles de imagen activos para el procesamiento en curso y el control de las funciones de luz de fondo ambiental.
El equipo de Android está trabajando con nuestros socios del ecosistema para admitir el framework de calidad de medios.
Componentes
El marco de trabajo de calidad de medios se compone de varios componentes clave que trabajan en conjunto en las capas de la aplicación, el marco de trabajo y el hardware.

Figura 1: Interacciones entre los componentes del marco de calidad de los medios
- Administrador de calidad de medios (API del SDK): Es la API del SDK orientada a la aplicación que permite que las apps administren los perfiles de imagen y sonido.
- Servicio de calidad de medios: Es un servicio del sistema que contiene la lógica de negocios principal, administra perfiles, permisos y la comunicación con la HAL.
- Base de datos de calidad de medios: Es una base de datos SQLite que almacena todos los perfiles de sonido y de imagen.
- Contrato de calidad de medios: Define los parámetros y las estructuras de datos estandarizados que se usan para la comunicación entre las apps y el framework.
- HAL de calidad de medios: Es la capa de abstracción de hardware que implementan los proveedores de SoC para comunicar los cambios en los perfiles de imagen y sonido al hardware subyacente.
Funciones
El marco de trabajo de calidad de contenido multimedia admite una amplia variedad de funciones para proporcionar un sistema flexible y potente para administrar la calidad del contenido multimedia.
Administración de perfiles
- Perfiles administrados por la app: Las apps pueden crear, actualizar y borrar sus propios perfiles para brindar una experiencia personalizada.
- Perfiles predeterminados: Las apps del sistema pueden establecer perfiles predeterminados para apps o entradas de TV específicas (p.ej., HDMI 1).
- Perfil predeterminado global: Es un perfil de respaldo para todo el sistema que se aplica cuando no se establece ningún perfil específico.
Flujo de trabajo general
En los siguientes diagramas, se ilustran las secuencias de llamadas para las operaciones comunes de calidad de los medios.
Cómo crear y aplicar un perfil de imagen

Figura 2: Diagrama de secuencia para crear un perfil de imagen
- Una app del sistema llama a
setPictureProfileAllowList()para otorgar permiso a una app de música para crear perfiles. - La app de medios registra un
PictureProfileCallbackpara recibir notificaciones sobre los cambios en el perfil. - La app de música llama a
createPictureProfile()con un objetoPictureProfile. MediaQualityServiceprocesa la solicitud, guarda el perfil en la base de datos y notifica a la app si la operación se realizó correctamente o no a través de la devolución de llamada registrada (onPictureProfileAdded()oonError()).
Cómo establecer un perfil de imagen por transmisión
En este flujo de trabajo, se muestra cómo una aplicación puede aplicar un perfil específico a su contenido de video durante la reproducción.

Figura 3: Diagrama de secuencia para configurar un perfil de imagen por transmisión
- La app de contenido multimedia consulta
MediaQualityManagerpara obtener una lista de los perfiles de imagen disponibles. - Luego, la app usa
MediaCodec.setParameterspara seleccionar y establecer el perfil deseado para la transmisión. - El framework comunica esta elección al HAL de calidad de medios (MQ), y pasa el ID del perfil y sus parámetros.
- Por último, el HAL de MQ envía estos parámetros al HAL de Composer, que renderiza el flujo de video con el perfil de imagen especificado.
Cómo establecer un perfil predeterminado global
Solo las apps del sistema pueden establecer el perfil predeterminado global, que sirve como alternativa para cualquier contenido que no tenga asignado un perfil específico.
- La app del sistema recupera una lista de los perfiles de imagen disponibles del framework.
- Luego, la app llama a
setDefaultPictureProfile(id)para seleccionar uno de estos perfiles como el nuevo valor predeterminado global. - El framework envía los parámetros de ese perfil a la HAL de calidad de medios, que luego aplica los cambios.
API del SDK de Media Quality
La API del SDK de Media Quality proporciona las herramientas necesarias para que las apps interactúen con el framework. El punto de entrada principal es el paquete android.media.quality.
android.media.quality
Este paquete contiene las clases principales para administrar la calidad de los medios.
| Clase | Descripción |
|---|---|
MediaQualityManager |
Es la clase central para interactuar con el MQF. |
PictureProfile |
Es una clase de datos que representa un conjunto completo de parámetros de imagen para un modo específico. |
SoundProfile |
Es una clase de datos para los parámetros de sonido. |
MediaQualityContract |
Clase que contiene constantes para todas las claves de parámetros predefinidas. |
MediaQualityManager
Entre los métodos clave, se incluyen los siguientes:
| Método | Descripción |
|---|---|
createPictureProfile(PictureProfile profile) |
Crea un nuevo perfil de imagen. Requiere permisos especiales o que la app esté en la lista de entidades permitidas. |
updatePictureProfile(PictureProfile profile) |
Actualiza un perfil de imagen existente. Solo lo puede llamar el creador del perfil. |
removePictureProfile(String profileId) |
Borra un perfil. Solo lo puede llamar el creador del perfil. |
getAvailablePictureProfiles() |
Devuelve una lista de todos los perfiles de imagen disponibles. |
setDefaultPictureProfile(String profileId) |
Establece el perfil de imagen predeterminado global. Requiere permiso de MANAGE_GLOBAL_PICTURE_QUALITY_SERVICE. |
registerPictureProfileCallback(PictureProfileCallback cb) |
Registra una devolución de llamada para detectar cambios en el perfil. |
Objeto PictureProfile
El objeto PictureProfile encapsula toda la información de un modo de imagen determinado.
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 de calidad multimedia
La HAL de Media Quality es una interfaz basada en AIDL definida en hardware/interfaces/tv/mediaquality/aidl/. Los proveedores de SoC deben implementar esta interfaz para habilitar el marco de trabajo de calidad de medios en sus dispositivos. El HAL sirve como puente de comunicación entre MediaQualityService en el framework de Android y el hardware subyacente, y es responsable de aplicar los ajustes de imagen y sonido.
La HAL administra los perfiles de imagen y sonido con objetos parcelables de AIDL. Esto implica recibir cambios de perfil del framework y notificarle cualquier ajuste realizado a nivel del hardware.
Módulos
La interfaz de HAL se compone de varios archivos AIDL clave:
| Archivo HAL | Descripción |
|---|---|
IMediaQuality.aidl |
Es la interfaz principal del servicio de calidad de medios, que se usa para configurar objetos de escucha y descubrir capacidades de hardware. |
IPictureProfileChangedListener.aidl |
Es una interfaz de escucha que el framework usa para notificar al HAL (específicamente, a un componente como el HAL del compositor) sobre los cambios en un perfil de imagen. |
IPictureProfileAdjustmentListener.aidl |
Es una interfaz de escucha que usa el HAL para notificar al framework los ajustes realizados a nivel del hardware, por ejemplo, cuando un usuario cambia un parámetro de configuración directamente a través de un control remoto de hardware. |
PictureParameter.aidl |
Es una unión de AIDL que define todos los parámetros de imagen estándar que se pueden ajustar, como el contraste y la nitidez. |
PictureProfile.aidl |
Es el objeto AIDL parcelable que representa un objeto PictureProfile en la capa de HAL, que contiene un ID de perfil y sus parámetros asociados. |
ISoundProfileChangedListener.aidl |
Es una interfaz de escucha que el framework usa para notificar al HAL los cambios en un perfil de sonido. |
ISoundProfileAdjustmentListener.aidl |
Es una interfaz de objeto de escucha que usa el HAL para notificar al framework los ajustes de sonido realizados a nivel del hardware. |