Cadre de qualité du contenu multimédia

Le framework Media Quality est introduit dans Android 16 pour Android TV dans le but d'établir une API standardisée pour les ajustements de la qualité d'image (PQ) et de la qualité audio (AQ). L'objectif principal est de fournir une approche unifiée de ces ajustements sur différents appareils Android TV. Ce framework standardisé vise à simplifier le développement pour les développeurs d'applications, les fabricants d'équipement d'origine (OEM) et les fournisseurs de systèmes sur une puce (SoC) en offrant un ensemble cohérent d'API Android. Pour les fournisseurs de SoC en particulier, il permet au framework Android de gérer la configuration PQ et AQ, ce qui réduit la charge de travail liée à la collaboration avec différents développeurs d'applications.

En fin de compte, pour Google et la plate-forme Android, cela permet de réduire la fragmentation, d'améliorer la qualité et l'évolutivité, de fournir de nouvelles fonctionnalités et de jeter les bases d'une interface utilisateur unifiée AQ/PQ et d'une expérience utilisateur améliorée.

Le framework Media Quality prend en charge différents cas d'utilisation pour améliorer l'expérience de visionnage de la télévision. Il convient de noter que les profils et les paramètres peuvent être gérés par nom de package (application) et par ID d'entrée. De plus, les profils peuvent être créés par des applications système ou par d'autres applications figurant sur la liste d'autorisation. Les profils ne peuvent être mis à jour ou supprimés que par leur propriétaire. Plus précisément, le framework gère les profils d'image et de son. Les paramètres d'image incluent, par exemple, la luminosité, le contraste et la netteté. Les paramètres audio incluent, par exemple, les basses et les aigus. Ces profils peuvent être appliqués dans différents contextes, y compris la définition de profils par défaut globaux, la diffusion de profils via MediaCodec, la définition de profils par défaut d'application pour des applications multimédias spécifiques et la définition de profils d'image d'entrée TV pour des entrées spécifiques telles que HDMI. Le framework prend également en charge les changements d'état, ce qui permet d'utiliser différents ensembles de paramètres pour des états tels que HDR, de gérer les profils d'image actifs pour le traitement en cours et de gérer les fonctionnalités de rétroéclairage ambiant.

L'équipe Android collabore avec nos partenaires de l'écosystème pour prendre en charge le framework Media Quality.

Composants

Le framework Media Quality est composé de plusieurs composants clés qui fonctionnent ensemble dans les couches d'application, de framework et matérielles.

Diagramme de standardisation de la qualité d'image et audio

Figure 1. Interactions entre les composants du framework Media Quality

  • Media Quality Manager (API SDK) : API SDK orientée application qui permet aux applications de gérer les profils d'image et de son.
  • Media Quality Service : service système qui contient la logique métier principale, gère les profils, les autorisations et la communication avec la HAL.
  • Media Quality Database : base de données SQLite qui stocke tous les profils d'image et de son.
  • Media Quality Contract : définit les paramètres et les structures de données standardisés utilisés pour la communication entre les applications et le framework.
  • Media Quality HAL : couche d'abstraction matérielle que les fournisseurs de SoC implémentent pour communiquer les modifications des profils d'image et de son au matériel sous-jacent.

Fonctionnalités

Le framework Media Quality prend en charge un large éventail de fonctionnalités pour fournir un système flexible et puissant de gestion de la qualité multimédia.

Gestion des profils

  • Profils gérés par l'application : les applications peuvent créer, mettre à jour et supprimer leurs propres profils pour une expérience personnalisée.
  • Profils par défaut : les applications système peuvent définir des profils par défaut pour des applications ou des entrées TV spécifiques (par exemple, HDMI 1).
  • Profil par défaut global : profil de secours à l'échelle du système qui est appliqué lorsqu'aucun profil spécifique n'est défini.

Workflow global

Les schémas suivants illustrent les séquences d'appels pour les opérations courantes de qualité multimédia.

Créer et appliquer un profil d'image

Créer un profil photo

Figure 2. Diagramme de séquence pour la création d'un profil d'image

  1. Une application système appelle setPictureProfileAllowList() pour accorder à une application multimédia l'autorisation de créer des profils.
  2. L'application multimédia enregistre un PictureProfileCallback pour recevoir des notifications concernant les modifications de profil.
  3. L'application multimédia appelle createPictureProfile() avec un objet PictureProfile.
  4. Le MediaQualityService traite la requête, enregistre le profil dans la base de données et informe l'application de la réussite ou de l'échec via le rappel enregistré (onPictureProfileAdded() ou onError()).

Définir un profil d'image par flux

Ce workflow montre comment une application peut appliquer un profil spécifique à son contenu vidéo lors de la lecture.

Définir un profil d'image pour le flux

Figure 3. Diagramme de séquence pour la définition d'un profil d'image par flux

  1. L'application multimédia interroge le MediaQualityManager pour obtenir la liste des profils d'image disponibles.
  2. L'application utilise ensuite MediaCodec.setParameters pour sélectionner et définir le profil souhaité pour le flux.
  3. Le framework communique ce choix à la HAL Media Quality (MQ), en transmettant l'ID du profil et ses paramètres.
  4. Enfin, la HAL MQ envoie ces paramètres à la HAL Composer, qui affiche le flux vidéo avec le profil d'image spécifié.

Définir un profil par défaut global

Seules les applications système peuvent définir le profil par défaut global, qui sert de secours pour tout contenu auquel aucun profil spécifique n'est attribué.

  1. L'application système récupère la liste des profils d'image disponibles à partir du framework.
  2. L'application sélectionne ensuite l'un de ces profils comme nouveau profil par défaut global en appelant setDefaultPictureProfile(id).
  3. Le framework envoie les paramètres de ce profil à la HAL Media Quality, qui applique ensuite les modifications.

API SDK Media Quality

L'API SDK Media Quality fournit les outils nécessaires aux applications pour interagir avec le framework. Le point d'entrée principal est le package android.media.quality.

android.media.quality

Ce package contient les classes principales pour la gestion de la qualité multimédia.

Classe Description
MediaQualityManager Classe centrale pour interagir avec le MQF.
PictureProfile Classe de données représentant un ensemble complet de paramètres d'image pour un mode spécifique.
SoundProfile Classe de données pour les paramètres audio.
MediaQualityContract Classe contenant des constantes pour toutes les clés de paramètres prédéfinies.

MediaQualityManager

Les principales méthodes sont les suivantes :

Méthode Description
createPictureProfile(PictureProfile profile) Crée un profil d'image. Nécessite des autorisations spéciales ou que l'application figure sur la liste d'autorisation.
updatePictureProfile(PictureProfile profile) Met à jour un profil d'image existant. Ne peut être appelé que par le créateur du profil.
removePictureProfile(String profileId) Supprime un profil. Ne peut être appelé que par le créateur du profil.
getAvailablePictureProfiles() Renvoie la liste de tous les profils d'image disponibles.
setDefaultPictureProfile(String profileId) Définit le profil d'image par défaut global. Nécessite l'autorisation MANAGE_GLOBAL_PICTURE_QUALITY_SERVICE.
registerPictureProfileCallback(PictureProfileCallback cb) Enregistre un rappel pour écouter les modifications de profil.

Objet PictureProfile

L'objet PictureProfile encapsule toutes les informations d'un mode d'image donné.

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

La HAL Media Quality est une interface basée sur AIDL définie dans hardware/interfaces/tv/mediaquality/aidl/. Les fournisseurs de SoC doivent implémenter cette interface pour activer le framework Media Quality sur leurs appareils. La HAL sert de pont de communication entre le MediaQualityService du framework Android et le matériel sous-jacent, responsable de l'application des ajustements d'image et de son.

La HAL gère les profils d'image et de son à l'aide de parcelables AIDL. Cela implique de recevoir les modifications de profil du framework et d'informer le framework de tout ajustement effectué au niveau matériel.

Modules

L'interface HAL est composée de plusieurs fichiers AIDL clés :

Fichier HAL Description
IMediaQuality.aidl Interface principale du service Media Quality, utilisée pour définir des écouteurs et découvrir les capacités matérielles.
IPictureProfileChangedListener.aidl Interface d'écouteur que le framework utilise pour informer la HAL (en particulier, un composant tel que la HAL Composer) des modifications apportées à un profil d'image.
IPictureProfileAdjustmentListener.aidl Interface d'écouteur que la HAL utilise pour informer le framework des ajustements effectués au niveau matériel, par exemple lorsqu'un utilisateur modifie un paramètre directement via une télécommande matérielle.
PictureParameter.aidl Union AIDL qui définit tous les paramètres d'image standards, tels que le contraste et la netteté, qui peuvent être ajustés.
PictureProfile.aidl Parcelable AIDL qui représente un objet PictureProfile au niveau de la couche HAL, contenant un ID de profil et ses paramètres associés.
ISoundProfileChangedListener.aidl Interface d'écouteur que le framework utilise pour informer la HAL des modifications apportées à un profil audio.
ISoundProfileAdjustmentListener.aidl Interface d'écouteur que la HAL utilise pour informer le framework des ajustements audio effectués au niveau matériel.