Service de contrôle HDMI-CEC

La norme HDMI-CEC (High-Definition Multimedia Interface Consumer Electronics Control) permet aux produits multimédias grand public de communiquer et d'échanger des informations entre eux. HDMI-CEC prend en charge de nombreuses fonctionnalités, telles que Remote Control Passthrough et System Audio Control, mais l'une des plus populaires est One Touch Play. One Touch Play permet à un périphérique source multimédia d'allumer le téléviseur et de changer son port d'entrée automatiquement, vous n'avez donc pas besoin de rechercher la télécommande du téléviseur pour passer de votre Chromecast au lecteur Blu-ray.

Avec Android 12, le contrôle de l'alimentation de l'écran connecté en HDMI s'aligne sur le contrôle de l'alimentation de l'écran interne. Lorsqu'un périphérique de lecture HDMI se réveille, il tente de réveiller le téléviseur connecté et de devenir la source active actuelle via HDMI CEC One Touch Play. Si l'appareil se met en veille alors qu'il est la source active actuelle, il tente alors d'éteindre le téléviseur connecté.

La prise en charge de HDMI-CEC est généralement facultative. Cependant, la plupart des fabricants ont adopté HDMI-CEC afin que leurs appareils fonctionnent avec les appareils d'autres entreprises. Chaque fabricant implémente la norme HDMI-CEC de différentes manières, de sorte que les appareils ne se comprennent pas toujours et que les fonctionnalités prises en charge varient d'un appareil à l'autre. En raison de cet écart, les consommateurs ne peuvent pas supposer en toute sécurité que deux produits qui revendiquent la prise en charge de la CEC sont complètement compatibles.

La prise en charge de HDMI-CEC 2.0 permet d'améliorer la compatibilité entre les appareils HDMI si les appareils d'envoi et de réception prennent en charge cette version de la norme.

Solution

Avec l'introduction d'Android TV Input Framework (TIF), HDMI-CEC rassemble tous les appareils connectés et minimise les problèmes de compatibilité. Android a créé un service de système appelé HdmiControlService pour soulager ces points de douleur.

En offrant HdmiControlService comme une partie de l'écosystème Android, Android espère fournir:

  • Une implémentation standard de HDMI-CEC pour tous les fabricants, ce qui réduira l'incompatibilité des appareils. Auparavant, les fabricants devaient développer leurs propres implémentations de HDMI-CEC ou utiliser des solutions tierces.
  • Un service bien testé par rapport à de nombreux appareils HDMI-CEC déjà sur le marché. Android a mené des recherches rigoureuses sur les problèmes de compatibilité trouvés parmi les produits et a recueilli des conseils utiles de la part des implémenteurs d'appareils expérimentés dans la technologie. Le service CEC est conçu pour maintenir un équilibre sain entre la norme et les modifications apportées à cette norme afin qu'il fonctionne avec les produits que les gens utilisent déjà.

Conception générale

HdmiControlService est relié au reste du système comme cadre d' entrée TV (TIF), service audio, et le service d' alimentation pour mettre en œuvre les différentes fonctions spécifié par le standard.

Consultez le diagramme suivant pour une description du passage d'un contrôleur CEC personnalisé à une implémentation de la couche d'abstraction matérielle (HAL) HDMI-CEC plus simple.

Diagramme qui montre comment HDMI-CEC a été implémenté avant et après Android 5.0

Figure 1. remplacement du service de contrôle HDMI

Mise en œuvre

Voir le schéma suivant pour une vue détaillée du service de contrôle HDMI.

Image qui montre comment les détails du service de contrôle HDMI

Figure 2. Détails Service de contrôle HDMI

Voici les ingrédients clés d'une implémentation Android HDMI-CEC appropriée :

  • Une classe de gestionnaire HdmiControlManager fournit des applications privilégiées avec l'API. Les services système tels que le service TV Input Manager et le service Audio peuvent utiliser le service directement.
  • Le service est conçu pour permettre l'hébergement de plusieurs types de périphériques logiques.
  • HDMI-CEC est connecté au matériel via une couche d'abstraction matérielle (HAL) pour simplifier la gestion des différences de protocole et des mécanismes de signalisation entre les appareils. La définition HAL est disponible pour les fabricants de périphériques à utiliser pour implémenter la couche HAL.

Remarque: Les fabricants d'appareils devraient ajouter la ligne suivante dans PRODUCT_COPY_FILES en device.mk .

PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.hdmi.cec.xml:system/etc/permissions/android.hardware.hdmi.cec.xml

Selon que votre appareil est un dispositif récepteur HDMI ou un périphérique source HDMI, les fabricants d'appareils doivent ensemble ro.hdmi.device_type dans device.mk pour HdmiControlService fonctionne correctement.

Pour les appareils source HDMI, tels que les appareils Over the Top (OTT) ou Set-top box (STB), définissez :

PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=4

Pour les appareils récepteurs HDMI, comme les téléviseurs à panneau, définissez :

PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=0
  • Un contrôleur de la CCE propriétaire fourni par le fabricant de l' appareil ne peut pas coexister avec HdmiControlService . Il doit être désactivé ou supprimé. Les exigences courantes pour cela proviennent de la nécessité de gérer des commandes spécifiques au fabricant. Le gestionnaire de commandes spécifique au fabricant doit être intégré au service en l'étendant/le modifiant. Ce travail est laissé au fabricant de l'appareil et non spécifié par Android. Notez que toute modification apportée au service pour les commandes spécifiques au fabricant ne doit pas interférer avec la façon dont les commandes standard sont gérées, sinon l'appareil ne sera pas compatible avec Android.
  • L' accès au service HDMI-CEC est gardée avec le niveau de protection SignatureOrSystem . Seuls les composants du système ou les applications placées dans /system/priv-app peut accéder au service. Il s'agit de protéger le service contre les abus de la part d'applications malveillantes.

Supports Android Type TV/Display(0) , Playback device(4) de Audio System (5) Playback device(4) qui peut émettre la commande One Touch Play pour devenir la source active et Audio System (5) qui système de poignées en mode audio et ARC. Les autres types d'appareils (Tuner et Enregistreur) ne sont actuellement pas pris en charge.

HDMI-CEC HAL

L'API HAL HDMI-CEC permet à l' HdmiControlService faire usage de la ressource matérielle pour envoyer / recevoir des commandes HDMI-CEC, configurez les paramètres nécessaires, et (éventuellement) communique avec le microprocesseur dans la plate - forme sous - jacente qui prendra le relais du contrôle de la CEC alors que l'Android le système est en mode veille.

Version Caractéristiques fichiers HAL
1,0 Configurer les données HAL (adresses, fonctionnalités). Envoyez des commandes HDMI-CEC. Enregistrez le rappel pour recevoir des commandes HDMI-CEC et des événements hotplug. IHdmiCec.hal
IHdmiCecCallback.hal
1.1 Présentation des types HDMI-CEC 2.0 @1.1::IHdmiCec.hal
@1.1::IHdmiCecCallback.hal

Essai

Implémentations HDMI-CEC d'appareils sont testés et vérifiés par des tests CTS selon la documentation HDMI-CEC CTS .

HDMI-CEC 2.0

Les appareils source (lecture) et récepteur (panneau TV) Android prennent en charge HDMI-CEC 2.0. HDMI-CEC 2.0 offre une meilleure interopérabilité entre les appareils HDMI, des améliorations de la fonction Remote Control Passthrough et des tests de certification plus poussés. En règle générale, les interactions HDMI-CEC 2.0 avec d'autres appareils sont plus efficaces, ce qui entraîne moins de trafic HDMI-CEC et des interactions plus rapides.

Pour qu'un appareil prenne en charge HDMI-CEC 2.0, la configuration de l'appareil et de l'utilisateur doit être définie pour utiliser HDMI-CEC 2.0. La mise en œuvre de HAL doit également signaler le soutien pour HDMI-CEC 2.0 dans les appels à IHdmiCec#getCecVersion .

Configuration CEC

Comportement HDMI-CEC peut être configuré à la fois du temps de construction (par les équipementiers qui utilisent ODR) et l' exécution (par HdmiControlManager @SystemApi).

Exemples de paramètres HDMI-CEC :

Réglage Option
Si le HDMI-CEC est activé ou désactivé. Activée
Désactivée
Portée des messages de contrôle d'alimentation HDMI-CEC envoyés par un appareil de lecture. À la télévision uniquement
Vers le téléviseur et le système audio
Diffuser
Rien

Pour chaque paramètre actuellement disponible et autorisé, les applications peuvent être interrogées par les applications au moment de l'exécution.