Dans les parties 1 et 2 de cette série de blogs, nous avons abordé le VP9 et la mise en œuvre de l'évolutivité. Dans cette dernière partie, nous aborderons le codec lui-même et les avantages de la nouvelle implémentation de VP9 évolutive de Vidyo.

Lire la suite - Améliorer VP9 sans le changer - Partie 1
Lire la suite - Améliorer VP9 sans le changer - Partie 2

L'asymétrie entre la complexité du codeur et celle du décodeur remonte aux toutes premières conceptions de codeurs vidéo numériques de la fin des années 1980 (H.261) et c'est une caractéristique inhérente aux structures hybrides prédictives à compensation de mouvement qui ont été utilisées par le passé. La sophistication de l'encodeur a toujours été un point de différenciation entre les implémentations de codecs, de nombreuses sociétés développant leur propre "sauce secrète" pour améliorer la qualité et l'efficacité de la compression.

C'est souvent un point de confusion pour les non-spécialistes. Les normes de codage vidéo normalisent le processus de décodage et la syntaxe du flux binaire, et non le processus d'encodage. Les responsables de la mise en œuvre disposent d'une grande liberté pour optimiser le processus d'encodage. Il est intéressant de noter que dans le codec MPEG-2 utilisé dans les DVD, les performances du codeur ont presque doublé (c'est-à-dire la moitié du débit binaire pour la même qualité) en l'espace de 10 ans, sans que la syntaxe du flux binaire sous-jacent n'ait été modifiée. Les encodeurs ont simplement été en mesure de prendre des décisions plus intelligentes quant à l'utilisation de leurs bits. Cela s'explique à la fois par le fait que les ingénieurs ont amélioré la conception des systèmes, mais aussi par l'augmentation de la puissance de traitement disponible pour effectuer ces calculs, même en temps réel.

Vidyo a récemment lancé sa propre offre Platform-as-a-Service (PaaS), dans le cadre d'un partenariat avec l'industrie de l'audiovisuel. vidyo.io. En tant que PaaS, il est conçu pour être facilement accessible à tous - il suffit de télécharger le SDK disponible gratuitement pour son langage de programmation et son environnement, et de connecter le code à sa propre application. Le service est basé sur le cloud et facturé en fonction de l'utilisation. Pour en savoir plus sur l'ingénierie qui sous-tend vidyo.io, consultez le site suivant mon blog.

Il était important pour nous de pouvoir proposer un codec offrant une prise en charge complète de l'évolutivité, exempt des exigences actuelles en matière de redevances et offrant une interopérabilité native avec WebRTC. Nous aurions pu utiliser la version open source du VP9 évolutif disponible dans le cadre du projet WebM, mais nous avons décidé de développer une implémentation du VP9 évolutif à partir de zéro.

Vidyo a toujours mis l'accent sur une expérience et des performances de haute qualité sur la gamme la plus large possible de plates-formes, du mobile aux systèmes 5K haut de gamme et au-delà. Au fil des ans, nous avons acquis une grande expertise dans la conception d'encodeurs vidéo et le développement d'implémentations optimisées sur diverses plateformes, spécialement conçues pour les communications interactives en temps réel. Nous voulions également pouvoir utiliser les mécanismes de résilience et de dissimulation des erreurs que nous avons intégrés dans notre plateforme, dont certains sont brevetés et vont bien au-delà de ce qui est disponible dans les projets open source, y compris WebRTC.

La performance mobile revêt une importance particulière pour nous. Étant donné que l'encodage est effectué à l'aide d'un logiciel, il est impératif de tirer le maximum de performances de l'unité centrale et de la batterie disponibles. En fait, comme nous le montrons ci-dessous (vous pouvez consulter le tableau 1), même dans son mode de fonctionnement le plus simple (appelé mode CPU 8), la version open source de VP9 (appelée OVP9) n'a pas fourni, lors de nos tests, des performances adaptées au temps réel pour le codage spatialement évolutif de contenu 720p sur les plateformes mobiles habituelles. Les fréquences d'images étaient d'environ 15 fps, soit la moitié des 30 fps généralement requis. C'est ce qui nous a poussés à développer notre propre version optimisée.

Les résultats de nos travaux sont désormais disponibles sur notre site web. vidyo.io PaaS, et sera bientôt disponible sur l'ensemble de la plateforme Vidyo. L'amélioration des performances est impressionnante. Pour le démontrer, nous devons comparer les deux codecs en fonction de trois paramètres : qualité, débit et complexité. Ces trois paramètres s'influencent l'un l'autre, c'est pourquoi, pour effectuer une comparaison correcte, nous devons corriger au moins l'un d'entre eux. Ici, nous allons comparer la qualité des codecs dans leur plage de fonctionnement, ainsi que leur complexité. Les résultats suivants montrent des aspects de nos tests internes dans des conditions spécifiques ; il est évident que d'autres tests ou résultats réels peuvent varier, mais ces résultats démontrent le type d'avantages en termes de performances que notre nouveau codec VP9 peut apporter.

720p 30fps

Figure 6 : Comparaison des performances de différentes versions de VP9 pour une vidéo 720p utilisant 2 couches spatiales et 3 couches temporelles

Figure 6 montre un exemple d'encodage d'une séquence 720p, 30 fps avec 2 couches spatiales et 3 couches temporelles en utilisant les deux versions du codec VP9. Le graphique montre le PSNR (Peak Signal-to-Noise Ratio) en fonction du débit binaire. (Le PSNR est une mesure de la qualité vidéo, plus il est élevé, mieux c'est.) Les chiffres se réfèrent au PSNR de la couche supérieure et au débit binaire total. Tout d'abord, la vidéo est encodée (à l'aide d'un quantificateur fixe) à quatre points de fonctionnement différents en utilisant OVP9 en mode CPU 8. Comme nous l'avons mentionné précédemment, il s'agit du mode de fonctionnement le plus simple de cette implémentation logicielle particulière, c'est-à-dire qu'il utilise le moins de ressources de l'unité centrale et, bien sûr, qu'il fournit l'efficacité de compression la plus faible. Mais même dans ce mode, l'OVP9 n'a pas fourni de performances en temps réel (c'est-à-dire 30 fps) pour 2 couches évolutives à 720p. La même vidéo a également été encodée à l'aide de l'implémentation VP9 de Vidyo (appelée ici VVP9) dans deux modes de complexité différents : faible et moyen. Nous pouvons constater que le VVP9 en mode faible offre des performances identiques ou légèrement supérieures à celles de l'OVP9, tandis qu'en mode moyen, vous bénéficiez d'une amélioration supplémentaire.

Figure 6 nous indique que, dans cette configuration, nous avons obtenu la même qualité de performance que les deux codecs. La comparaison essentielle consiste maintenant à voir à quel coût de traitement nous obtenons cette efficacité de compression. C'est là que les choses deviennent passionnantes. Tableau 1 ci-dessous montre les performances des deux codecs en termes d'images par seconde sur deux plateformes mobiles populaires, un iPhone 6 Plus et un Samsung Galaxy S6 Edge+ (tous deux en mode single thread).

Performances du processeur sur les plateformes iOS et Android

Tableau 1 : Performances du processeur dans les plateformes iOS et Android

Les colonnes de gauche indiquent le nombre absolu de fps, tandis que les colonnes de droite indiquent le pourcentage de la vitesse d'encodage et de décodage OVP9 atteint par VVP9 (dans les deux modes). Nous pouvons constater qu'en moyenne, pour les deux appareils et les deux débits binaires, nous avons obtenu une accélération de 2,7 à 2,8 fois lors de l'encodage, tout en produisant une qualité vidéo légèrement meilleure (PSNR). Dans le cas de l'iPhone, le VVP9 en mode bas a permis de tripler la vitesse. Il convient de souligner que ces résultats se rapportent à un encodage évolutif, avec deux couches spatiales. Cependant, même en mode simple couche, nous avons constaté des accélérations allant jusqu'à 1,7x. Comme indiqué ci-dessus, les vitesses de décodage étaient également plus rapides, mais pas de manière aussi significative. C'est normal, puisque le processus de décodage est beaucoup plus simple et qu'il y a moins de place pour l'optimisation.

L'augmentation significative de la vitesse d'encodage, en particulier, a une incidence directe sur l'autonomie de la batterie des appareils mobiles. Une vitesse d'encodage plus élevée, mesurée en fps, signifie que l'unité centrale de l'appareil a besoin de moins de temps pour encoder chaque image vidéo. Si la vitesse d'encodage est inférieure à 30 ips, comme c'était le cas dans les résultats du test OVP9, cela signifie que même si l'unité centrale passe tout son temps à encoder la vidéo, elle ne peut toujours pas suivre les 30 ips d'un appareil photo classique. Si le taux d'encodage est bien supérieur à 30 fps, comme c'était le cas avec nos résultats VVP9, cela signifie que le CPU a suffisamment de temps pour encoder une vidéo, puis s'occuper d'autres tâches d'application ou simplement se mettre en veille. Cela se traduit immédiatement par une réduction de l'utilisation de la batterie. L'amélioration plus modeste de la vitesse de décodage a un effet similaire sur la consommation d'énergie, mais moins important. L'amélioration totale de la consommation d'énergie dépend également des autres tâches que l'application de communication vidéo doit effectuer, notamment le codage et le décodage audio, la gestion de l'interface utilisateur, etc. Dans les appareils mobiles dédiés à l'encodage vidéo (par exemple, les caméras corporelles portées par les premiers intervenants), les économies réalisées peuvent facilement se traduire par un doublement de la durée de vie de la batterie.

Certaines de ces améliorations sont également présentes dans les applications de bureau. Par exemple, dans un environnement Windows 64 bits, nous avons constaté une accélération d'environ 1,6 à 1,7 fois pour le VVP9 par rapport à l'OVP9 lors de l'encodage du même contenu 720p. (Dans les environnements de bureau, les comparaisons de vitesse de décodage sont moins pertinentes, puisque la vitesse de décodage dans les deux codecs est déjà plusieurs fois plus rapide que le temps réel). Il est évident que les ressources de la batterie et du processeur ne sont pas aussi limitées dans les ordinateurs de bureau que dans les appareils mobiles, mais les gains de performance en matière d'encodage peuvent toujours se traduire par du temps de processeur libéré pour d'autres tâches et/ou une plus grande autonomie de la batterie pour les ordinateurs portables.

Le résultat net pour les utilisateurs finaux de Vidyo est qu'ils peuvent bénéficier de tous les avantages d'un standard ouvert avec une compatibilité totale avec les implémentations existantes basées sur les navigateurs, ou en fait avec n'importe quelle implémentation VP9, tout en bénéficiant de performances nettement meilleures et en étendant de manière significative la capacité de leurs appareils mobiles à encoder de la vidéo avant d'avoir besoin d'être branchés. C'est l'une des grandes forces des normes ouvertes : permettre différentes mises en œuvre qui peuvent toutes interopérer.

Lire la suite :

Améliorer VP9 sans le changer - Partie 1
Améliorer VP9 sans le changer - Partie 2

Skip to content