ld3driver (Auteur du topic)
Hobbit de L'Univers

Inscrit le: 16 Mai 2010 Messages: 1
|
ld3driver (Auteur du topic), Posté le: Dim 16 Mai 2010, 23:36 Sujet du message: Freebox, lecture HD, et H264 : fini les SACCADES
Freebox, lecture HD, et H264 : fini les SACCADES
44497
39960
|
|
|
Bonjour à tous,
Depuis le firmware 1.6.5 de la Freebox HD, la lecture des MKV encodés avec une piste vidéo au format H.264, et une ou plusieurs pistes audio au format AC3 ne pose plus aucun problème (c'était même le cas avant, mais je ne sais pas à partir de quel firmware exactement).
Ces MKV peuvent aussi contenir un ou plusieurs flux de sous-titres, que la Freebox HD sait lire également (une bonne nouvelle pour les fans de VO sous-titrées !).
Et pour accéder à tous ces flux, la touche "?" de la télécommande affiche un petit menu en surimpression, simple et efficace...
Mais j'ai lu trop souvent que la Freebox HD était incapable de décoder du 1080p et qu'il fallait se résigner au 720p : c'est faux, elle est capable de décoder du 1080p sans problème, et c'est d'ailleurs le nombre de lignes utilisées pour la diffusion des chaînes HD du service Freebox TV...
Ce post s'adresse donc plus particulièrement à tous ceux qui font de l'encodage au format H.264, et qui voudraient rendre leurs vidéos HD parfaitement compatibles avec la Freebox, ou d'ailleurs avec n'importe quel Player HD.
Préambule
Avant d'aller plus loin, je précise simplement que je n'aborderai pas les questions concernant les pistes audio, en particulier le problème du choix entre DTS et AC3 (la Freebox HD n'étant apparemment pas compatible avec le DTS...)
En revanche, pour le flux vidéo, j'exposerai quelques concepts de base qui vous aideront à mieux comprendre le H264, en particulier sur le contrôle du débit, et le moyen d'éviter définitivement les saccades, ralentissements ou même les freezes de l'image dans les cas extrêmes...
Formats supportés par la Freebox HD
En mai 2006, un communiqué de presse de Free (https://www.freenews.fr/spip.php?article3453) annonçait l'utilisation d'une puce Sigma Designs "SMP8634" à l'intérieur de la Freebox HD. (il subsiste d'ailleurs un léger doute, car l'article parle aussi de la puce "SMP8635").
C'est cette puce qui décode les flux audio et vidéo. Et en cherchant sur le site de Sigma Designs (https://www.sigmadesigns.com/products.php?id=59), on peut ainsi retrouver les formats que cette puce peut décoder :
- pour l'audio, pas beaucoup de précision, on a juste droit à "Two audio DSPs support a wide variety of audio codecs", autrement dit, "2 processeurs audio supportent une grande variété de codecs audio"... Néanmoins, lorsqu'on recherche les disques durs multimédias qui utilisent la même puce, ils semblent tous compatibles avec le DTS et l'AC3, donc la Freebox HD devraient aussi pouvoir décoder le DTS (avec un nouveau firmware ?)
- pour la vidéo, c'est plus précis :
# MPEG-4.10 (H.264) BP@L3, MP@L4.0*, HP@L4.0*
# SMPTE 421M (VC-1) MP@HL and AP@L3
# WMV9 MP@HL
# MPEG-2 MP@HL
# MPEG-4.2 ASP@L5 (720p, 1-point GMC)
* L4.1 for Blu-ray applications
Important : pour chaque format vidéo supporté, il est précisé quels sont les profils supportés et le niveau correspondant : pour le H.264 par exemple, les profils supportés sont :
Baseline Profile (BP) => niveau "3" (L3)
Main Profile (MP) => niveau "4.0" (L4.0)
High Profile (HP) => niveau "4.0" (L4.0)
Il est même précisé "niveau 4.1" pour les applications Blu-ray, sur les profils Main et High, ce qui voudrait peut-être dire que, dans un container "blu-ray" (.m2ts), un flux vidéo encodé en H.264 pourrait être décodé sans problème en niveau "4.1".
On verra plus loin à quoi correspondent ces niveaux et quelles sont les conséquences sur la lecture d'une vidéo HD.
Les saccades lors de la lecture d'une vidéo
Avant de parler saccades, il faut parler du FRAMERATE, c'est-à-dire le nombre d'images par seconde d'une vidéo.
Extrait de Wikipedia :
Citation: | Au Cinéma, le nombre d'images par seconde, qui était au début de 16 ou 18 images par seconde, fut normalisé à 24. À la télévision, le système européen PAL (ou SÉCAM en France) est de 25 images par seconde. Aux États-Unis et au Japon, la norme NTSC est de 30 images par seconde.
|
En réalité, c'est un peu plus complexe que cela, comme on peut le lire (en ANGLAIS ...) ici : https://en.wikipedia.org/wiki/24p
Ce qu'il faut retenir :
1. si un film a un FRAMERATE de 25 images par seconde, par exemple, alors la Freebox HD, ou n'importe quel lecteur d'ailleurs, va essayer d'afficher les images au même rythme de 25 images par seconde.
2. lorsque le lecteur n'est pas capable d'atteindre ces 25 images par seconde, alors 2 cas peuvent se produire :
- 1er cas : le lecteur affiche quand même toutes les images, mais moins rapidement que prévu : par exemple 10 images par seconde => c'est là qu'apparaissent les SACCADES !
- 2ème cas : le lecteur saute les images qui ne sont pas décodées à temps (paramétrage présent sur certains Players comme VLC ou MediaPlayerClassic) : dans ce cas, la dernière image décodée reste affichée à l'écran et reste fixe, et plusieurs secondes plus tard, quand le lecteur arrive enfin à décoder une image à temps, il reprend la lecture normalement => attention, car il est possible que le lecteur ne puisse se resynchroniser que plusieurs minutes plus tard, ou même qu'il n'arrive plus à se resynchroniser jusqu'à la fin du film => on a alors l'impression d'un plantage, alors que le décodage continue mais sans pouvoir produire d'image en sortie (toutes les images décodées sont en retard !)
A noter que, dans les 2 cas, le traitement de la piste AUDIO peut se faire normalement ou non :
- son haché pendant les saccades
- son interrompu lorsque le framerate est inférieur à celui attendu
- son correctement décodé alors que l'image est figée
=> tout dépend de la façon dont le Player gère la synchro entre audio et vidéo : pour la Freebox HD, lorsque la vidéo saccade, le son saccade en même temps ou bien il est interrompu... mais je n'ai pas bien compris dans quel cas cela se produit
Comment se débarasser des saccades ?
Sans entrer dans le détail (mais quand même un peu !), il faut comprendre comment se fait le décodage des images :
1. les données de la piste vidéo sont lues à partir de la source (par exemple le disque dur interne de la Freebox HD), et sont chargées dans un premier BUFFER (= une zone mémoire dédiée).
2. le circuit de décodage (= le décodeur ) lit les données dans ce buffer, décode les images, et les stocke dans un second BUFFER appelé le "Decoded Pictures Buffer"
3. les images décodées sont lues dans le "Decoded Pictures Buffer" et sont envoyées vers la sortie vidéo (la sortie HDMI par exemple)
=> ce qui nous intéresse ici, c'est le premier BUFFER, celui contenant les images à décoder. Ce buffer a une taille fixe (exprimée en kilobits par exemple), il se remplit et se vide au fur et à mesure que les données sont lues et décodées. Mais dans une vidéo au format H264, comme pour les autres formats d'ailleurs, le "bitrate" est variable : l'encodeur alloue plus de kilobits aux scènes rapides et comportant beaucoup de détails qu'aux scènes lentes. Quand cela se produit, la quantité de données lues dans le buffer est momentanément plus importante, et celui-ci risque de se vider plus vite qu'il ne se remplit : s'il se vide complètement, le décodeur n'a temporairement plus de données à décoder, et l'image se fige, créant une micro-saccade ... (lorsque le buffer est vide, le terme utilisé est "VBV BUFFER UNDERFLOW")...
=> pour éviter que le BUFFER se vide lors de la lecture, et donc pour éviter les saccades, il faut paramétrer 2 valeurs lors de l'encodage :
le VBV-MAXRATE et le VBV-BUFSIZE
les valeurs maxi autorisées pour ces paramètres dépendent du profil et du niveau d'encodage : pour la Freebox HD, on a vu qu'on pouvait utiliser un High Profile (HP) et un niveau "4.0".
Pour ce profil et ce niveau, un certain nombre de paramètres sont autorisés et en particulier :
VBV-MAXRATE = 20 000 kilobits par seconde
VBV-BUFSIZE = 25 000 kilobits
(pour plus de détail : https://rob.opendot.cl/index.php/useful-stuff/h264-profiles-and-levels/)
quelques remarques :
- les valeurs indiqués ci-dessus sont des valeurs MAXI à ne pas dépasser pour un niveau "4.0". Si une vidéo est encodée avec les valeurs du niveau "4.1", alors il est possible que la vidéo atteigne un débit trop rapide dans une scène d'action, et provoque ainsi des saccades.
- certaines vidéos sont aussi encodées sans les paramètres VBV : encore une fois, on peut ainsi atteindre un débit trop rapide pour notre pauvre Freebox HD, qui va saccader lors de la lecture. Mais si la vidéo ne comporte aucune scène rapide (un documentaire animalier sur les paresseux par exemple !), il se peut aussi que le débit reste toujours dans des valeurs raisonnables que la Freebox HD pourra décoder sans saccade !
- notez également que le VBV-MAXRATE doit impérativement être supérieur au BITRATE MOYEN ("average bitrate") choisi pour la vidéo
- enfin, le VBV-BUFSIZE a aussi une limite inférieure : il doit pouvoir contenir au moins 3 frames : si on a un débit moyen de 2500 kbps, et un framerate de 25 fps (soit 100 kilobits par frame en moyenne), alors le buffer doit pouvoir contenir : 3 * 100 = 300 kilobits minimum
Ceci dit, je ne vois pas l'intérêt de paramétrer un BUFFER-SIZE plus petit que la valeur maxi autorisée, car cela diminuerait le débit des scènes rapides et donc la qualité de l'image !
Lecture à partir d'une autre source que le disque dur interne de la Freebox
On va aborder ici un dernier point qui peut aussi poser problème lors de la lecture et provoquer des saccades.
On a vu que, si le buffer se vidait dans des scènes d'action, cela provoquait des saccades ...
Supposons que vous ayez ré-encodé une vidéo avec les bons paramètres et que, lorsque le fichier est sur le disque dur interne de la Freebox HD, la lecture est fluide et sans aucune saccade.
Maintenant, on transfère le fichier sur un PC connecté au réseau domestique en Wifi, et grâce à la fonction UPnP, on essaie de lire ce fichier depuis la Freebox HD : les saccades ré-apparaissent !
L'explication est simple : le débit du réseau est insuffisant et provoque le même problème que tout à l'heure => le BUFFER se vide et provoque des saccades, mais cette fois-ci, c'est parce qu'on le remplit trop lentement....
Pour autant, il ne faut pas baisser les bras : on va voir, selon la source et le débit disponible, quels paramètres utiliser lors de l'encodage pour conserver une lecture sans saccade...
Lecture à partir d'un disque dur externe branché sur le port USB :
Wikipedia :
Citation: | La version 1.x du bus peut communiquer dans deux modes : lent (1,5 Mbit/s) ou rapide (12 Mbit/s, soit 1,5 Mo/s) :
...
USB 2.0 introduit un troisième mode permettant de communiquer à 480 Mbit/s (soit 60 Mo/s).
...
La dernière version, l?USB 3.0, comporte un quatrième mode (« Super Speed ») permettant de communiquer à 4,8 Gbits/s (soit 600 Mo/s). Les premiers appareils commercialisés sont prévus pour 2010.
|
Les films HD sont, en général, encodés dans un bitrate moyen entre 5000 kbps et 10000 kbps, c'est-à-dire entre 5Mbit/s et 10Mbit/s. Il faut aussi penser au flux audio (640 kbps en AC3 par exemple) => en principe, la lecture devrait être OK même avec une connexion USB 1.1, mais il vaut mieux de l'USB 2.0 (avec 480 Mbit/s, la marge est énorme sur le débit disponible !)
=> pour la Freebox HD, on dispose d'un port USB 2.0 donc pas de problème...
Lecture à partir du réseau :
ça devient un peu plus délicat :
- pour éviter les saccades, le réseau doit pouvoir acheminer les données jusqu'à la Freebox HD avec un bitrate supérieur ou égal au bitrate maxi utilisé pour l'encodage (VBV-MAXRATE)
- ce paramètre, si on se limite bien au niveau 4.0, est plafonné à 20 000 kilobits par seconde (on peut choisir une valeur plus faible si on le souhaite pour l'encodage)
- il suffit donc d'étudier les différents composants du réseau domestique
=> liaison entre la Freebox HD et la Freebox ADSL :
si on utilise les Freeplugs (les boitiers CPL made in Free), le débit théorique est de 200 Mbps, soit 200 000 kbps (https://fr.wikipedia.org/wiki/Freeplug)
Malheureusement, le débit réel dépend de la qualité de votre installation électrique, d'après les témoignages, entre 30 Mbps et 50 Mbps, ce qui reste suffisant pour un film HD, même en comptant 2 pistes audio à 640 kbps chacune.
=> reste du réseau : en Wifi 802.11n, on peut espérer un débit réel de 100 Mbps, soit 100 000 kbps, ce qui devrait aussi être suffisant. En revanche, en 802.11G, le débit théorique est de 54 Mbps, mais le débit réel est de l'ordre de 15 à 20 Mbps, ce qui risque d'être un peu juste. Quand au Wifi 802.11b, le débit théorique est de 11Mbps, et la moitié en débit réel, donc à oublier pour la HD...
Sans compter que le Wifi est sensible aux obstacles, aux parasites, etc... et peut présenter un débit instable...
=> reste du réseau en Ethernet : en principe, on a du 100 Mbps en débit théorique (pas encore de gigabit Ethernet sur nos box), soit 80 Mbps en débit réel (mais là encore tout dépend de vos différents appareils connectés), donc cela devrait être suffisant pour des films HD...
Par contre, si vous n'avez que du 10 Mbps, c'est insuffisant....
Vous trouverez plus d'info en cherchant un peu, mais vous avez maintenant les clés pour comprendre tous ces pbs de débits et de saccades... et vous pourrez enfin profiter de vos films HD !
Merci de me faire part de vos remarques, ou de m'indiquer si vous avez trouvé ce post utile...
|
|