# VP9

VP9 est un codec vidéo ouvert et sans redevance développé par Google. Au début, au cours de son développement, VP9 a été successivement nommé Next Gen Open Video (NGOV) et VP-Next. VP9 est le successeur de VP8 (créé par On2 avant que Google rachète l'entreprise) et est lui-même remplacé par AV1. Chromium, Chrome, Firefox, Safari et Opera supportent le format vidéo VP9 dans l'élément HTML5 video.

## Histoire

Le développement de VP9 a commencé au troisième trimestre 2011$^,$.
L'un des buts pour le VP9 est de réduire le débit de 50 % comparé au VP8 tout en conservant la même qualité vidéo. Un autre objectif pour le VP9 est d'obtenir une meilleure capacité de compression que le H.265/HEVC.
Le 13 décembre 2012, un support préliminaire du codec VP9 a été ajouté au navigateur web Chromium$^,$$^,$. Au mois d'août 2013, Google sort la version 29.0.1547 de Chrome, avec le support du VP9 dans sa version finale.
Le 3 octobre 2013, un décodeur natif du VP9 est ajouté au projet FFmpeg et le 15 novembre 2013 au projet Libav.
Le 6 décembre 2013, Mozilla ajoute le support du codec VP9 dans son canal Nightly (Firefox 28). Il est sorti avec Firefox 28 le 18 mars 2014.
Le 7 janvier 2014, Ittiam profite du CES pour faire une démonstration de son décodeur VP9 sur des appareils équipés en puce ARM de type Cortex. Ce décodeur, conçu en collaboration avec ARM et Google, met l'accent sur la puissance, l'échelle et la portabilité avec une importance égale pour chacun. Lors du test le décodeur réussit ainsi à faire tourner une vidéo en 1080p à 30fps sur une puce ARM Mali-T604. Celle-ci se trouvant alors sur une carte mère Arndale équipée d'un SoC Exynos 5 dual de Samsung$^,$.
Le 3 avril 2015, Google sort libvpx en version 1.4.0 avec le support du 10-bit et du 12-bit pour la profondeur de couleur, du 4:2:2 et du 4:4:4 pour le sous-échantillonnage de la chrominance et du multithread pour le codage/décodage.

## Détails techniques

* VP9 apporte des améliorations par rapport à VP8$^,$. Ainsi ce codec prend en charge l'utilisation des superblocs de 32×32 pixels et les développeurs souhaitent ajouter des superblocs de 64×64$^,$. Une structure quadtree peut être utilisée avec les superblocs$^,$
* Le codage est très lent (environ 15 minutes de codage pour 1 seconde de film avec un processeur Core i7 2600, dans la version initiale du codec). Depuis 2015, le codage est bien plus rapide par l'utilisation de plusieurs cœurs, grâce à la fonction « tile-columns=nombre » et « frame-parallel=nombre ». Coder simultanément avec plusieurs cœurs a pour effet de très faiblement augmenter le débit tout en en diminuant extrêmement peu la qualité. Par exemple, il est renseigné au plus 7 (0 = mode automatique) pour un 8 cœurs virtuels (8 cœurs virtuels peuvent être dans 4 cœurs matériels) : tâche = 7 (nombre de cœurs virtuels moins un), tile-columns=6 » et frame-parallel=1.
* « vitesse = nombre » (−16 à 16, souvent 1, 2, 3 ou 4), permet de décider de la rapidité du codage.
* « qualité = » (temps réel, bon, top, souvent bon)
* Échantillonneur « quantizer » : q minimum = 0 et q maximum = 63
* 3 modes de débit : « variable en fonction de la qualité » ou « moyen » ou « constant »
* Groupe d'images (GOP) = nombre : intervalle maximum entre images clés