Généralités

Les secrets de l’API Camera2

Pourquoi certaines fonctions de l’appli caméra pro que vous avez téléchargée ne marchent pas sur votre téléphone Android ? La clé du mystère est dans l’API Camera2.

L’API Camera2 est une interface de programmation d’applications (API) fournie par Google dans le SDK (Software Development Kit) d’Android depuis sa version 5.0 (Lollipop). Elle permet d’accéder aux fonctionnalités de la caméra des appareils Android. L’API Camera2 offre aux développeurs un contrôle avancé sur les paramètres de la caméra, tels que la mise au point, l’exposition, la sensibilité ISO, la balance des blancs, le format de sortie d’image, etc. Grâce à elle, les développeurs peuvent ainsi créer des applications photo et vidéo plus avancées et personnalisées pour les utilisateurs d’Android. A condition qu’elle soit correctement implémentée…

Chaque Android est différent

La façon dont elle est implémentée varie en effet d’un appareil à l’autre. Cela est dû à plusieurs facteurs :

  1. Matériel de la caméra : Les différents fabricants utilisent des composants matériels différents pour leurs caméras, tels que des capteurs, des processeurs d’image et des objectifs. Cela signifie que la façon dont l’API Camera2 est implémentée doit prendre en compte les spécifications et les capacités de la caméra.
  2. Personnalisation du fabricant : Les fabricants d’appareils Android peuvent personnaliser l’interface utilisateur de leur système d’exploitation et ajouter leurs propres fonctionnalités logicielles. Cela peut affecter la façon dont l’API Camera2 est implémentée sur leurs appareils.
  3. Version d’Android : Bien que l’API Camera2 soit disponible depuis Android 5.0, les différentes versions d’Android ont apporté des améliorations et des changements à l’API. Les fabricants peuvent implémenter différentes versions de l’API Camera2 sur leurs appareils en fonction de la version d’Android utilisée.
  4. Mises à jour du firmware : Les fabricants peuvent publier des mises à jour de firmware pour leurs appareils, qui peuvent inclure des modifications de la façon dont l’API Camera2 est implémentée.

Tous ces facteurs peuvent entraîner des différences dans la façon dont l’API Camera2 est implémentée sur les différents appareils Android. Les développeurs doivent donc prendre en compte ces différences lorsqu’ils créent des applications utilisant l’API Camera2 pour essayer de garantir la compatibilité de leur logiciel avec un maximum d’appareils. Et c’est mission quasi impossible compte tenu de la spécificité de chaque appareil Android…

La métaphore automobile

L’éditeur de l’application caméra Mcpro24fps en donne une explication joliment métaphorique à la fin de son mode d’emploi .pdf.

On nous pose souvent des questions du genre « Pourquoi la fonction xxx ne marche pas dans votre appli (Mcpro24fps) sur mon smartphone alors qu’elle est disponible dans l’application native ? » La plus fréquente étant « Pourquoi la stabilisation numérique ne fonctionne pas dans Mc24profps sur mon Xiaomi ? »
Pour vous expliquer, nous allons essayer de comparer l’écriture d’une application pour les appareils Android avec la conduite d’une voiture.

Imaginez que vous êtes un pilote (développeur). Vous possédez une voiture (téléphone) de la marque N. C’est le soir. Il fait sombre. Pour arriver à destination (pour enregistrer une vidéo), il faut que les phares soient allumés (stabilisation numérique). Comme toute personne normalement constituée, vous appuyez sur le bouton des phares bien sûr (comme l’explique la documentation de l’API Camera2)… Mais les phares ne fonctionnent pas ! Le voyage de nuit va être difficile !
Le lendemain vous vous rendez dans un service agréé (ouvrez l’application native) et demandez au chef d’atelier (celui qui examine le code) comment allumer les phares. Le bonhomme ouvre le tableau de bord, sous lequel se trouvent de nombreux trous de serrure, sort de sa combinaison une drôle de clé, l’insère dans l’un des trous, la tourne… et les phares s’allument.
Vous êtes bien sûr rassuré puisqu’une solution existe grâce à cette drôle de clé. Malheureusement, l’employé laisse clairement entendre qu’il ne vous la donnera pas et que vos phares ne fonctionneront que si vous l’embauchez pour être votre chauffeur (vous obligeant à utiliser l’application native).

Ça ne vous plaît pas ! Et vous vous mettez en quête de la même clé (en regardant dans les coins cachés de l’application native). (Puisque vous avez compris le code, comment ça marche et où doit être insérée la clé), vous faites finalement appel à un faussaire capable de fabriquer lui-même cette clé (en tentant de réécrire le code correspondant) !

Puis vous revenez, confiant, à la voiture, insérez la clé, la tournez… et voyez alors les rétroviseurs se replier lorsque vous essayez d’allumer les phares ! Vous comprenez alors que vous allez devoir trouver une autre clé pour actionner les rétroviseurs indépendamment des miroirs…

Aujourd’hui les caméras de la plupart des smartphones Android haut de gamme offrent ces mêmes caractéristiques :

60 images par seconde
Ralenti en 120/240 images par seconde
Résolution 8К
Stabilisation numérique
Enregistrement 10 bits
Mise au point manuelle
Etc.

Les développeurs ne cessent de chercher des bonnes clés pour activer toutes ces fonctionnalités. Quand ils en trouvent, ces clés sont souvent limitées à un petit nombre de véhicules (smartphones) spécifiques. Et avouons-le, ils se fichent de savoir si vos rétroviseurs se replient quand vous allumez les phares ! Nous, développeurs, sommes heureux quand nous trouvons des bonnes clés. Mais le plus souvent le résultat est le contraire de ce que nous voulions. Et nous ne sommes pas satisfaits quand les rétroviseurs se rabattent.

Donc, si quelque chose fonctionne entre les mains d’un technicien de service autorisé (une appli native) mais pas entre les mains du conducteur (le développeur d’une appli caméra tierce), la raison est certainement que le garagiste (le concepteur du smartphone) ne veut pas partager la bonne clé. Et pense abusivement qu’il devrait être (avec son appli caméra  le seul conducteur de votre voiture.

Alors avant de nous en vouloir de l’inaccessibilité de telle ou telle fonction, commencez par vous assurer que le constructeur automobile a placé tous les interrupteurs (les paramètres de l’API Camera2) où ils devaient être et qu’ils fonctionnent comme ils le devraient (c’est à dire selon les recommandations de l’API Camera2).

Vérifiez l’implémentation de l’API Camera2

Voilà pour les explications fournies par l’éditeur de Mcpro24fps. Pour les compléter et tester la façon dont l’API Camera2 est implémentée dans votre Android, je vous suggère d’y installer l’appli gratuite Camera2 API Probe. En fonction du niveau d’implémentation de ladite API, vous comprendrez pourquoi FilmicPro ou Mcpro24fps fonctionne imparfaitement sur votre Android chinois, fut-il un modèle haut de gamme et flambant neuf.

 

PS : J’ai eu recours à l’IA pour m’assister dans l’écriture de ce papier… Mais ça n’a pas suffi. J’ai utilisé ChatGPT pour vulgariser les généralités concernant l’API Camera2, puis supprimé et réécrit certains passages. Puis j’ai utilisé un module de traduction pour traduire le long extrait de la métaphore automobile dans le mode d’emploi de Mcpro24fps. Et là, j’ai compris que les Lettoniens qui l’avait rédigé avait de sérieux problèmes avec la ponctuation en anglais : les contresens et faux sens étaient nombreux dans la traduction et j’ai du réécrire les passages qui avaient mal été compris. Tout cela pour dire que 1) les infos des IA doivent être contrôlées et 2) que leur formulation mérite réécriture. A bon entendeur 😉

Laurent Clause

Laurent Clause

Journaliste par vocation, spécialiste des nouvelles technologies depuis la fin des années 80, je suis devenu réalisateur d'images et formateur (à la vidéo en général et à la "vidéo mobile", sur smartphone, en particulier). J'ai enseigné le MoJo à l'Ecole de Journalisme de Sciences-Po Paris et interviens avec ma société Milledix notamment à Gobelins l'Ecole de l'Image, pour Samsa, le groupe CapCom ou aux Antilles et à la Réunion pour Inzy-Learning . J'enseigne l'écriture audiovisuelle, le montage avec FCP X, Adobe Premiere Pro ou Da Vinci Resolve et bien sûr la vidéo mobile, le MoJo (mobile journalism), le tournage avec Filmic Pro, Open Camera ou autres et le montage notamment avec Adobe Rush, LumaFusion ou VN..

Leave a Reply

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.