Brevet FR2797549A1 — publié le 20010216

L'invention concerne un procédé de synchronisation d'un décodeur MPEG pour le décodage de données comprimées provenant d'un support d'enregistrement. L'invention concerne également un décodeur MPEG mettant en oeuvre un tel procédé, un décodeur satellite ou un récepteur de télévision comportant un tel décodeur. La figure 1 représente une configuration d'un décodeur satellite utilisant un enregistrement d'un flux de données MPEG sur disque dur. Un flux de programmes MPEG (PS pour Program Stream en anglais) est reçu à l'entrée d'un démultiplexeur 1. Celui-ci fournit en sa sortie, les données d'un programme sous forme de paquets de données PES (initiales de l'appellation anglaise Packetized Elementary Stream). Ces données sont transmises vers une mémoire 2 puis vers un disque dur 4 par l'intermédiaire d'un interface disque 3, pour leur enregistrement. Pour la lecture des données, le disque dur 4 est relié à un interface disque 5 puis à une mémoire 6. Une première sortie mémoire est reliée à un circuit de décodage MPEG vidéo 7 et une seconde sortie mémoire est reliée à un circuit de décodage MPEG audio 8. La sortie de chacun de ces circuits correspond aux informations vidéo et audio transmises à des convertisseurs numérique/analogique puis à un récepteur de télévision (non représentés sur la figure). Le circuit mémoire 6 permet, entre autres, le démultiplexage des données audio et vidéo stockées sur le disque dur. Ces données PES vidéo et PES audio sont ensuite traitées par leurs décodeurs respectifs. Les données mémorisées sur le disque dur sont les données obtenues après démultiplexage du flux. Il ne s'agit donc pas d'une mémorisation du flux de programme PS, évitant ainsi la regénération d'un tel flux à la lecture, la mémorisation de l'ensemble des programmes constituant ce flux, ou bien le stockage des données embrouillées avec enregistrement de mots clés... Le fonctionnement d'un décodeur selon la norme MPEG, dans une configuration classique, c'est à dire recevant directement le flux de données avec un débit de transmission donné, par exemple par transmission satellite ou par câble, est rappelé ci-après afin de souligner les caractéristiques particulières relatives à un environnement avec disque dur, c'est à dire avec stockage intermédiaire des données sur disque dur avant décodage. La gestion de la mémoire tampon d'un décodeur est effectuée, dans la norme MPEG, à partir d'une modélisation appelée mémoire virtuelle. En effet, le codage de chaque image constituant une séquence ne se fait pas à coût constant et une mémoire tampon en sortie du codeur est utilisée pour fournir un flux de données à débit moyen constant. Côté décodeur, une mémoire tampon est également nécessaire pour fournir, à partir du flux de données à débit constant, des images à coût variable. Une gestion de la mémoire tampon du décodeur est effectuée à partir, entre autres, des horloges transmises par le codeur dans le flux de données et des étiquettes attribuées aux images transmises et définissant l'instant de sortie de la mémoire du décodeur, l'écart de temps entre l'instant de mémorisation d'une image dans la mémoire du codeur et l'instant de lecture de la mémoire du décodeur devant être le même pour chaque image. Il s'agit de l'horloge PCR, selon l'appellation anglaise Program Clock Reference dans la norme MPEG, qui est une information de temps transmise dans le flux de données et à partir de laquelle est effectuée la synchronisation au décodeur. Il s'agit également de l'étiquette DTS, selon l'appellation anglaise Decoding Time Stamp dans la norme MPEG qui est un champ transmis dans le flux et qui indique l'instant auquel une image doit être décodée dans le décodeur. L'information PCR présente dans le flux de transport TS est utilisée par le décodeur pour calculer l'heure. Le PCR fournit donc le référentiel horaire au niveau du décodeur. Le DTS donne les horaires de décodage, c'est à dire I'instant auquel l'image doit être lue dans la mémoire tampon du décodeur et décodée. Les informations PCR et DTS sont transmises respectivement dans des entêtes de paquets de 188 octets du flux de transport TS et dans des entêtes de paquets du flux PES, première étape de paquetisation nécessaire à la réalisation d'un flux de transport TS. Le sigle PTS, initiales de l'appellation anglaise Presentation Time Stamp, correspond à l'instant d'affichage de l'image et permet le réordonnancement des images après décodage; il est présent dans les entêtes de paquets du flux PES. Lorsque le décodeur MPEG fonctionne à partir des données provenant du disque dur, ces données sont consommées au rythme du décodeur. Les signaux de synchronisation des décodeurs audio et vidéo pour l'affichage des images décodées (VSYNC) sont cadencés par l'horloge locale 27 Mhz pour fournir 25 images par seconde approximativement. L'enregistrement se faisant au niveau des PES audio et vidéo, l'information relative au PCR du flux PS est perdue et ne peut donc servir à l'asservissement de l'horloge locale. Cette absence d'asservissement génère un problème de gestion au niveau des pointeurs d'écriture et de lecture du disque dur ainsi qu'un problème de synchronisation au niveau des signaux audio et vidéo. En ce qui concerne la gestion des pointeurs, deux modes sont à considérer: le mode lecture seule, c'est à dire sans écriture simultanée du disque dur, pour lequel le problème n'est pas trop gênant, et le mode lecture/écriture. En mode lecture seule, lorsqu'un flux préalablement enregistré est restitué, la précision de l'horloge locale en oscillation libre est suffisante. La variation relativement à la valeur nominale de l'enregistrement se retrouve dans la durée de l'image vidéo de 40ms. La tolérance au niveau du téléviseur et du téléspectateur est suffisamment grande pour se contenter d'une précision bien inférieure aux normes de la télévision professionnelle. En effet, le signal de synchronisation image (VSYNC) est défini à partir de l'horloge 27 Mhz. Il a une période de 40 ms. Une dérive lente de ce signal, due à la précision de l'horloge locale, n'est en rien gênante du fait que le téléviseur est en bout de la chaîne de transmission. Par contre, en mode écriture/lecture (mode lecture décalée par rapport à l'écriture plus connu sous l'appellation anglaise Time Shifting), des dysfonctionnements peuvent apparaître du fait que cette horloge est en oscillation libre, n'étant pas possible de l'asservir sur le flux relu du disque. Lorsque l'enregistrement et la lecture sont simultanés, cas d'une restitution en temps décalé, il y a un risque de dépassement de l'écriture par la lecture sur le disque, ou d'accroissement du retard. La dérive étant lente, ce second cas n'est pas trop gênant. Par contre, si la lecture dépassait l'écriture, c'est à dire si le pointeur de lecture dépassait le pointeur d'écriture pour aller lire des zones mémoire non encore écrites, I'image visualisée serait au mieux ce qui a été enregistré dans cette zone lors d'un précédent enregistrement et les images en cours d'enregistrement ne pourraient plus être restituées. Cette situation peut se produire lorsque le décalage entre l'enregistrement et la lecture est le fait d'une courte pause en lecture. Dans ce cas, et si l'horloge 27 Mhz est un peu plus rapide que celle utilisée par le codeur lors du codage des données, la restitution des données est plus rapide que leur enregistrement et sur une longue période, c'est à dire pour un programme enregistré d'une certaine durée, le pointeur de lecture peut dépasser le pointeur d'écriture. Dans ce mode, il est donc nécessaire d'interdire un tel glissement entre l'écriture et la lecture. Une idée serait d'asservir l'horloge locale sur les PCR (Program Clock Reference) du flux incident en cours d'enregistrement. Mais cela ne résoudrait pas un autre dysfonctionnement qui peut se produire du fait qu'on ne connaît pas à priori la validité des données enregistrées. Les écritures et lectures étant synchrones, dans le cas ou l'horloge locale est synchronisée sur les PCR du flux incident, le retard entre la lecture et l'écriture sera conservé sauf si le décodeur se met à consommer très vite les données. Cela peut arriver si les données sont corrompues. En effet, si dans le cas d'une transmission en temps réel (live), ces données erronées peuvent être détectée immédiatement lors de la lecture du tampon du décodeur, il n'en est pas de même lors de l'enregistrement sur disque dur qui ne permet de détecter de telles données erronées qu'après la lecture et mémorisation de ces données dans le tampon du décodeur. Lorsque des données corrompues sont détectées par le décodeur, ce dernier se resynchronise et vide instantanément le tampon, provoquant la perte de données et des accès au disque dur répétés pour le remplissage de ce tampon. Dans ce cas, il peut arriver que le pointeur lecture dépasse le pointeur écriture. Cela peut se produire lors d'une transmission d'informations erronées ou d'une perte de transmission de données du fait par exemple de mauvaises conditions de transmission. En ce qui concerne la synchronisation des données audio et vidéo, que ce soit en mode lecture seule ou lecture/écriture, le fait de ne pas pouvoir initialiser et synchroniser l'horloge locale sur l'information PCR, par exemple en mode lecture seule, peut entraîner un problème de synchronisation entre la vidéo et l'audio. En effet, les informations concernant les instants de présentation relativement à l'horloge locale sont inexploitables du fait que cette horloge n'est plus synchronisée sur celle du codeur. L'invention a pour but de pallier les inconvénients précités. Elle a pour objet un procédé de synchronisation d'un décodeur MPEG pour le décodage de données comprimées provenant d'un support d'enregistrement, ces données étant constitué de paquets de données audio et vidéo PES (Packetized Elementary Stream), caractérisé en ce qu'il comporte: - une étape de calcul d'un instant de présentation effectif Tpres de la vidéo d'une image relatif à une horloge locale LSTC, - une étape de calcul d'un offset STCO entre cet instant de présentation calculé et l'étiquette PTS correspondant à l'instant de présentation souhaité par le codeur pour la vidéo de cette image, pour définir une horloge virtuelle VSTC = STCO + LSTC - une présentation de la vidéo et de l'audio correspondant à cette image aux dates PTS relatives à l'horloge virtuelle VSTC. Selon une caractéristique particulière, le temps de transit de la vidéo dans le tampon du décodeur vidéo est imposé à une valeur TVBV prédéterminée. Selon une variante, la détermination de TVBV est fonction du débit d'enregistrement des données PES sur le support d'enregistrement. Selon une variante, la détermination de TVBV est fonction du VBV_delay. Selon une caractéristique particulière, I'offset est égal à STCO = PTS - TVBV - TVSYNC - (TempRef x 4Oms) - TDEC - LSTCpic o: TVSYNC correspond à une période trame, TDEC correspond à la durée de décodage de l'image arrondie à un nombre supérieur de périodes trame, TempsRef représente la référence temporelle de l'image pour le réordonnancement, LSTCpic est relatif à l'instant de détection de la première image. Selon un mode de fonctionnement particulier, la lecture de données en mode décalé (time shifting), les données étant enregistrées à partir d'un pointeur écriture, les données enregistrées étant lues en temps décalé à partir d'un pointeur lecture, un écart minimum est imposé entre le pointeur lecture et écriture et, lorsque cet écart est atteint, le mode gel du décodeur est actionné. L'invention a également pour objet un dispositif de synchronisation d'un décodeur MPEG sur un flux MPEG enregistré, les données enregistrées étant constituées de paquets de données PES, caractérisé en ce qu'il comporte des moyens pour calculer un offset STCO à appliquer à l'horloge locale LSTC du décodeur pour définir une horloge virtuelle VSTC, cet offset étant égal à la différence entre l'instant de présentation Tpres de la vidéo d'une image calculé dans le référentiel LSTC et la valeur PTS de présentation de cette image provenant du codeur et en ce que le décodage des données audio et vidéo se font lorsque cette horloge virtuelle VSTC est égale à la valeur PTS. Elle a aussi pour objet un décodeur satellite caractérisé en ce qu'il comporte un décodeur MPEG et un dispositif de synchronisation selon la revendication 11 ou bien un récepteur de télévision, caractérisé en ce qu'il comporte un décodeur MPEG et un dispositif de synchronisation selon la revendication 1 1. L'enregistrement local sur un disque dur d'un programme sous forme PES impose donc de prendre des précautions à la restitution: asservissement des horloges locales et synchronisation des décodeurs vidéo et audio. La méthode proposée ici s'efforce d'émuler les composantes de la transmission par satellite de manière à pouvoir faire fonctionner les décodeurs audio et vidéo dans des modes les plus proches possibles de leur fonctionnement nominal. L'invention a pour principal avantage de proposer un procédé de synchronisation simple à mettre en oeuvre, ne nécessitant pas l'exploitation des PCR et évitant les dysfonctionnements généralement rencontrés lors de la lecture des données à partir du disque dur. Les caractéristiques et avantages de la présente invention ressortiront mieux de la description suivante, donnée à titre d'exemple et en référence aux figures annexées, o: la figure 1 représente un schéma simplifié d'un décodeur satellite avec disque dur, la figure 2a représente l'opération d'écriture des données audio et vidéo sur disque la figure 2b représente l'opération de lecture des données audio et vidéo sur disque la figure 3 représente les pointeurs écriture et lecture relativement aux données enregistrées la figure 4 représente le fonctionnement d'un décodeur vidéo au démarrage selon l'art antérieur la figure 5 représente les différentes étapes nécessaires à la présentation d'une image décodée. Gestion des pointeurs Les figures 2a et 2b représentent schématiquement la manière dont est effectué le stockage et destockage des informations audio et vidéo sur le disque dur. La figure 2a correspond à l'opération d'écriture sur le disque dur. Les PES vidéo et audio sont enregistrés sur le disque dans un même bloc de 128 kO (256 blocs d'adressage [ou Iba, acronyme de logic block addressing en anglais] de 512 octets). La vidéo occupe 112 kO et le son occupe une partie des 16 kO restants, proportionnellement au débit audio. La valeur q correspondant à la quantité d'audio qui arrive pendant que les 112 kO de vidéo sont tamponnés, est écrite en début de bloc de 128 kO et correspond donc à la quantité d'audio mémorisée. A l'enregistrement d'un bloc le rapport des débits vidéo/ audio est respecté. La figure 2b correspond à l'opération de lecture du disque dur, les 112 kO de vidéo sont lus pour former le flux PES vidéo en même temps que la quantité q kO d'information audio (partie variable) pour former le flux PES audio. La figure 3 représente une succession de blocs de données, chacun de 128 kO, tels qu'ils sont mémorisés sur le disque dur et la position des pointeurs de lecture et d'écriture pour ce disque dur. La double flèche référencée 9 représente le retard entre le pointeur écriture (flèche verticale à droite) et le pointeur lecture (flèche verticale à gauche). La double flèche référencée 10 représente un écart de consigne, ici 5 blocs, qui est l'écart, prédéfini au départ, entre les pointeurs et la double flèche référencée 11 représente un écart de gel, c'est à dire un écart minimum entraînant un gel de l'image. L'idée est ici d'assurer, par logiciel, un écart minimum, par exemple d'un bloc de 1 28k0 entre les pointeurs. Lorsqu'il est atteint, le décodage est temporairement suspendu en arrêtant la lecture de la mémoire du décodeur, ce qui provoque un gel de l'image à l'écran, jusqu'à ce qu'un bloc au moins sépare l'écriture et la lecture. On ne cherche pas, en effet, à rétablir l'écart initial puisque de toute façon les données sont perdues et qu'il n'y a pas d'intérêt à maintenir l'image gelée dans le seul but de rétablir le retard initial. Synchronisation Audio - Vidéo Etant donné le mode de stockage "entrelacé" des données audio et vidéo, la restitution des deux composantes du programme se fait forcément simultanément. On peut dire en première approximation que le premier octet de vidéo et le premier octet d'audio atteignent leurs décodeurs respectifs en même temps. Cela ne veut pas dire qu'ils seront décodés en même temps, à cause du temps de transit de la vidéo dans son décodeur. On sait que, pour éviter l'utilisation d'une mémoire tampon audio de grande capacité, I'audio est phasée en retard dès le codage. Ainsi, à la restitution, en mode standard (transmission directe), I'audio se présente en phase avec la vidéo. Ce retard est déterminé au codeur et est fonction du débit vidéo. Lorsque les données sont enregistrées sur disque dur et du fait que celles-ci ne sont plus transmises aux décodeurs audio et vidéo avec ce débit vidéo, un déphasage réapparaît entre l'audio et la vidéo. Le fonctionnement du décodeur vidéo au démarrage, dans le cas général, est représenté en figure 4 à l'aide d'un organigramme. Ce démarrage s'effectue de la manière suivante: Le processus de décodage, étape 12, reçoit le flux de données pour extraire, entre autres, les en-têtes (headers en anglais). L'étape 13 réalise une boucle jusqu'à détecter la première en-tête séquence. Lorsque tel est le cas, l'étape 14 est mise en oeuvre et consiste à lire l'en-tête image qui suit cette en-tête séquence. Si l'information PTS est exploitable, vérification faite lors de l'étape 15, I'information DTS est alors déduite lors de l'étape 16. L'étape 17 consiste en une boucle comparant DTS à l'horloge locale LSTC. La sortie de boucle correspond à I'égalité et, à la réception du prochain signal de synchro (VSYNC), un test de parité est effectué lors d'une étape 18 déclenchant le décodage de l'image, étape 1 9, à la détection de la bonne parité. Si l'information PTS n'est pas exploitable, une étape 20 consiste en un remplissage de la mémoire tampon du décodeur. L'étape 21 contrôle le niveau de remplissage de cette mémoire tampon. Lorsque le niveau minimum nécessaire au décodage est atteint et lors de la réception du prochain signal de synchro, un test de parité est effectuée, étape 18. Le décodage de l'image, étape 19, est effectué à la détection de la bonne parité. Le décodage d'un flux PES vidéo commence donc sous plusieurs conditions. Tout d'abord, le décodeur ignore le début du flux jusqu'à qu'il rencontre un début de séquence, étape 13. Il identifie donc le premier entête séquence (SEQ) (sequence header en anglais) qui constitue le point d'entrée du flux. Les données sont ensuite accumulées dans le tampon du décodeur à un rythme correspondant au débit de la transmission. Après l'entête de séquence, I'entête d'image (picture_header) est reçue par le décodeur, étape 14. Dans cet en-tête se trouve l'information concernant le niveau de buffer minimum nécessaire au démarrage du décodage de cette première image. Une fois ce niveau atteint dans le tampon (étape 21), donc après un certain temps lié au débit vidéo, le décodeur vérifie la bonne parité (étape 18) du signal de synchronisation verticale (VSYNC) pour ordonner le décodage (étape 19). Dans le cas o le VBV_delay n'est pas disponible dans le flux, c'est l'information PTS (Presentation Time Stamp) qui fixe le démarrage du décodage. Concernant le démarrage, les principales différences entre la réception directe (c'est à dire sans passer par un stockage sur disque) et la restitution des données à partir d'un disque dur sont: - le débit en lecture qui peut être vu comme infini pour le disque, - I'absence d'horloge locale LSTC (Local System Time Clock) synchronisée sur l'information PCR (Program Clock Reference). Grâce au fort débit vidéo possible lors du remplissage du tampon à partir du disque dur, lors du démarrage d'un flux, le décodage de la première image aura lieu plus tôt que lors d'une réception directe, occasionnant un déphasage entre l'audio et la vidéo. La synchronisation de l'audio associée à la vidéo, telle que mise en oeuvre dans l'invention et comme expliqué plus loin, permet d'éviter un tel déphasage. La LSTC joue normalement un rôle majeur dans le contrôle de flux et dans la synchronisation de l'audio sur la vidéo. Le contrôle de flux n'est pas un problème lorsque les données proviennent du disque puisque la transmission s'arrête dès que les tampons mémoire sont pleins. Il n'y a donc pas de risque de perte de données. Par contre, une horloge de référence reste nécessaire pour permettre la synchronisation de l'audio sur la vidéo. L'exploitation d'une horloge STC virtuelle (VSTC) recréée à partir des informations PTS de la vidéo permet cette synchronisation. La STC Virtuelle doit être initialisée le plus tôt possible par le processus vidéo afin de permettre à l'audio de se synchroniser sur cette horloge. Les informations nécessaires à son initialisation sont la valeur du compteur STC local (LSTC) le PTS de la première image. le VBV_delay de la première image (si présent). la référence temporelle de la première image (TempRef) utilisée pour le réordonnancement des images. la parité de la synchro verticale VSYNC Etant donné le débit élevé disponible à la lecture du disque, ces informations que l'on obtient lors de l'acquisition du premier en-tête image (PIC header) sont disponibles très rapidement. La figure 5 représente, d'une manière schématique, les différentes étapes dans le temps nécessaires à la présentation d'une image décodée. La bande supérieure représente la succession de données qui ont été mémorisés sur le disque et qui sont maintenant en lecture. Cette bande est découpée en périodes trames. Par la suite, on prendra la notation suivante - Tpic pour représenter une date (lettres minuscules après T) - TVBV pour représenter une durée (lettres majuscules). Après détection du premier en-tête image après l'en-tête séquence, une lecture et enregistrement des blocs a lieu dans le tampon du décodeur pendant un temps TVBV correspondant à VBV_delay. Après ce temps, un contrôle de parité est effectué. Si le signal de synchro est de parité inverse de celle de l'image prête à être décodée, cas de la figure, une durée égale à TVSYNC (20ms) est rajoutée pour déterminer l'instant de décodage. Cet instant est appelé Tdec. Si la durée effective de décodage est supérieure à une période trame (cas de la figure ou la durée est représentée par un rectangle dans lequel est inscrit " décodage "), la durée de décodage prise en compte TDEC est choisie égale à un nombre entier de durées TVSYNC immédiatement supérieur à la durée effective. Si Tpres est l'instant effectif pour l'affichage de l'image décodée, I'écart entre Tpres et Tdec est égal à TDEC + TempRef x TVSYNC, TempsRef étant la référence temporelle servant au réordonnancement des images. Au plus tôt, le décodage de l'image, instant Tdec, commence à la première synchro VSYNC de bonne parité qui suit l'instant o le niveau de la mémoire tampon aura atteint le niveau correspondant au délai VBV_delay au débit nominal. Ici encore, le débit élevé à la lecture du disque fait que le temps de remplissage du tampon décodeur est faible et bien inférieur au VBVdelay. Ce débit peut être facilement 20 fois plus grand que celui de la transmission satellite. Pour donner un ordre d'idée, le remplissage du tampon du décodeur de capacité 1,8Mbit, avec un débit de transmission satellite de 4 Mbit/s, nécessite 0,45s. Ce délai est ramené à 0,03s lorsque le remplissage se fait à partir d'un disque dur. On serait donc en mesure de commencer le décodage de la vidéo plus tôt, sans avoir besoin d'attendre cette durée VBV delay. Cependant, I'audio et la vidéo doivent rester synchronisées. Le décodage de l'audio ne pouvant pas, lui, être anticipé de la même façon, I'audio se retrouverait en retard sur la vidéo. Une telle situation n'est pas souhaitable car elle oblige à ignorer rapidement des données audio pour rattraper le retard. Pour pallier cet inconvénient et donc compenser le fort débit offert par le disque, un retard appelé TVBV est imposé volontairement à la vidéo. Ce retard permet de simuler le VBV_delay original. TVBV = VBV_delay Si l'information VBV delay n'est pas disponible dans le flux, on peut la remplacer, dans la formule, par la taille du tampon décodeur (std_buffer): TVBV = (stdbuffer / BitRateSat) - (stdbuffer / BitRateDisk) Cette durée est fonction du débit vidéo (débit de transmission satellite BitRateSat) et du débit du disque (BitRateDisk). Comme le débit du disque est bien plus grand que celui du satellite, on peut approximer à: TVBV = stdbuffer / BitRateSat. La valeur BitRateSat est calculée à l'écriture. On connaît en effet le nombre d'octets écrits pendant une unité de temps. La taille du tampon est généralement de 1,8 Mbits. Une fois ce retard écoulé, le décodage peut commencer. Cependant, dans certaines implémentations, I'ajout d'un retard de 20ms peut s'avérer nécessaire pour attendre la bonne parité de la Synchro Verticale. Comme il est préférable de garantir que l'audio ne démarrera pas en retard vis à vis de la vidéo plutôt que l'inverse, on introduit par défaut un délai de 20ms (TVSYNC) qui permet ce rephasage avec la Synchro Verticale (VSYNC). La date de début du décodage (Tdec) par rapport à la date de la détection de la première image (Tpic) est alors: Tdec = Tpic + TVBV + TVSYNC Connaissant l'instant de début du décodage (Tdec), I'instant de présentation (Tpres) est fonction de la référence temporelle de l'image (TempRef) et du délai nécessaire à son décodage (TDEC): Tpres = Tdec + TempRef * 40ms + TDEC TDEC est fonction de la mise en oeuvre du décodeur (typiquement 2Oms ou 4Oms). Dans l'application, le temps de mise en oeuvre est de 40ms En remplacçant Tdec par la valeur calculée plus haut Tpres = Tpic + TVBV + TVSYNC + TempRef * 40ms + TDEC La date Tpic qui est la valeur de l'horloge locale LSTC au moment exact o la première image a été détectée n'est pas forcément connue. En effet, par exemple dans notre système, la mise en oeuvre de l'horloge LSTC ne permet un échantillonnage de sa valeur que toutes les ms. Il convient donc de la remplacer par la formule suivante dans laquelle LSTCpic représente la valeur de l'horloge LSTC disponible (échantillonnée à la synchro verticale précédente) au moment o la première image est détectée Tpic = LSTCpic. et Tpres = LSTCpic + TVBV + TVSYNC + TempRef * 40ms + TDEC On calcule maintenant une valeur d'offset correspondant à l'écart entre l'instant de présentation effectif de l'image, Tpres, et l'instant de présentationsouhaité par le codeur, PTS. Cet instant PTS n'a de signification qu'à la condition que l'horloge du décodeur ait été initialisée et synchronisée sur le PCR. Ici, cette valeur PTS est utilisée non pour définir un temps de présentation dans l'absolu mais pour permettre de synchroniser les instants de décodage audio et vidéo (mêmes PTS). L'offset est donc la correction STCO (System Time Clock Offset) à effectuer sur l'horloge locale pour que l'instant de présentation de l'image, Tpres défini à partir de cette horloge locale, corresponde à l'étiquette PTS: Tpres + STCO = PTS STCO = PTS - TVBV - TVSYNC - (TempRef x 40ms) - TDEC - LSTCpic On a ainsi défini une horloge virtuelle VSTC telle que VSTC = LSTC + STCO Cette horloge virtuelle sert de référence pour la synchronisation de l'audio. Lorsque la valeur de VSTC sera égale à PTS, la présentation de l'audio pourra être effectuée et sera donc en phase avec celle de la vidéo. Le but de ces calculs est de prévoir l'instant de présentation réel de la vidéo relative à une image (heure LSTC quelconque multiple de 20 ms) afin de calculer le décalage avec la valeur théorique PTS relative à la vidéo pour cette image. Ce décalage est alors exploité pour définir l'instant de présentation réel des données audio. Le PTS audio pourrait également être utilisé pour initialiser le VSTC et dans ce cas l'audio serait maître. Cette solution n'est pas retenue car la fréquence de présence des PTS dans les trame audio est faible. On peut remarquer que, s'il n'y a pas de discontinuité dans le processus de décodage, le décodage vidéo et la VSTC restent synchrones. A la présentation de chaque image, on peut alors vérifier que VSTC = PTS. Deux types d'impondérables peuvent perturber le processus de décodage de la vidéo: - des perturbations liées au flux relu du disque peuvent entraîner des retards dans la présentation de certaines images ou bien des sauts en avant suite à la réinitialisation du décodeur et à la perte de données. - I'exécution de " trick-modes " demandée par l'application (appellation utilisée dans la norme et correspondant à des modes de fonctionnement spécifiques tels que arrêt sur image, etc...) pendant lesquels la LSTC n'a plus de sens. Dans tous les cas, il convient de réinitialiser la VSTC comme au démarrage ou en sauvegardant une valeur de reprise (cas de la pause). L'offset doit être réactualisé régulièrement (glissement de l'horloge LSTC par rapport au PTS qui est synchronisé sur le PCR). On pourra prendre, comme période de rafraîchissement, la période image. Le démarrage du décodage de l'audio est plus immédiat que celui de la vidéo. Il suffit de prendre en compte la VSTC pour savoir quand démarrer. Il faut bien sûr attendre que la VTSC ait été initialisée par la vidéo. Dans la mesure o on s'assure que la VSTC reste bien synchrone du décodage de la vidéo, la synchronisation de l'audio sur la vidéo se fait tout à fait naturellement par son asservissement sur la VSTC. Il peut cependant arriver que le décodeur audio ne soit pas synchrone de l'horloge 27Mhz de référence qui rythme le décodeur vidéo mais d'une horloge indépendante. Le décodeur audio doit dans ce cas être asservi sur la VSTC. Bien sûr, le décodeur MPEG et le disque dur ont été présentés intégrés dans un décodeur satellite. Ces éléments ou un des ces éléments pourraient tout aussi bien faire partie d'un récepteur de télévision numérique recevant les données comprimées. Le flux entrant est décrit étant un flux de programmes PS. Il peut également, sans sortir du domaine de l'invention, s'agir d'un flux de transport TS (Transport stream). REVENDICATIONS 1 Procédé de synchronisation d'un décodeur MPEG pour le décodage de données comprimées provenant d'un support d'enregistrement (4), ces données étant constitué de paquets de données audio et vidéo PES (Packetized Elementary Stream), caractérisé en ce qu'il comporte: - une étape de calcul d'un instant de présentation effectif Tpres de la vidéo d'une image relatif à une horloge locale LSTC, - une étape de calcul d'un offset STCO entre cet instant de présentation calculé et l'étiquette PTS correspondant à l'instant de présentation souhaité par le codeur pour la vidéo de cette image, pour définir une horloge virtuelle VSTC = STCO + LSTC - une présentation de la vidéo et de l'audio correspondant à cette image aux dates PTS relatives à l'horloge virtuelle VSTC. 2 Procédé selon la revendication 1, caractérisé en ce que le temps de transit de la vidéo dans le tampon du décodeur vidéo est imposé à une valeur TVBV prédéterminée. 3 Procédé selon la revendication 2, caractérisé en ce que la détermination de TVBV est fonction du débit d'enregistrement des données PES sur le support d'enregistrement. 4 Procédé selon la revendication 2, caractérisé en ce que la détermination de TVBV est fonction du VBV_delay. Procédé selon la revendication 1, caractérisé en ce que I'offset est fonction de la durée de décodage de l'image (TDEC), arrondie à un nombre supérieur de périodes trame. 6 Procédé selon la revendication 1, caractérisé en ce que l'offset calculé est incrémenté d'une période trame (TVSYNC). 7 Procédé selon la revendication 2, caractérisé en ce que l'offset STCO est égal à: STCO = PTS - TVBV - TVSYNC - (TempRef x 40ms) - TDEC - LSTCpic o: TVSYNC correspond à une période trame, TDEC correspond à la durée de décodage de l'image arrondie à un nombre supérieur de périodes trame, TempsRef représente la référence temporelle de l'image pour le réordonnancement, LSTCpic est relatif à l'instant de détection de la première image. 8 Procédé selon la revendication 1, caractérisé en ce que l'horloge virtuelle VSTC est réactualisée au démarrage, lors de l'exécution de " trick-modes " ou lors d'une réinitialisation du décodeur video. 9 Procédé selon la revendication 1, caractérisé en ce que lI'horloge virtuelle VSTC est réactualisée à chaque image. Procédé selon la revendication 1 pour la lecture de données en mode décalé (time shifting), les données étant enregistrées à partir d'un pointeur écriture, les données enregistrées étant lues en temps décalé à partir d'un pointeur lecture, caractérisé en ce qu'un écart minimum (11) est imposé entre le pointeur lecture et écriture et en ce que, lorsque cet écart est atteint, le mode gel du décodeur est actionné. 11 Dispositif de synchronisation d'un décodeur MPEG (7, 8) sur un flux MPEG enregistré, les données enregistrées étant constituées de paquets de données PES, caractérisé en ce qu'il comporte des moyens pour calculer un offset STCO à appliquer à l'horloge locale LSTC du décodeur pour définir une horloge virtuelle VSTC, cet offset étant égal à la différence entre l'instant de présentation Tpres de la vidéo d'une image calculé dans le référentiel LSTC et la valeur PTS de présentation de cette image provenant du codeur et en ce que le décodage des données audio et vidéo se font lorsque cette horloge virtuelle VSTC est égale à la valeur PTS correspondante. 12 Décodeur satellite caractérisé en ce qu'il comporte un décodeur MPEG (7, 8) et un dispositif de synchronisation selon la revendication 1 1. 13 Récepteur de télévision, caractérisé en ce qu'il comporte un décodeur MPEG (7, 8) et un dispositif de synchronisation selon la revendication 1 1.