# Codage vidéo scalable

Scalable Video Coding (SVC) est le nom donné à une norme de compression vidéo développée conjointement par UIT-T et l'ISO. Les deux groupes ont créé le Joint Video Team (JVT) pour développer la norme H.264, ou MPEG-4 AVC (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC). L'objectif de SVC est d'offrir un contenu adaptable ou échelonnable (scalable), c'est-à-dire que le contenu peut être converti une fois et offrir ensuite différents débits avec différentes qualités.

## Historique

En octobre 2003, le groupe Moving Picture Experts Group (MPEG) lance un appel à la communauté scientifique (« Call for Proposals on SVC Technology »). Quatorze projets, dont douze basés sur la compression par ondelettes, sont proposés, les deux propositions restantes étant des extensions de H.264/MPEG-4 AVC. L'une d'elles, proposée par l'équipe image du Heinrich-Hertz-Institut (HHI) est choisie par MPEG comme point de départ de son projet de standardisation de SVC.
En janvier 2005, les groupes MPEG et Video Coding Experts Group (en) (VCEG) se sont entendus pour finaliser le projet SVC comme un amendement de leur standard H.264/MPEG-4 AVC.
En novembre 2008, Google démarre son nouveau service Gmail Video Chat$^,$ qui utilise un codec H.264/SVC. Il représente le premier service à utiliser cette norme pour des applications grand public. Le service est remplacé par Google+ Hangouts en 2012.
En 2011, le site web des développeurs Google Code présente la norme Scalable Video Coding (SVC) comme successeur du chat vidéo RVC en Open Source, représentant le codage le plus populaire en 2010.

## Principes de la scalabilité
### Présentation

La scalabilité (évolutivité ou adaptabilité, en bon français) est la possibilité de représenter un signal à différents niveaux d'information. Le signal est codé dans un seul flux binaire de manière à offrir la possibilité de décoder un flux de base et des flux englobants dont la qualité augmente successivement.
Pour ce faire, trois types de scalabilité sont définis :
* la scalabilité spatiale qui permet d'offrir plusieurs niveaux de résolution,
* la scalabilité temporelle qui permet d'offrir plusieurs fréquences temporelles du signal,
* la scalabilité en qualité qui permet d'offrir différentes qualités d'image.

### Scalabilité spatiale

La scalabilité spatiale correspond au choix de la résolution des images reconstruites (par exemple QCIF, CIF ou SD). La scalabilité spatiale est obtenue au moyen d'une décomposition pyramidale en différents niveaux spatiaux.

### Scalabilité temporelle

La scalabilité temporelle correspond à la fréquence des images du flux vidéo décodé. Les différentes fréquences sont obtenues à l'aide d'une structure hiérarchisée d'images.

### Scalabilité en qualité

La scalabilité SNR (Signal to Noise Ratio, ou Rapport signal sur bruit), ou en qualité, consiste à augmenter le rapport signal sur bruit d'une couche, c'est-à-dire à réduire la distorsion de quantification entre l'image originale et l'image reconstruite. Deux approches sont proposées : FGS (Fine Grain Scalability) et CGS (Coarse Grain Scalability).

#### Scalabilité CGS

Le schéma de SVC permet d'incorporer une scalabilité en qualité à travers une échelle de résolutions spatiales. Chaque résolution spatiale est codée à l'aide d'une nouvelle couche, ce qui entraîne des raffinements sur les données (texture et mouvement).
Pour une même résolution spatiale, la scalabilité en qualité est obtenue en encodant successivement plusieurs couches dites de qualité. Les images de deux couches spatiales successives sont alors à la même résolution mais, codées avec plus ou moins de précision. La première couche ayant la qualité minimum, le pas de quantification est ensuite diminué pour les couches suivantes.

#### Scalabilité fine

La scalabilité fine est obtenue par un raffinement progressif des coefficients transformés à l'intérieur d'une même couche spatiale. La couche de qualité de base correspond au codage des coefficients selon le standard AVC, avec un pas de quantification QP initial qui garantit une qualité minimale acceptable. Cette couche n'est pas scalable.
Les couches de raffinement en qualité suivantes sont obtenues en quantifiant les coefficients du résidu avec un coefficient QP diminué de six, ce qui correspond à une division par deux du pas de quantification.
Le flux comportant les informations de raffinement peut être tronqué en tout point, ce qui permet la scalabilité fine en qualité.