Lien de la note Hackmd
Que faire ?
Identifier les repetitions
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Optimiser leur codage de rouce
Dessiner le moins possible
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
2x les memes dessins pour chaque oeil
On va decimer ce qui n'est pas important
- Spatialement ?
- Temporellement ?
Detruire selectivement:
- En fonction de l'application: TV, DVD/BD, streaming
- Compromis qualite <=> debit
Compression entropique (compromis qualite)
- Huffman (CAVLC)
- Arithmetique (CABAC)
Codec Image
JPEG
Le veteran: Join Photographic Experts Group (1992)
- Limitations de la vision humaine
- Decoupage en blocs
- Transformation DCT
- Quantification des coefficients
- Lecture Zig-Zag
- Huffman
- Decoupage en blocs
- Transformation DCT
- Quantification des coefficients
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Exemple
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Bloc DCT
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Parcours Zig zag
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
- Codage RLE: paires {Valeur, Nombre}
- EOB
- Image animee:
Codec Video
MPEG-1
Le pere fondateur
- Motion Pictures Experts Group (1993)
- Base sur JPEDG et H.261 (NetMeeting, PSX FMV)
CF. JDG les jeux FMVs
- Support:
- Stockage numerique: VCD
- Reseaux fiables
- En pratique
- ("NTSC") / ("PAL")
- 30 i/s
- YUV MPEG-1
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Blocs, Macroblocs
- Bloc: matrice de pixels
- Aggregation en macroblocs
- MB-Luma: 4 blocs
- MB-Chroma: bloc U + 1 bloc V
- => 1Mb complet = 4 blocs de Luma + 2 blocs Chroma
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Slices
- Suite de macroblcos
- Sans recouvrement
- => Partition de l'image
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
- Multiusage
- Facteur de quantification individuel
- Synchronisation (start codes)
Pictures
- Suite de slices
- Start code
- Prediction full / half pel
- Types: I, B, P, D
"Intra": I
- Quasi-JPEG
- Reference: elle-meme
- Quantification par defaut ("intra") surchargeable
- Macroblocs intra, codage
Difference entre images
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Le lapin apparait d'une image a l'autres
Image 1
- Traitement par blocs
- Recherche de mouvement
- Calcul des residus
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Image 2
- Vecteurs de mouvement (pixel, demi-pixel)
- Residus
- Quantification nonintra
Exemple: Big Buck Bunny
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Vecteurs de mouvements
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Prediction IP
On a des images qui dependent les unes des autres
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
Avantages:
- Debit§ < Debit(i)
- Aucune latence
Inconvenients:
- Decoder une P => conserver la I et les P precedents
- Prediction + quantification =>
Prediction IBP

Avantages
- Debit(B) << Debit§
- "Lisse les erreurs" entre I et P
- B bidirectionnelle => moyenne des reconstructions
Inconvenients:
- Decoder une B: garder les I et P apparentees
- Ordre de decodage ordre affichage
- Latence
- Zapper: besoin d'intercaler des frequemment
- "Group Of Pictures"

- Suite d'image avec au moins une
- Parametres:
- : distance entre une et une
- : distance entre deux
Ordre affichage vs decodage
- DO: Display Order - CO: Coding Order
- A cause des B,
- Supposons ces images en DO:

- L'ordre des GOP correspondant est (en CO):


- Resolution
- PAR
- Frame rate
En resume

Encodeur MPEG-1

Convoyer du son et de la video en meme temps
MPEG Program stream
- Fichier composite contenat:
- 1+ flux audio elementaire
- 1+ flux video elementaire
MPEG PES
Packetized Elementary Stream

PES:

- Flux elementaire decoupe
- Stream ID
- CRC
MPEG Program Stream
- Sequence:
- Pack header
- System Clock Reference
- = Horloge createur PS (pour synchro PTS)
- Pack: Suite de PES

- Convient pour un support fiable (VCD, DVD)
- Pas adapte a la diffusion de chaines de TV (broadcast)
- Peu resistant au BER
- Une seule base de temps (SCR)
MPEG-2: Le premier codec video
- Objectif: polyvalence applicative
- Broadcast DTV SD, HD (DVB, ATSC)
- Home video (DVD, PVR)
- Videoconf
- Differences avec MPEG-1
- Profils et niveaux (7)
- Entrelacement
- Scalabilite (pseudo-HLS)
- Plusieurs vues
Profils et niveaux MPEG-2

- SDTV, DVD, MP@ML
- SDTV Studio: HP@ML
- HDTV: MP@H14
Entrelacement MPEG-2

- + Topness bit
- Field individuels

C'etait bizarre et ca fait chier

- Ordre arbitraire
- Peu commode
Codecs et applications

Convoyer plusieurs chaines: MPEG-2 Transport Stream
- Decoupage PES en paquets de 188 bits
- Multiplexage pour broadcast
- Packet IDentifier (PID)
- Program Specific Information (PSI)
- Program Allocation Table (PAT)
- Program Management Table (PMT)
- Horloge: Program Clock Reference (PCR)
MPEG-2 TS
- Decoupage PES en paquets de 188 bits
- Multiplexage pour broadcast
- Packet Identifier (PID)
- Program Specific Information (PSI)
- Program Allocation Table (PAT)
- Program Management Table (PMT)
- Horloge: Program Clock Reference (PCR)


Demultiplexage MPEG2-TS
- PSI (PAT + PMTs) repetes regulierement
- Choix d'une chaine
- Choix d'un PID de PMT and la PAT
- Recuperation de la PMT correspondante
- Filtrage des PIDs decrits dans la PMT
- Assemblage PES correspondants
- Extraction ES + PT
- PTS : TS Image
PCR
- Distinguer PCR de PTS
- PTS: TS image
- Cadence d'affichage des images
- PCR: "heure de l'encodeur"
- Synchronise le decodeur (STC) avec l'encodeur
- En longevite (Heures)
- Indispensable pour du streaming realtime (DVB-S/C/T)
- Comparable a SCR pour un MPEG-PS (CVD, DVD)
Streaming
- Streaming implique:
- Producteur
- Consommateur
- Fifos
- Realtime implique:
- Flux tendu
- Fifo limitees (faible buffering)
- Synchronisation producteur et consommateur
STC VS PCR FIGHT
Pas de synchro STC PCR ?
- STC PCR
- Decodeur consomme plus vite que prevu
- Que se passe-t-il ?
- Drainage des FIFOs A/V
- Video: saccades / ralentissements
- Audio: micro-silences / repetitions
- STC PCR
- Decodeur consomme plus lentement que prevu
- Que se passe-t-il ?
- Buffering limite blocage impossible
- Depassement des FIFOs
- Perte de paquets
- Flux elementaires discontinus
- Audio: blips, squeals, silences
- Video: mosaiques, prediction surrealistes
Synchronisation STC PCR
- Besoin d'asservir STC a PCR
- VCXO: Voltage COntrol Xtal Oscillator
- Mesurer diff = STC - PCR
- Asservir les cloks A/V correspondantes
- Audio:
- Reguler la vitess du decodeur
- Controle du remplissage de la fifo de samples
- Video
- Reguler la vitesse du decodeur
- Controle de la vitesse de production des pixels pour l'affichage
H.264 Le champion
Objectifs
Reprendre les applications de MPEG-2
Couvrir tous les nouveaux usages:
- Disques optiques avances (BD, HD-DVD)
- Streaming actif (VOD, VCONF)
- Enregistreurs embarques
- Stereoscopie
Nouveautes
Nouveau protocole: Network Abstraction Layer
- Limite les repetitions
- S'adapte aux moyens de transmission
Nouveaux outils d'analyse d'image
- Macroblocs plus fins
- Predictions plus elaborees
- Filtrage a l'encodage des MV
Nouveaux compresseurs entropiques
- CABAC:
- Codage arithmetique binaire
- Intervalles adaptatifs par modeles statistiques

- CAVLC
- VLC type Huffman
- Dictionnaire adapatatif par rapport aux blocs voisins
Historique
- 1998: Initiative VCEG H26L
- 2001: MPEG + VCEG = Joint Video Team
- 2003: Finalisation premiere ebauche
- 2005: Fidelity Range Extension
- 2007: Scalable Video Coding
- 2009: Multiview Video Coding
Arithmetique
- Integer DCT
- Calculs entiers
- Plus simples (que MPEG-2)
- Entierements specifies
- Reconstruction exacte
NAL
Network Abstrasction Layer
- NAL: Objets semantiques du flux video
- VCL: Video Coding Layer
- NAL VCL: images, macroblocs, MVs, coefficients IDCT
- NAL Non-VCL: parametres, metas
- Decouplage NAL vs mode d'envoi:
- Byte-Stream : signalisation par start codes (~MPEG-2)
- Packer-Transport
- Pour reseaux (RTP)
- Le protocole sous-jacent sait quel NAL il envoie/recoit
Exemples
Quelques NAL
- IDR: Instant Decoder Refresh (VCL)
- Contient seulement une nouvelle image
- synchronisation du decodeur avec parsing minimal
- Besoin prealable de metas non-VCL
- SPS: Sequence Parameter Set (non-VCL)
- Profil, niveau, resolution, cadence
- ~ MEPG-2 Sequence Header
- PPS: Picture Parameter Set
- Codage entropique, mode de prediction, groupe et ordre des slices, filtrage de blocs
En resume

ASO
- Les slices peuvent etre envoyees dans le desordre
-
- non continument dans le temps
- Avantages
FMO
Flexible Macroblock Ordering
- Partition des MB par motifs
- Type 0: Interlaced: Lignes
- Type 1: Dispersed
- Type 3: Foreground: par zones (ROI)
- Explicitement par l'encodage

Avantages
- Forme de segmentation
- Adaptation a la nature du contenu
Inconvenients
- Pas dans tous les profils
Prediction Inter
Partitions de MB et sous-MB

References multiples:
- 16 en theorie
- 5 a 6 en pratique
- Ponderations possibles (fdes)

Motion Vectors au quart de pixel pres:

Prediction Intra
- Prediction spatiale:
- INTRA
- 9 directions de recherche
- Pour sous-blocs

- INTRA
- Pour regions plus lisses / BF

Filtrage in-loop

In-loop deblocking filter
- Filtrage frontieres Luma ou
- (resp. Chroma % sampling mode)
- Filtrage depend de la structure du bloc:
- Plusieurs references ? F++
- Frontieres intra et/ou inter ? F++
- Frontieres de MB ? F++!!
- Contours ? F–
Avantages
- Encodeur et decodeur fournissent la meme image (pas un post)
- Meilleurs MV

Inconvenients
PAFF
Picture Adaptative Frame/Field
Frame Mode (MPEG-2)

Field mode: l'un sous l'autre

MBAFF
Paire de MBs:
- Mode frame: lignes progressives
- Mode field: lignes entrelacees

Avantages
- Integrite spatiale maximum
- Prediction MV TOP BOT possible pour une paire de MBs en mode field
- Pas de MV TOP BOT pour une paire de MBs en mode frame
- Indices de mouvement
H. 265 / HVEC

Objectifs
- Debit /= 2
- Scalabilite des calculs
- Simplification
- Parallalisation
- 4K, 8K, 120 i/s
- Free Viewpoint (VR)

- 10/12 bpc (HDR)
- Simule la sensation d'eblouissement


Historique
- 2007-2009: Rivalites MPEG - VCEG
- Rivalites MPEG - VCEG
- MPEG HPC : mauvais resultats
- Union JVT VC
- 2010:
- Janvier: Appel a propositions
- Avril: tests, Nommage HEVC
- Octobre: Premiere ebauche
- 2013:
- Janvier: Ebauche finale
- Avril: Standard ITU
- 2014:
- Avril: Ebauche V2
- MV-HEVC, Rext, Scalability
- Octobre: V2 approuvee
- 2015:
- Janvier: Publication officielle
- Avril: V3 approuvee
- Puis definition Screen Contents: ACT, AMVR, IntraBC, Palette
- 2016:
- Juin: V4 refusee
- Decembre: V4 approuvee (Extension Screen Contents)
Principes
Decouplage enCodage Prediction Transformation
- CTU: Coding Tree Unit
- "Macrobloc" haut niveau
- , ,
CU
Partition carree d'une CTU

PU

Intra:
TU
- Independante de la partition PU

Ressemble a …
Une TU peut couvrir plusieurs PU

Ou une partie de PU

Ou plusieurs parties de PU
Outils
- 33 Modes de prediction intra
- 9 pour H.264
- Most Probable Modes

Slices et Tiles

- Tiles
- Partition rectangulaire de l'image
- Header/sequence

- Slices in Tiles, Tiles in slices: Video Split

- Wavefront parallel processing
- Slices divisees en lignes de CTU
- Pipeline multithreadable

Strategie de parallelisation
Filtrage
- Deblocking Filter
- SAO: Sample Adaptative Offset
- Filtre non-lineaire post-DBF
- Reduit les distorsions locales
- Categorie des samples selon voisinage
- Moyenne, contour, min, max
- LUT / index d'offset
Reduction des effets d'aplats (banding)

SAO
Original:



Epilogue
Autres CODECS
- MPEG/VCEG/JVT: Versatile Video Codec
- ITU Universite Industriels
- Evolution de H.265
- Debit
- Finalise 07/2020
- Encodeurs dispo (09/2021)
- Licences, royalties… comme HEVC
- Alliance for Open Media: AV1
- Amazon, Google, Samsung, ARM
- Temps d'encodage >>> VVC
- S'ameliore avec ML (Google)
- En deploiement:
- Netflix: depuis 2018
- Android TV 10: obligatoire
- Twitch: 2022
Evolution du marche
- Changer de code $
- Nouveau HW + SW
- Nouvelle conso (W)
- Nouvelles box utilisateur
- Bandes passantes plus importantes
- Fibre, 4G, 5G, 802.11ax
- taux de compression en second plan (cf H.264)
- Nouveau
- Netflix, Hulu, Amazon, Apple TV…
- Veulent le code "magique"
- Pour toutes les box
- Dont la licence est la moins chere (cf AV1)
Evolution du streaming
- Trivia
- du trafic internet
- $\color{green}{\text{Netflix}: \sim$ 2.25 B / an}$
- 2018: +50%, 2019: + 59%, 2020: +47%
- 300 MT /an (~Espagne)
- des emissions mondiales
- Questions financieres et sociales evidentes