VP9 est un codec vidéo ouvert et sans redevance[4] 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.
Le développement de VP9 a commencé au troisième trimestre 2011 [5],[6].
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[7]. Un autre objectif pour le VP9 est d'obtenir une meilleure capacité de compression que le H.265/HEVC[6].
Le , un support préliminaire du codec VP9 a été ajouté au navigateur web Chromium[8],[9],[10]. Au mois d', Google sort la version 29.0.1547 de Chrome[11], avec le support du VP9 dans sa version finale.
Le , un décodeur natif du VP9 est ajouté au projet FFmpeg[12] et le au projet Libav.
Le , Mozilla ajoute le support du codec VP9 dans son canal Nightly (Firefox 28)[13]. Il est sorti avec Firefox 28 le [14].
Le , 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[15],[16].
VP9 apporte des améliorations par rapport à VP8[5],[6]. 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[5],[6]. Une structure quadtree peut être utilisée avec les superblocs[5],[6]
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)[18]. 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é[Quoi ?]. 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