Home TVID: Du pixel a l'ecran
Post
Cancel

TVID: Du pixel a l'ecran

Lien de la note Hackmd

On va decouvrir les principes fondamentaux l’audio et la video numerique.

  • 20h dont 6 de TP
  • TPs de 3h
  • On va faire notre propre decodeur et afficheur video

Plusieurs parties:

  • Fondamentaux de ce qu’est un pixel
    • Qu’est-ce que signifie les resolutions (pourquoi pas des multiples de 10 ? Pourquoi 1080i ? Pourquoi 16/9e ?)
  • Structure d’une image video
  • Cadences
    • Comment on fait pour afficher n’importe quel film a n’importe quelle taille vers n’importe quelle television ?
    • Comment on fait de l’adaptation de cadence ?
  • Entrelacement
    • Ca nous pourri la tete depuis 70 ans
  • Affichage
    • Comment trouver un mode commun d’affichage ?

La suite: standards de compression video

Pixel

Mais encore ?

  • C’est un format
  • Profondeur
    • Combien de bits par composants ?
  • espace de couleur

Pixel aspect ratio

Monde PC: PAR = 1:1

  • Pixels carres

Monde video: PAR >= 1

  • Pixel rectangulaires

Pourquoi ?

On tient ca de l’analogique: pas de resolution

  • Analogique: pas de resolution
  • Numerique: resolutions partout
  • Besoin de correspondance numerique $\leftrightarrow$ analogique

Est-ce qu’on a deja essaye de jouer un fichier VOG d’un DVD tout seul ?

L’image sera plus carree et deformee car on ne lit pas les metadata

Color Space

Generateurs de graphismes RGB

  • Ordis, smartphones, tablettes On Screen Display (OSDs)
    • On Screen Technique: superposition d’affichage comme l’affichage du numero de la chaine quand on zappe

Pourquoi on affiche le nom de la chaine quand on zappe en numerique ?

En analogique, quand on zappait c’etait instantane car il suffisait de changer que quelques parametres pour changer de frequence sans pre-processing C’est juste pour faire attendre les gens, sinon on n’a qu’un ecran noir

Pourquoi certaines box ont une mosaique avec plusieurs flux videos de differentes chaines ?

Car ce n’est pas fait par la box, ce sont des chaines mosaiques pre-composees par l’emetteur On utilise les metadatas pour choisir une chaine sur les mosaiques Certaines mosaiques ne permettent pas de selectionner de chaine

  • ARGB, ABGR
    • A est le canal $\alpha$ (alpha)
    • ABGR est la representation d’Android
  • BGRA, RGBA, …

Video: YUV

  • Images et sequences animees
  • Y: luminance
  • U, V: Chrominance (aka Cb, Cr)
  • Raisons historiques

Est-ce que les premiers signaux analogiques pour la tele etaient en couleur ?

Bien sur que non

Vers les annees 50 on se dit que ca serait bien d’avoir la couleurs

On va faire un truc degueulasse pour que ce soit retrocompatible avec les gens ayant une tele en noir et blanc

Les US avaient NTC qui on cree un standard video de 480 lignes en noir et blanc qui est passe en couleurs en une nuit (et ca a marche !)

Exemple RGB

Qu’est-ce qu’on remarque ?

Le vert est predominant car il est predominant dans la nature Les humains ont un excellent pouvoir d’observation sur le vert (60-70% de notre champ de vision) On voit moins bien le rouge car c’est le sang et le feu (20-30% de notre champ de vision) On voit encore moins bien le bleu car on ne veut pas etre aveugle par le ciel

Exempe YUV

Qu’est-ce qu’on remarque ?

Dans le V il y a tres peu de rouge, noye dans du gris

Si on etait un algorithme, lesquels de ces images on trouverait plus facile a digerer que les autres ?

U et V ont une dynamique faible donc l’encodeur entropique va se regaler

Formats

Format lineaire:

  • Toute l’info est dans le pixel
  • Profondeur: 8..16 bits/composantes
    • HDR: 10 bits
  • 8 bpc: “True Color”
    • Representation des pixels : ARGB, ARGB, ARGB…
  • Exemple: #FF00FF00
    • C’est du vert
    • alpha opaque et vert a fond
  • Exotiques: high colors

Considerations systeme: True colors

Combien ca coute ?

Que faut-il dans un systeme ?

  • Horloge Systeme
  • CPU
  • RAM
    • Efficacite
    • Bande passante (BW)
  • BUS DMA
    • Direct Memory Access
    • Faire des transferts de donnees enorme sans utiliser un iota du processeur
    • Taille: combien de bytes au max il est capable de copier
    • BW: bande passante (nb bits/s capable de transferer)
  • Modules hardware
    • Carte video (GPU), carte son, etc
    • Autres modules d’affichage

CCC Full Hd True Color ?

  • Image fixe RGB $8bcp$ @ $1080p60$
  • BW afficage: $1920 \times 1080 \times 60 \times 24 = 2,98 Gb/s$

Pour un systeme:

  • Bus clock: $200$ MHz
  • DRAM: DDR3 $12800$ ($8$ bytes / burst, classiquement)
    • $8$ bursts / clock
    • $\Rightarrow 64$ bytes / clock
    • $80\%$ d’efficacite
    • $\Rightarrow$ BW RAM $= 200M \times 32 = 6,4 Gb/s$
    • ~$3,88\%$ BW ram
    • ~$46\%$ BW bus
    • Juste pour afficher !
    • $\times 2$: NOK. Pas d’animation possible
  • DMA: $64$ bits / clock (DMA++)
    • $\Rightarrow$ BW bus $=200M\times 64 = 12,8 Gb/s$
    • $\Rightarrow$~$3,88\%$ BW RAM
    • $\Rightarrow$~$23\%$ BW bus
    • $\Rightarrow$ Image animee jouable
    • $\Rightarrow$ Couteux

CCC 4K ?

  • Image fixe RGB

TODO

Pixels: formats

Format paletisse:

  • Palette de couleur predeifinie
  • Pixel = index couleur palette
  • Profondeurs: 1, 2, 4, 8 bits / pixel

CCC Full HD palettise ?

  • Image paletisee 256 couleurs

TODO

Structure d’une image video

Colorspace YUV

Sampling Mode

Qu’est-ce que ca veut dire ?

On va peut-etre enlever du U ou du V sur certains pixels car nos yeux ne peuvent pas le voir de toute facon Le fameux grignottage

  • Seulement en color space YUV
  • Oeil moins sensible a UV

Exemple:

Sur la 2e image, on a commence a diviser l’echantillonnage

Qu’est-ce qu’on observe ?

Il y a des bandes qui apparaissent a chaque bordures de couleurs Elles se degeulent les unes sur les autres Si on met une video youtube avec du rouge petant on aura le meme effet

On suppose 8 pixels:

Ils ont chacun leurs composantes

Ce sont toutes les images JPEG

Utilise par les Etats-Unis

Pendant notre enfance on avait les camescopes DV, en Europe ils sont en $4:2:2$ et aux US du $4:1:1$

Image planaire

  • Heritage TV: Y avant UV
  • PC: Images interleavees (ARGB, ARGB, …)
  • Video: Images planaires:
    • Buffers composantes separes
    • Luma: Y, Y, Y
    • Chroma: UV, UV, UV
    • Decouplage hardware / composantes

Une image planaire, combien ca coute ?

CCC Full HD Planar $4:2:2$ ?

$1080p60$ YUV $4:2:2$ $8$ bits

  • Luma: $1920\times 1080\times 60\times 8=\sim1 Gb/s$
  • Chroma: $1920\times 1080\times 60\times 16 / 2=\sim1 Gb/s$

Pour un systeme:

  • Bus clock: $200$ MHz
  • DRAM: DDR3 $12800$ ($8$ bytes / burst, classiquement)
    • $8$ bursts / clock
    • $\Rightarrow 64$ bytes / clock
    • $80\%$ d’efficacite
    • $\Rightarrow$ BW RAM $=200M\times 64\times 8\times 0.8 = 81,92 Gb/s$
  • Deux DMA 2 fois plus petits: $16$ bits / clock
    • $BW = 200 M \times 16 = 3,2 Gb/s/canal$
    • $2,5\%$ BW ram
    • $31\%$ BW par canal

CCC Full HD Planar $4:2:0$ ?

$1080p60$ YUV $4:2:0$ $8$ bits $\gt90\%$ des fichiers video (TNT, SAT, YT, Netflix, …)

  • Luma: $1920\times 1080\times 60\times 8=\sim1 Gb/s$
  • Chroma $1920\times1080\times60\times16\times\color{green}{4 = \sim 0,5Gb/s}$

Pour un systeme:

  • Bus clock: $200$ MHz
  • DRAM: DDR3 $12800$ ($8$ bytes / burst, classiquement)
    • $8$ bursts / clock
    • $\Rightarrow 64$ bytes / clock
    • $80\%$ d’efficacite
    • $\Rightarrow$ BW RAM $=200M\times 64\times 8\times 0.8 = 81,92 Gb/s$
  • Deux DMA 2 fois plus petits: $16$ bits / clock
    • $BW = 200 M \times 16 = 3,2 Gb/s/canal$
    • $2,5\%$ BW ram
    • $\sim 31\%$ BW Y, $15\%$ BW UV

CCC 4K Planar $4:2:0$ 10 bits ?

$2160p60$ YUV $4:2:0$ 10 bits: Netflix

  • Deux DMA 64 bits / clock
  • Hardware a 2 px / clock
    • BW = 200M x 64 = 12,8 Gb/s/canal
  • 9% BW ram
  • TODO

Entrelacement / Desentrelacement

70 ans et toutes ses dents

Un peu d’histoire: les signaux videos ne sont pas tous faits de la meme maniere et ne sont pas fait comme on le pense.

Mais nous n’avons pas parle de la structure d’une image.

Il y a un peu moins d’un siecle, des ingenieurs se sont dit “On va transmettre de l’image analogique sur des tubes cathodiques”.

Le principe d’un ecran cathodique est toujours le meme: on a une surface remplit de photophores qui emet de la lumiere quand elle se prend des electrons, elle met du temps a s’allumer et du temps a s’eteindre.

On s’est dit qu’on allait utiliser ces ecrans pour afficher des images.

Pourquoi ecran cathodique ?

Car les electrons sont generes par une cathode, et si on etait un peu trop pres de l’ecran on se prenait des rayons.

On ecrit notre image ligne a ligne a l’ecran et on obtient notre image.

SAUF QUE

On a remarque de 480 lignes c’est bien pour le format d’image. Mais si on envoie 480 lignes par image, 60 images par seconde, on a un signal beaucoup trop large.

Des ingenieurs se sont dit “Mais c’est pas un probleme, regardez le temps que prend mon ecran a s’eteindre” (c’est une gaussienne). Ces ingenieurs se sont dit “Je ne vais envoyer qu’une ligne sur 2 de chaque image et alterner entre lignes paires/impaires”.

Est-ce qu’on a vu que les tubes cathodiques scintillent ?

C’est lie du a l’entrelacement et alterner les images

Aujourd’hui on n’a que des ecrans plats avec des pixels avec une bonne reactivite (jusqu’a 140 Hz)

Sur nos ecrans actuels, chaque pixel a chacun sa vie.

On a un probleme de taille d’ecran, de pixels, de resolution, etc.

Pourquoi garder l’entrelacement ?

Car il y a encore des pays qui utilisent des teles cathodiques

On paye cher apres car c’est a credit

Un peu d’histoire

  • 1941: standard NTSC
    • 6 MHz de bande passante
    • Dot crawl: information couleur mal filtree
    • 15730 ligne/s
    • 525 ligne/image
    • 15730 / 525 = 30 ips
      • OK pour films (24 ips)
      • NOK pour du direct

Une idee simple

  • 1 frame: 2 fields : pair/impair
  • Captures a des instants differents

TFF = Top filter (flag)

BFF = Bottom filter (flag)

Exemples

Une image entrelacee c’est une image avec des dents

Entrelacement

Avantages:

  • Image fixe: resolution conservee
  • Image mouvante: $2\times$ plus fluide
  • BW inchangee
  • Parfait pour un tube cathodique

Inconvenients:

  • Resolution horizontales / 2 si mouvement
  • Signaliser l’ordre des fields
  • Scintillement
  • Le futur devra faire avec…

Exemple

Ce flux video donne des maux de tete aux ingenieurs Le OK ne bouge pas et ne doit pas etre entrelace Le logo en bas a droite est le logo corporate

Exemple: VLC

Ou est le K ?

On a pris que les lignes du haut et on a degage les lignes du bas C’est desentrelace comme un pied par le GPU

Plusieurs facons de desentrelace:

  • Prendre que les lignes du dessus et upscale $\times 2$ en vertical
This post is licensed under CC BY 4.0 by the author.