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

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

Рисунок 3. Диаграмма последовательности настройки профиля изображения для каждого потока
- Медиа-приложение запрашивает
MediaQualityManager, чтобы получить список доступных профилей изображений. - Затем приложение использует
MediaCodec.setParametersдля выбора и установки нужного профиля для потока. - Фреймворк передает этот выбор в HAL Media Quality (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
Объект 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 | Основной интерфейс для службы Media Quality, используемый для настройки прослушивателей и обнаружения возможностей оборудования. |
IPictureProfileChangedListener.aidl | Интерфейс прослушивателя, который фреймворк использует для уведомления HAL (в частности, такого компонента, как композитор HAL) об изменениях в профиле изображения. |
IPictureProfileAdjustmentListener.aidl | Интерфейс прослушивателя, который HAL использует для уведомления инфраструктуры об изменениях, выполненных на аппаратном уровне, например, когда пользователь изменяет настройки напрямую с помощью аппаратного пульта дистанционного управления. |
PictureParameter.aidl | Объединение AIDL, определяющее все стандартные параметры изображения, такие как контрастность и резкость, которые можно настраивать. |
PictureProfile.aidl | Пакет AIDL, представляющий объект PictureProfile на уровне HAL, содержащий идентификатор профиля и связанные с ним параметры. |
ISoundProfileChangedListener.aidl | Интерфейс прослушивателя, который фреймворк использует для уведомления HAL об изменениях в звуковом профиле. |
ISoundProfileAdjustmentListener.aidl | Интерфейс прослушивателя, который HAL использует для уведомления инфраструктуры об изменениях звука, выполненных на аппаратном уровне. |