Depuis l’annonce par Google d’Android Lollipop, les photographes se sont réjouis au vu des nouvelles fonctionnalités listées durant les Google I/O. En effet, la nouvelle version de l’OS arrive avec une API (interface de programmation) complètement réécrite qui change la philosophie d’acquisition photo et vidéo. Pourtant, rares sont les terminaux à pouvoir pleinement profiter de l’API Camera2. Nous allons tenter de comprendre pourquoi et vous proposer de connaître le statut de votre terminal sur la question.

Lollipop-API-Camera-2

En juillet, Vincent a rédigé une analyse détaillée sur la nouvelle API Camera2. Les fonctionnalités sont également décrites dans notre grand dossier Lollipop qui fait un point sur ces nouveautés. Aujourd’hui, nombre d’entre vous ont reçu et installé manuellement des mises à jour vers Android 5.0 Lollipop. De multiples terminaux Nexus par Google, Motorola Moto X ou Moto G, Samsung Galaxy S4, S5, Note 4 sont de la partie. Mais certains d’entre vous ont aussi remarqué sur leur appareil fraîchement mis à niveau que les applications permettant de prendre des photos en mode manuel refusent de le faire ou simplement de s’installer pour cause d’incompatibilité.

Quelles en sont les raisons?

Il faut reconnaitre que Google a mis la barre très haut avec l’API Camera2. Jusqu’à Android KitKat 4.4, l’interface de programmation du module d’imagerie numérique suivait une logique basique : une bonne analogie est que ce sous-système se comportait comme un appareil photo point-and-shoot. Le plus souvent, les réglages se limitaient à des présélections de balances des blancs, compensation d’exposition automatique et la mise au point au doigt. Le reste des actions se résumant à déclencher et arrêter l’enregistrement d’une seule photo à la fois ou bien d’une vidéo dans un mode différent. Les applications photo tierces étaient alors comme la main d’un utilisateur appuyant sur des boutons virtuels sans grand contrôle sur le processus interne de capture, traitement et transformation d’image. On peut qualifier la première API Android Camera comme de haut niveau. 

Avec l’API Camera2 qui s’approche d’une interface bas niveau : idéalement, les applications gagnent un contrôle fin sur la capture, le traitement, l’enregistrement de chaque image composant une photo seule, une prise en rafale ou une vidéo. Les fabricants se sont alors retrouvés avec la tâche compliquée de réimaginer et réécrire presque de zéro les pilotes et couches d’abstraction du module caméra pour l’API Camera2, tout en fournissant également un la même chose pour l’API Camera historique pour des raisons de compatibilité avec la quasi-totalité des applications tierces existantes. 

camera2 API

L’API Camera2 est requise pour réussir les tests de validation Lollipop, ce qui permet de vendre des terminaux certifiés, ayant accès aux applications Google et à l’utilisation commerciale du nom Android™. Les ingénieurs Google ont donc dû fournir une solution technique afin de faciliter la tâche des fabricants désireux d’offrir la nouvelle version d’Android à leurs clients. En effet, non seulement la quantité de travail pour implémenter Camera2 sur un appareil existant est colossale du point de vue d’un fabricant pour une simple mise à jour, mais rien ne garantit que les fournisseurs de solutions d’imagerie (les fabricants de puces Image Signal Processor) fournissent ce nouveau type d’accès aux puces existantes déjà vendues. Pour cette raison, l’API Android Camera2 est à multiples facettes, et se comporte elle-même comme une solution à trois niveaux. 

Les niveaux de support de Camera2

Étudions la documentation pour programmeurs Android, disponible sur developer.android.com.

FULL : Support complet pour Camera2

  • Capture d’images ou vidéo à 30 images par seconde (20 minimum) en pleine résolution capteur.
  • Contrôle des paramètres de prise de vue et traitement pour chaque image individuelle.
  • Contrôle manuel du capteur: durée d’exposition, gain ISO.
  • Contrôle du traitement d’image : rendu des couleurs, courbe de contraste et gamma, traitement du bruit.
  • Recadrage libre en taille et position.
  • Au moins trois formats de sortie de tampon (par exemple JPEG, YUV 4:2:0, NV21)
  • La capacité de lister et autoconfigurer les formats de sortie vers tampons selon une liste documentée de ce qui est supporté en terme de formats et délais.
  • Une plage définie de temps d’exposition choisi manuellement ainsi que le maximum dont le matériel est capable.

À noter : la capacité d’accéder aux valeurs brutes lues depuis le capteur pour la photographie RAW et les métadonnées nécessaires pour les empaqueter en un DNG standard ne font pas partie de ce qui est requis pour considérer une implémentation Camera2 comme FULL.

Un exemple qui surprend à moitié est la tablette Nexus 9, puisque l’API Camera2 annonce le support de la capture RAW mais dont le DngCreator échoue, car les métadonnées nécessaires comme les matrices de conversion d’espace de couleur sont manquantes.

LIMITED : Support partiel de Camera2

Les appareils annonçant ce mode profitent d’une implémentation réelle de l’API Camera2, mais tout ce qui est requis pour FULL n’est pas supporté. Soit parce que le travail n’a pas été fini, soit parce que le capteur, l’optique ou le processeur d’image n’ont pas les capacités suffisantes.

LEGACY : Un enrobage autour de l’API Camera historique

C’est ce qu’on va voir le plus souvent sur les smartphones et tablettes qui ont été conçus et commercialisés avant la publication de Lollipop, même s’ils sont mis à jour par leur fabricant. Celle-ci n’offre pas de fonctionnalité supplémentaire et permet seulement aux nouvelles applications écrites pour l’API Camera2 de fonctionner.

Une APK pour tester la compatibilité de son terminal avec l’API

Quels sont les appareils compatibles complètement ou partiellement avec l’API Camera2 ? Malheureusement, il n’y a pas de liste officielle et il faudra donc vérifier au cas par cas. J’ai donc créé pour l’occasion une application minimaliste (uniquement pour Lollipop) vous permettant de savoir quel type de support offre votre appareil avec la nouvelle API. N’hésitez pas à télécharger l’application à cette adresse et partager vos découvertes dans les commentaires.

API Camera 2 Test

On peut espérer que la majorité des fabricants rendront leurs appareils compatibles avec le niveau complet de l’API Camera 2, toutefois rien ne le garantit. Le Mobile World Congress qui approche nous donnera certainement un aperçu de ce qu’on peut attendre cette année en termes de photographie mobile et on tentera de tester les mobiles avec notre application. L’API Camera2 étant très puissante, son support complet déterminera en grande partie les innovations par les développeurs tiers à venir.