Система качества мультимедиа, Система качества медиа, Система качества медиа, Система качества медиа

В 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.

Компоненты

Структура качества мультимедиа состоит из нескольких ключевых компонентов, которые работают вместе на уровнях приложения, структуры и оборудования.

Диаграмма стандартизации PQ AQ

Рисунок 1. Взаимодействие между компонентами Media Quality Framework

  • Media Quality Manager (SDK API) : API SDK, ориентированный на приложения, который позволяет приложениям управлять профилями изображения и звука.
  • Служба качества мультимедиа : системная служба, которая содержит основную бизнес-логику, управление профилями, разрешениями и связью с HAL.
  • База данных качества мультимедиа : база данных SQLite, в которой хранятся все профили изображений и звука.
  • Контракт на качество мультимедиа : определяет стандартизированные параметры и структуры данных, используемые для связи между приложениями и фреймворком.
  • Media Quality HAL : уровень абстракции оборудования, который поставщики SoC реализуют для передачи изменений профилей изображения и звука базовому оборудованию.

Функции

Media Quality Framework поддерживает широкий спектр функций, обеспечивая гибкую и мощную систему управления качеством мультимедиа.

Управление профилями

  • Профили, управляемые приложениями : приложения могут создавать, обновлять и удалять собственные профили для индивидуального использования.
  • Профили по умолчанию : системные приложения могут устанавливать профили по умолчанию для определенных приложений или входов телевизора (например, HDMI 1).
  • Глобальный профиль по умолчанию : общесистемный резервный профиль, который применяется, если не установлен конкретный профиль.

Общий рабочий процесс

На следующих диаграммах показаны последовательности вызовов для распространенных операций по обеспечению качества мультимедиа.

Создайте и примените профиль изображения

Создать профиль изображения

Рисунок 2. Диаграмма последовательности создания профиля изображения

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

Установить профиль изображения для каждого потока

Этот рабочий процесс демонстрирует, как приложение может применить определенный профиль к своему видеоконтенту во время воспроизведения.

Установить профиль потокового изображения

Рисунок 3. Диаграмма последовательности настройки профиля изображения для каждого потока

  1. Медиа-приложение запрашивает MediaQualityManager , чтобы получить список доступных профилей изображений.
  2. Затем приложение использует MediaCodec.setParameters для выбора и установки нужного профиля для потока.
  3. Фреймворк передает этот выбор в HAL Media Quality (MQ), передавая идентификатор профиля и его параметры.
  4. Наконец, MQ HAL отправляет эти параметры в Composer HAL, который визуализирует видеопоток с указанным профилем изображения.

Установить глобальный профиль по умолчанию

Только системные приложения могут устанавливать глобальный профиль по умолчанию, который служит резервным вариантом для любого контента, которому не назначен определенный профиль.

  1. Системное приложение извлекает список доступных профилей изображений из фреймворка.
  2. Затем приложение выбирает один из этих профилей в качестве нового глобального профиля по умолчанию, вызывая setDefaultPictureProfile(id) .
  3. Фреймворк отправляет параметры этого профиля в 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 использует для уведомления инфраструктуры об изменениях звука, выполненных на аппаратном уровне.