Windows 10 et les webcams, un sujet surmédiatisé

Vous ne l’avez sûrement pas raté, Windows 10 et son Anniversary Update sorti au mois d’août, aurait cassé des millions de webcams. Un titre alléchant, il faut bien l’avouer, mais la réalité demeure nettement plus complexe et – surtout – Windows 10 ne détruit pas les webcams.

La C930, un modèle H.264 populaire

La C930, un modèle H.264 populaire

Expliquer le problème nécessite de détailler quelques points techniques. Premièrement, sur le fonctionnement d’une webcam. La majorité des modèles utilise un lien USB 2.0 pour la transmission des données, qui a un débit de 480 mégabits/s. Nous allons laisser de côté les variantes USB 3.0 et PCI-Express, très rares. 480 Mb/s, ça peut semble beaucoup, mais il s’agit finalement d’une valeur assez faible. Sans même prendre en compte que beaucoup de webcams transmettent de l’audio et que le bus peut être partagé avec d’autres appareils, la bande passante de l’USB 2.0 permet au mieux de faire du 720p à 10 images/s. Chaque point de l’image nécessite 4 octets (les couleurs sont codées sur 32 bits), ce qui donne – à 10 fps – un débit brut de 1280*720*4*8*10 (294 912 000 bits/s). La valeur semble loin du maximum, mais le bus USB 2.0 ne permet pas en pratique de dépasser environ 300 Mb/s. Les webcams capables de faire du 720p à 30 fps ou même du 1080p intègrent donc de la compression au niveau du matériel : la caméra encode l’image, envoie le flux compressé et suppose que le logiciel va décoder le tout. Deux technologies sont couramment utilisées, le MJPEG et le H.264. Le premier encode chaque image de la vidéo en JPEG, ce qui donne un résultat assez bon, mais demande de la puissance lors du décodage et produit un flux vidéo assez lourd. Le second demande un encodeur efficace dans la caméra, mais offre une excellente qualité sans saturer le bus et peut être décodé facilement par n’importe quel appareil moderne.

Deuxièmement, Windows fonctionnait jusqu’à maintenant en mode exclusif avec les caméras USB qui suivaient la norme UVC (USB Video Class, un standard USB supporté depuis Windows XP). Ce mode implique qu’une seule application peut utiliser une caméra à un instant t, et ce jusqu’à Windows 10 (avant l’Anniversary Update). Depuis la version 1607 de l’OS, le comportement a été modifié : un logiciel, le Windows Camera Frame Server, s’intercale entre la caméra et les applications. Son but est de partager la webcam entre plusieurs applications et son développement serait lié à l’HoloLens.

Skype sous Windows 10

Skype sous Windows 10

Ce changement chez Microsoft a impliqué une modification dans les flux : le Windows Camera Frame Server n’accepte actuellement que les caméras qui envoient de la vidéo sans compression. La société argue que décoder plusieurs fois des flux H.264 ou MJPEG demande trop de puissance et a donc décidé que seuls les modes basiques (YUV ou NV12) étaient acceptés. Si votre webcam utilise le MJPEG ou le H.264 (comme les populaires C920 et C930 de Logitech), l’image va se figer dès que la caméra passe dans ce mode. C’est à ce moment que les articles deviennent bien trop alarmistes : une bonne partie des logiciels qui accèdent aux webcams n’utilisent tout simplement pas les modes compressés. Avec ces derniers, les caméras fonctionnent donc parfaitement sous Windows 10, même si la fluidité n’est qu’un doux rêve. Le problème se pose avec des logiciels comme OBS (très prisé des internautes qui streament du jeu vidéo, souvent avec les caméras Logitech haut de gamme) ou avec Skype (qui appartient à Microsoft). Et avec ce dernier, ce n’est pas systématique : les conversations en vidéo démarrent en YUV (sans compression) dans tous les cas et passent ensuite en HD (sur un flux MJPEG ou H.264) après quelques secondes, mais uniquement si le débit en upload le permet. Comme Skype demande 1,2 mégabit/s au minimum pour la haute définition, une partie de la population – celle qui dispose d’une connexion ADSL – ne sera jamais touchée par le problème.

Concrètement, Windows 10 bloque donc les webcams haut de gamme, et uniquement dans certains cas précis, pas les plus courants. Mais que faire si vous êtes dans les malchanceux ? La première solution consiste à attendre une mise à jour de Microsoft. La compagnie a promis une correction pour les caméras MJPEG en septembre, alors que celles qui utilisent le H.264 devront patienter. L’autre va être de désactiver le Windows Camera Frame Server dans la base de registre. Rendez vous dans HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows Media Foundation\Platform avec regedit, ajoutez une clé DWORD 32 bits du nom de EnableFrameServerMode et passez sa valeur à 0. La dernière solution serait de trouver une webcam USB 3.0 (la bande passante élevée du bus permet de transférer du 1080p60 sans compression), mais elles sont rares, les quelques modèles disponibles ne se retrouvent qu’intégrés dans des ordinateurs portables ou des tablettes.

About the Author

Dandu
Espion de Cupertino dans la rédac' de Canard PC Hardware. Aime beaucoup les formats totalement obsolètes ainsi que les technologies bizarres et oubliées. Possède un chien robot, des lapins Wi-Fi et un vrai perroquet.