Lien de la note Hackmd

Que faire ?

Identifier les repetitions

  • Spatiales
  • Temporelles

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
    • HF
    • Chroma
  • Decoupage en blocs
    8×8
  • Transformation DCT
  • Quantification des coefficients
  • Lecture Zig-Zag
  • Huffman
  • Decoupage en blocs
    8×8
  • 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}
  • 79;0;2;{1;3};{0;2};1;
    EOB
  • Image animee:
    • Motion JPEG
    • DV

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
    • 352×240
      ("NTSC") /
      352×288
      ("PAL")
    • 30 i/s
    • YUV
      4:2:0
      MPEG-1
    • 1,5Mbs

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
    8×8
  • Aggregation en macroblocs
    • MB-Luma: 4 blocs
      ×8=16×16
    • MB-Chroma:
      1
      bloc U
      8×8
      + 1 bloc V
      8×8
    • => 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
    • DC: DPCM
    • AC: Huffman

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)
    • balle
  • Residus
    • Lapins
    • Yeux
  • Quantification nonintra
    • uniforme

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 =>
    \colorredpropagation d'erreur

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
    \colorredRAM
  • Ordre de decodage
    ordre affichage
  • Latence
  • Zapper: besoin d'intercaler des
    I
    frequemment
  • "Group Of Pictures"

  • Suite d'image avec au moins une
    I
  • Parametres:
    • M
      : distance entre une
      I
      et une
      P
    • N
      : distance entre deux
      I

Ordre affichage vs decodage

  • DO: Display Order - CO: Coding Order
  • A cause des B,
    CODO
  • Supposons ces images en DO:

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

Sequence Header

  • 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
  • \colorredPTS/DTS
  • 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

  • Frame entrelacee

  • + 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

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)

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
        • \colororangeVariations Pixel Clock de sortie
        • \colororangeTolerance en analogique ("effet de volant")
        • \colorredTOUCHY en HDMI !

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
    • 4:2:2
    • 4:4:4
    • bit depth > 8
  • 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
      • Changent rarement
    • 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

Arbitrary Slice Order

  • Les slices peuvent etre envoyees dans le desordre
    • non continument dans le temps
  • Avantages
    • Limite l'impact

FMO

Flexible Macroblock Ordering

  • Partition des MB par motifs
  • Type 0: Interlaced: Lignes
  • Type 1: Dispersed
    • En sequnces
  • Type 3: Foreground: par zones (ROI)
  • Explicitement par l'encodage

Avantages

  • Forme de segmentation
  • Adaptation a la nature du contenu
  • \colorgreenResout des cas difficiles
  • \colorgreenDispersion des impacts BER

Inconvenients

  • Pas dans tous les profils

Prediction Inter

Partitions de MB et sous-MB

References multiples:

  • 16 en theorie
  • 5 a 6 en pratique
  • \colorgreenMoins de residus
  • Ponderations possibles (fdes)

Motion Vectors au quart de pixel pres:

Prediction Intra

  • Prediction spatiale:
    • INTRA
      4×4
    • 9 directions de recherche
    • Pour sous-blocs
      4×4

  • INTRA
    16×16
    • Pour regions plus lisses / BF

Filtrage in-loop

In-loop deblocking filter

  • Filtrage frontieres Luma
    8×8
    ou
    4×4
  • (resp. Chroma % sampling mode)
  • \colorredPendant l'encodage des MV
  • \colorredObligatoire
  • 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
    • \colorgreenResidus --
  • \colorgreenQualite perceptuelle +++

PSNR identique ?!

Inconvenients

  • \colorredComplexite
  • En baisse vu le benefice

PAFF

Picture Adaptative Frame/Field

Frame Mode (MPEG-2)

Field mode: l'un sous l'autre

MBAFF

Macro Block Adaptative..

Paire de MBs:

16×32

  • Mode frame:
    32
    lignes progressives
  • Mode field:
    2×16
    lignes entrelacees

Entrelance par parties

Avantages

  • Integrite spatiale maximum
  • Prediction MV TOP BOT possible pour une paire de MBs en mode field
    • \colorgreenPrecision++
  • Pas de MV TOP BOT pour une paire de MBs en mode frame
    • \colorgreenFrugalite++(16%)
  • Indices de mouvement
    • \colorgreenDesentrelacement++
      ©

H. 265 / HVEC

Objectifs

Ceux de H. 264

  • 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
    • 16×16
      ,
      32×32
      ,
      64×64

CU

Partition carree d'une CTU

PU

Partition de la CU

Uniquement la prediction

Intra:

  • CU == PU
  • Sauf au dernier

TU

Transformation Unit

  • Parition de la CU

Uniquement les residus

  • 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
      • Indexation dynamique
      • \colorgreenMoins de prefixe (2b vs 5b)

  • IDCT:
    • 4×4
      ,
      16×16
      , etc.
    • ~IDST
      4×4possible

Slices et Tiles

  • Slices
    • Comme H.264
      • Headers individuels
      • \colorgreenLimitations de l'erreur
      • \colorredJonctions imparfaites

  • Tiles
    • Partition rectangulaire de l'image
    • Header/sequence
      • \colorgreenDecodage parallelisable
      • \colorgreenROI/VCONF

  • Slices in Tiles, Tiles in slices: Video Split

  • Wavefront parallel processing
    • Slices divisees en lignes de CTU
    • Pipeline multithreadable
    • \colorgreenEfficace
    • \colorredIntensif

Strategie de parallelisation

Filtrage

  • Deblocking Filter
    • Plus simple que H.264
      • Grille
        8×8
      • \colorgreenParallelisable
  • 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:

\colorredSANS

\colorgreenAVEC

Epilogue

Autres CODECS

  • MPEG/VCEG/JVT: Versatile Video Codec
    • ITU Universite Industriels
    • Evolution de H.265
    • Debit
      40%
    • 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
    • 60%
      du trafic internet
    • $\color{green}{\text{Netflix}: \sim$ 2.25 B / an}$
    • 2018: +50%, 2019: + 59%, 2020: +47%
    • 300 MT
      CO2
      /an (~Espagne)
    • 1%
      des emissions
      CO2
      mondiales
    • Questions financieres et sociales evidentes