В Android 16 для Android TV внедряется фреймворк Media Quality с целью создания стандартизированного API для регулировки качества изображения (PQ) и качества звука (AQ). Основная задача — обеспечить единый подход к этим настройкам на разных устройствах Android TV. Этот стандартизированный фреймворк призван упростить разработку для разработчиков приложений, производителей оригинального оборудования (OEM) и поставщиков систем на кристалле (SoC), предлагая согласованный набор API Android. В частности, для поставщиков SoC он позволяет фреймворку Android обрабатывать конфигурацию PQ и AQ, снижая затраты на взаимодействие с различными разработчиками приложений.
В конечном итоге, для Google и платформы Android это помогает уменьшить фрагментацию, улучшить качество и масштабируемость, предоставить новые функции и заложить основу для единого пользовательского интерфейса AQ/PQ и улучшить пользовательский опыт.
Фреймворк Media Quality поддерживает различные сценарии использования для улучшения качества просмотра телепередач. Стоит отметить, что профили и настройки можно управлять для каждого имени пакета (приложения) и для каждого идентификатора входа. Кроме того, профили могут создаваться системными приложениями или другими приложениями, находящимися в списке разрешенных. Профили могут быть обновлены или удалены только владельцем профиля. В частности, фреймворк управляет профилями изображения и звука. Примеры параметров изображения включают яркость, контрастность, резкость. Примеры параметров звука включают низкие и высокие частоты. Эти профили могут применяться в различных контекстах, включая установку глобальных профилей по умолчанию, профилей потоковой передачи через MediaCodec, установку профилей по умолчанию для конкретных медиаприложений и установку профилей изображения телевизионного входа для конкретных входов, таких как HDMI. Фреймворк также поддерживает изменение состояния, позволяя устанавливать различные наборы параметров для таких состояний, как HDR, управлять активными профилями изображения для текущей обработки и обрабатывать функции подсветки.
Команда Android сотрудничает с нашими партнерами по экосистеме для поддержки фреймворка Media Quality.
Компоненты
Структура обеспечения качества мультимедиа состоит из нескольких ключевых компонентов, которые взаимодействуют на уровне приложения, структуры и оборудования.

Рисунок 1. Взаимодействие компонентов системы оценки качества медиаконтента.
- Менеджер качества мультимедиа (SDK API) : API SDK, доступный для приложений, позволяющий управлять профилями изображения и звука.
- Служба качества мультимедиа : системная служба, содержащая основную бизнес-логику, управляющая профилями, разрешениями и взаимодействием с HAL.
- База данных качества мультимедиа : база данных SQLite, в которой хранятся все профили изображения и звука.
- Контракт на качество медиаконтента : определяет стандартизированные параметры и структуры данных, используемые для обмена данными между приложениями и фреймворком.
- Media Quality HAL : уровень аппаратной абстракции, который производители SoC используют для передачи изменений профиля изображения и звука на нижележащее оборудование.
Функции
Система управления качеством медиаконтента поддерживает широкий спектр функций, обеспечивая гибкую и мощную систему для контроля качества медиаконтента.
Управление профилями
- Профили, управляемые приложением : приложения могут создавать, обновлять и удалять собственные профили для персонализации пользовательского опыта.
- Профили по умолчанию : Системные приложения могут устанавливать профили по умолчанию для определенных приложений или входов телевизора (например, HDMI 1).
- Глобальный профиль по умолчанию : резервный профиль для всей системы, применяемый, если не указан конкретный профиль.
Общий рабочий процесс
Следующие диаграммы иллюстрируют последовательность вызовов для распространенных операций по обеспечению качества мультимедиа.
Создайте и примените профиль изображения.

Рисунок 2. Последовательность действий для создания профиля изображения.
- Системное приложение вызывает
setPictureProfileAllowList()чтобы предоставить медиаприложению разрешение на создание профилей. - Медиаприложение регистрирует объект
PictureProfileCallbackдля получения уведомлений об изменениях профиля. - Медиаприложение вызывает метод
createPictureProfile(), передавая ему объектPictureProfile. - Сервис
MediaQualityServiceобрабатывает запрос, сохраняет профиль в базе данных и уведомляет приложение об успехе или неудаче через зарегистрированный коллбэк (onPictureProfileAdded()илиonError()).
Настройте профиль изображения для каждого потока
Данный алгоритм демонстрирует, как приложение может применять определенный профиль к видеоконтенту во время воспроизведения.

Рисунок 3. Последовательность установки профиля изображения для каждого потока.
- Медиаприложение запрашивает у
MediaQualityManagerсписок доступных профилей изображений. - Затем приложение использует
MediaCodec.setParametersдля выбора и установки желаемого профиля для потока. - Данная платформа передает этот выбор в HAL качества мультимедиа (MQ), передавая идентификатор профиля и его параметры.
- Наконец, MQ HAL отправляет эти параметры в Composer HAL, который обрабатывает видеопоток с заданным профилем изображения.
Установить глобальный профиль по умолчанию
Только системные приложения могут устанавливать глобальный профиль по умолчанию, который служит резервным вариантом для любого контента, которому не назначен конкретный профиль.
- Системное приложение получает список доступных профилей изображений из фреймворка.
- Затем приложение выбирает один из этих профилей в качестве нового глобального профиля по умолчанию, вызывая метод
setDefaultPictureProfile(id). - Данная платформа отправляет параметры профиля в Media Quality HAL, который затем применяет изменения.
API SDK для обеспечения качества мультимедиа
API Media Quality SDK предоставляет необходимые инструменты для взаимодействия приложений с фреймворком. Основной точкой входа является пакет android.media.quality .
android.media.quality
Этот пакет содержит основные классы для управления качеством мультимедиа.
| Сорт | Описание |
|---|---|
MediaQualityManager | Центральный класс для взаимодействия с MQF. |
PictureProfile | Класс данных, представляющий полный набор параметров изображения для конкретного режима. |
SoundProfile | Класс данных для параметров звука. |
MediaQualityContract | Класс, содержащий константы для всех предопределенных ключей параметров. |
MediaQualityManager
К основным методам относятся:
| Метод | Описание |
|---|---|
createPictureProfile(PictureProfile profile) | Создает новый профиль с фотографией. Требует специальных разрешений или включения приложения в список разрешенных приложений. |
updatePictureProfile(PictureProfile profile) | Обновляет существующий профиль с изображением. Может быть вызван только создателем профиля. |
removePictureProfile(String profileId) | Удаляет профиль. Может быть вызвана только создателем профиля. |
getAvailablePictureProfiles() | Возвращает список всех доступных профилей изображений. |
setDefaultPictureProfile(String profileId) | Устанавливает глобальный профиль качества изображения по умолчанию. Требуется разрешение MANAGE_GLOBAL_PICTURE_QUALITY_SERVICE . |
registerPictureProfileCallback(PictureProfileCallback cb) | Регистрирует функцию обратного вызова для отслеживания изменений профиля. |
Объект профиля изображения
Объект PictureProfile содержит всю информацию, необходимую для заданного режима изображения.
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
Интерфейс Media Quality HAL — это интерфейс на основе AIDL, определенный в hardware/interfaces/tv/mediaquality/aidl/ . Производители SoC должны реализовать этот интерфейс, чтобы включить поддержку Media Quality Framework на своих устройствах. HAL служит мостом связи между MediaQualityService в среде Android и базовым оборудованием, отвечая за применение настроек изображения и звука.
HAL управляет профилями изображения и звука с помощью пакетов AIDL. Это включает в себя получение изменений профиля от платформы и уведомление платформы о любых корректировках, внесенных на аппаратном уровне.
Модули
Интерфейс HAL состоит из нескольких ключевых файлов AIDL:
| Файл HAL | Описание |
|---|---|
IMediaQuality.aidl | Основной интерфейс сервиса «Качество мультимедиа», используемый для настройки слушателей и определения возможностей оборудования. |
IPictureProfileChangedListener.aidl | Интерфейс слушателя, который используется фреймворком для уведомления HAL (в частности, такого компонента, как HAL композитора) об изменениях в профиле изображения. |
IPictureProfileAdjustmentListener.aidl | Интерфейс прослушивания, который HAL использует для уведомления платформы о корректировках, внесенных на аппаратном уровне, например, когда пользователь изменяет настройку непосредственно с помощью аппаратного пульта дистанционного управления. |
PictureParameter.aidl | Объединение AIDL, определяющее все стандартные параметры изображения, такие как контрастность и резкость, которые можно регулировать. |
PictureProfile.aidl | Объект AIDL parcelable, представляющий собой объект PictureProfile на уровне HAL, содержащий идентификатор профиля и связанные с ним параметры. |
ISoundProfileChangedListener.aidl | Интерфейс слушателя, который используется фреймворком для уведомления HAL об изменениях звукового профиля. |
ISoundProfileAdjustmentListener.aidl | Интерфейс слушателя, который HAL использует для уведомления системы о корректировках звука, внесенных на аппаратном уровне. |