FR 2795272 A1 20001222 FR 9907713 A 19990618 L'invention concerne un procédé de commutation de flux MPEG, par exemple de séquences vidéo ou segments de programmes codés selon la norme MPEG, acronyme de l'expression anglaise Motion Picture Expert Group. Les films ou séquences vidéo sont aujourd'hui couramment stockées sous forme comprimée, ceci afin de réduire les capacités mémoire nécessaires. Les commutations de séquences sont alors effectuées non en bande de base mais directement à partir des flux de données codées MPEG. Ainsi, une diffusion de séquences vidéo successives ou une insertion d'une séquence dans une autre séquence se fait à partir de données numériques stockées sous forme comprimée. A un premier flux de données vidéo comprimées correspondant à une première séquence d'images, appelé ancien flux, succède, à partir d'un point donné appelé point de commutation, un deuxième flux de données vidéo comprimées appelé nouveau flux et correspondant à une deuxième séquence d'images. La commutation d'un flux de données codé selon la norme MPEG à un autre flux de données codé selon cette norme amène un certain nombre de problèmes au voisinage du point de commutation. La gestion de la mémoire tampon du 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 2 2795272 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. Un premier problème se pose concernant la gestion de la mémoire du décodeur, du fait que le nombre de bits par image (ou trame) n'est pas fixe. L'état de la mémoire tampon varie avec le temps et lors de la commutation, les éléments pris en compte par le nouveau flux pour la gestion de cette mémoire correspondent à un état de remplissage de la mémoire qui est différent de l'état réel correspondant à l'ancien flux. Il peut en résulter une saturation de la mémoire entraînant la perte d'image ou un assèchement de la mémoire créant par exemple un gel d'image. Un deuxième problème concerne la synchronisation au niveau du décodage et affichage des images. Les étiquettes contenues dans les flux de données sont relatives à des horloges propres à chaque flux (à savoir à un PCR propre) et les instants de décodage et d'affichage des images sont à resynchroniser. Un autre problème est lié au codage même des images. Les différents types de codages auxquels fait appel la norme MPEG sont: - le codage intra (image 1) ne faisant référence à aucune image précédente ou suivante, - le codage inter de type prédictif (image P) pouvant faire appel à une image de référence précédente - le codage inter de type bidirectionnel (image B) pouvant faire appel à une image de référence précédente et/ou à une image de référence suivante. Les images sont regroupées en GOP ou groupes d'images, de l'appellation anglaise Group Of Pictures. La première image d'un GOP, lorsque l'on considère l'ordre de transmission, est une image de type intra et les premieres images de type B suivantes peuvent faire appel à des images du même GOP, il s'agit alors d'un GOP fermé, ou bien à des images du même GOP et du GOP précédent, il s'agit alors d'un GOP ouvert. 3 2795272 Le problème se pose lorsque le flux de données succédant au point de commutation commence par un GOP ouvert. En effet, le décodage des images comprimées du premier GOP de ce deuxième flux peut nécessiter, s'il s'agit d'un GOP ouvert, l'exploitation d'images du GOP précédent. Le GOP précédent correspondant à un flux de données d'une autre séquence, les images décodées correspondant à ce GOP ouvert présenteront des défauts. Ces défauts sont généralement très visibles et sont dus à l'exploitation, pour le décodage de ces premières images de type B de la deuxième séquence, d'une image de référence différente de celle ayant été utilisée pour le codage. Les blocs d'image constituant l'image ou les images du GOP ouvert codées en mode bidirectionnel sont des blocs d'image codés en inter à partir d'une image de référence de type P ou I du GOP précédent pour la même séquence d'image. Le décodage des blocs codés en inter, blocs composés d'informations de résidus ou d'erreurs de prédiction, pour les premières images de type bidirectionnel après le point de commutation, va exploiter des blocs différents de ceux ayant servi à calculer ces blocs de résidus codés en inter. L'image de référence prise en compte au niveau du décodage sera en effet une image de l'ancien flux, donc différente de celle prise en compte au niveau du codage. Des effets de blocs très gênants consistant en la visualisation de blocs d'image erronés, apparaîtront donc sur les premières images de la deuxième séquence. Une solution partielle à ces problèmes existe et est connue pour être décrite dans la norme MPEG II (Partie 1: Systèmes paragraphe 2.4 et I'annexe K). Il s'agit d'incorporer, dans la couche système, des informations concernant des points de commutation possibles (appelés "splicing points" dans la norme) pour lesquels le flux de transport a des caractéristiques favorables, permettant un décodage des images sans les défauts cités plus haut (par exemple en utilisant des GOP fermés). La commutation ne pourra alors être réalisée qu'en ces seuls points. Bien sûr, ces informations doivent être incorporées dans le flux de données dès le codage des images et il n'est plus possible de les incorporer par la suite sauf à réaliser une nouvelle décompression et compression des données. Un point de commutation autorisé, au début d'un GOP, ajoute une contrainte sur le codage des premières images de ce GOP, codées en mode 4 2795272 bidirectionnel, ce GOP devant être fermé. Ces images ne peuvent utiliser, comme images de référence, que des images suivantes et non plus des images précédentes, elles sont donc forcées en mode monodirectionnel. L'utilisation de GOP fermés, donc le codage des deux premières images B suivant une image I à partir de l'image P suivante (ordre de codage) et de la seule image I (au lieu de l'image P précédente du GOP précédent), ces images B pouvant alors être considérées comme des images P, casse la régulation du codeur à partir des états de la mémoire tampon et donc dégrade la qualité des images, du fait d'un coût de codage plus important. Pour donner un ordre de grandeur, les images de type P ont un coût de codage environ deux fois plus important que celui des images de type B. Ce codage MPEG II compatible des commutations de flux n'est habituellement pas utilisé pour le codage de films ou séquences vidéo. Il n'existe aujourd'hui, sur le marché, que très peu de produits forçant des GOP fermés pour les besoins de commutation, les contraintes induites pour la régulation de débit au niveau du codeur étant gênantes. D'autre part, déterminer à priori à quels endroits du flux de données doit exister un GOP fermé, c'est à dire prévoir les endroits de la séquence o seront les coupures, suppose que l'on connaisse les utilisations futures des séquences. Sinon, il serait nécessaire de réaliser exclusivement des GOP fermés alors que l'on souhaite n'en exploiter qu'un très petit nombre. Les inconvénients que génère cette solution sont donc, entre autres: manque de flexibilité, les commutations étant limitées à des points de commutation prédéterminés (splice points), - diminution du taux de compression des données vidéo due à l'insertion des points de commutation qui doivent être suffisamment nombreux dans le flux de données pour permettre un minimum de flexibilité, bien que la plupart de ces points ne seront pas exploités, - nécessité d'un décodage et recodage pour les flux de données ne possédant pas cette compatibilité de commutation de flux à l'origine, avec tous les problèmes liés au restockage, à la qualité d'image... - risque de sévères restrictions quand à la régulation du débit, pouvant aller jusqu'à une perte de qualité de l'image, si un nombre important de points de commutation est introduit. La présente invention a pour but de pallier les inconvénients précités. Elle concerne un procédé de commutation d'un ancien flux de données MPEG vers un nouveau flux de données MPEG pour obtenir un flux commuté, le point de sortie dans l'ancien flux correspondant à la fin d'un paquet de donnees d'un flux TS relatif à la dernière image de l'ancien flux et le point d'entrée dans le nouveau flux correspondant au début d'un paquet de données relatif à la première image du nouveau flux, caractérisé en ce que, PCRold (Program Clock Reference) et PCRnew étant les instants d'horloge relatifs respectivement au point de sortie et point d'entrée, DTS_next_AUold (Decoding Time Stamp) et DTS_first_AUnew correspondant respectivement à l'instant de décodage calculé de l'image suivant la dernière image de l'ancien flux et l'instant de décodage calculé de la première image du nouveau flux, si: DTS_next_AUold - PCRold DTS_first_AUnewPCRnew, - dans une deuxième étape, des paquets de bourrage TS sont insérés entre le point de sortie et le point d'entrée de manière à faire coïncider les instants de décodage DTS_next_AUold et DTS_first_AUnew. Elle concerne également un procédé de commutation d'un ancien flux de données MPEG vers un nouveau flux de données MPEG pour obtenir un flux commuté, le point de sortie dans l'ancien flux correspondant à la fin d'un paquet de données d'un flux TS relatif à la dernière image de l'ancien flux et le point d'entrée dans le nouveau flux correspondant au début d'un paquet de données relatif à la première image du nouveau flux, caractérisé en ce que, PCRold (Program Clock Reference) et PCRnew étant les instants d'horloge relatifs respectivement au point de sortie et point d'entrée, DTS_next_AUold (Decoding Time Stamp) et DTS_first_AUnew correspondant respectivement à l'instant de décodage calculé de l'image suivant la dernière image transmise de l'ancien flux et l'instant de décodage calculé de la première image du nouveau flux, si: DTS_next_AUold - PCRold i + INT [ ((DTS_first_AUnew - PCRnew) - (DTS_nextAUold - PCRold)) / (période image)], INT correspondant à la partie entière. - dans une deuxième étape, des paquets de bourrage TS sont insérés entre le point de sortie et le point d'entrée de manière à faire coïncider les instants de décodage DTS_next_AUold et DTS_first_AUnew modulo la période image. Selon un mode particulier de réalisation, le procédé est caractérisé en ce que la modification de l'instant de décodage des images du nouveau flux est effectuée en attribuant un décalage correspondant (offset) à l'étiquette DTS et à l'horloge PCR pour le nouveau flux. Selon un mode particulier de réalisation, le procédé est caractérisé en ce que n images préencodees sont insérées avant la première image du nouveau flux, dont la taille et les étiquettes attribuées permettent leur décodage pendant les instants DTS sautés par la première image du nouveau flux. Selon un mode particulier de réalisation, des paquets de bourrage sont insérés dans le flux pour faire correspondre les instants de décodage des images insérées aux instants DTS sautés. 7 2795272 Selon un mode particulier de réalisation, le coût des images preencodées de remplacement dans le nouveau flux est tel que le nombre de bits du nouveau flux entrant dans la mémoire du décodeur entre l'instant PCRnew et l'instant DTS_first_AUnew - (période image) est inférieur ou égal au nombre de bits de l'ancien flux qui auraient été stockés dans la mémoire du décodeur entre l'instant PCRold et DTS_next_AUold - (période image). Grâce à l'invention, une mise en oeuvre simple de la commutation de flux est possible, délivrant, en bande de base, une transition correcte d'une séquence à l'autre bien que les flux de données MPEG ne soient pas rendus compatibles de telles commutations par l'adjonction de points de commutation. Il n'est ainsi pas nécessaire d'utiliser des équipements d'un coût élevé pour réaliser de telles commutations, par exemple lors de l'insertion de publicités... Une grande flexibilité et une grande qualité de commutation de flux sont obtenues en ce qui concerne les points de commutation. Les principales conditions à respecter, pour obtenir une commutation de flux correcte pour des flux de données ne possédant pas la compatibilité commutation, concernent: - I'emplacement des points de coupure de l'ancien flux ou points de sortie et l'emplacement des points d'entrée du nouveau flux - la synchronisation des signaux et horloges si l'on désire obtenir un affichage des images sans discontinuité - la gestion du remplissage de la mémoire du décodeur pour éviter des débordements ou assèchements. Emplacement des points de commutation. - conditions concernant les points d'entrée du nouveau flux: Tous les débuts de GOP peuvent être considérés comme des points d'entrée, à condition que les GOP soient des GOP fermés. En effet, dans ce cas, la première image à décoder est une image codée en intra et les images suivante de type B ne sont pas codées en fonction d'une image de référence se trouvant dans le GOP précédent. 8 2795272 Dans le cas o le GOP est un GOP ouvert, le point d'entrée peut également être le début d'un GOP à la condition que, dans le flux de transport TS, les paquets correspondant aux images codées à partir des images de référence se trouvant dans le GOP précédent soient remplacés par de nouveaux paquets correspondant à un codage indépendant de ces images (voir plus loin, remplacement d'images de type B). La demande de brevet français déposée par la demanderesse le 14 août 1998 sous la référence 9810432 explique également la mise en oeuvre d'un tel procédé. Bien entendu, si l'on souhaite accéder à n'importe quel début de GOP, ces derniers doivent être assimilés à des séquences. Il est en effet nécessaire de décoder l'entête de séquence pour pouvoir décoder les GOP composant cette séquence, pour connaître par exemple le format des images (4/3 ou 16/9), le taux de compression.... Une solution, conforme au codage MPEG, est donc de créer artificiellement une séquence par GOP, c'est à dire de mettre une entête de séquence par GOP, ce qui augmente légèrement le débit mais permet d'augmenter le nombre de points d'accès aléatoire. conditions concernant les points de sortie de l'ancien flux: Les points de sortie doivent se trouver soit avant une image de type I soit avant une image de type P. En effet, dans ces cas, toutes les images précédent ce point de sortie seront affichées et il n'y a donc pas de risque de recevoir une image codée qui n'est pas à afficher et donc d'avoir une image restant dans la mémoire tampon du décodeur. Le cas contraire peut se produire si l'image codée suivant la dernière image transmise correspond, quand on considère l'ordre d'affichage et non plus l'ordre de codage, à une image précédente, par exemple lors d'une coupure après une image codée de type P. Synchronisation des signaux Par la suite, on utilisera le sigle PCR, initiales de l'appellation anglaise Program Clock Reference dans la norme MPEG, pour désigner la référence horloge relative à un flux de données donc à une séquence. 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. 9 2795272 On utilisera également le sigle DTS, initiales de l'appellation anglaise Decoding Time Stamp, pour désigner l'étiquette temps affectée à une image. Le DTS donne les horaires de décodage, c'est à dire l'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 en-têtes de paquets de 188 octets du flux de transport TS et dans des entêtes de paquets du flux PES (initiales de l'appellation anglaise Packetised Elementary Streams), 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. Ces sigles seront indicés old ou new selon qu'ils appartiennent à l'ancien flux ou au nouveau flux. La figure 1 représente, pour la ligne supérieure référencée 1, l'ancien flux de données. La flèche repérée outpoint" représente le point de sortie de l'ancien flux relatif à l'instant PCRold. Cette information PCRold correspond au premier octet de la première image de l'ancien flux non transmise. A partir de ce point est représenté l'ancien flux (non transmis) en pointillés ainsi que l'emplacement relatif à l'instant de décodage de l'image (non transmise) suivant la dernière image transmise par cet ancien flux (DTS_next_AUold). La ligne inférieure référencée 2 représente le nouveau flux. La flèche repérée " Inpoint" représente le point d'entrée du nouveau flux relatif à un instant PCRnew. Cette information PCRnew, transportée par le premier paquet de la première image du nouveau flux, correspond au premier octet de cette première image. La flèche repérée DTS_first_AUnew représente l'instant de décodage de la première image du nouveau flux dans le référentiel correspondant, c'est à dire relativement à l'horloge PCRnew. Si l'on souhaite une commutation sans défaut, la première image du nouveau flux doit être décodée à un instant DTS qui doit être égal à I'instant de décodage de la dernière image de l'ancien flux incrémenté de 40 ms. Or les PCR des deux flux sont asynchrones et il n'y a donc à priori aucune raison pour que le décodage tombe 40 ms après. Les solutions ci-après sont proposées pour réaliser une telle synchronisation. La figure 2 décrit la synchronisation des flux lors de la commutation d'un ancien flux référencé 3 sur un nouveau flux référencé 4 pour donner un flux commuté référencé 5. La valeur DTS du flux commuté, nommée DTSsplice sur la courbe , doit correspondre à celle DTS_next_AUold de l'ancien flux pour obtenir une commutation sans défaut. C'est en instaurant un temps mort At avant la commutation sur le nouveau flux, donc entre l'instant PCRold et PCRnew ou, en d'autres termes, en positionnant l'instant PCRnew du nouveau flux par rapport à l'instant PCRold, en fonction de la comparaison entre DTS_next_AUold - PCRold et DTS_first_AUnew- PCRnew, que l'on réalise, lorsque cela est possible, cette synchronisation. La première expression correspond à la durée entre l'instant de commutation PCRold pour l'ancien flux et l'instant de décodage de l'image suivant la dernière image transmise avant la commutation, c'est à dire la valeur DTSnext AUold. La deuxième expression correspond à la durée entre l'instant de commutation PCRnew pour le nouveau flux et l'instant de décodage de la première image du nouveau flux, c'est à dire la valeur DTS_first_AUnew. Il s'agit en fait de la durée de séjournement de la première image du nouveau flux dans la mémoire du décodeur depuis l'instant de réception et mémorisation du premier octet de l'image jusqu'à l'instant de décodage de cette même image (le modèle suppose le décodage instantané pour une image). - premier cas DTSnextAUold - PCRold > DTSfirstAUnew- PCRnew La commutation avec synchronisation est possible, sans précaution particulière dans le cas de l'égalité, en ajoutant un temps mort dans le cas de l'inégalité. Ce temps mort est calculé de manière à faire correspondre le DTS de la prochaine image (non transmise) de l'ancien flux avec le DTS de la première image transmise du nouveau flux. Ce temps mort est réalisé par l'insertion de paquets de bourrage TS entre les instants PCRold et PCRnew. On calcule le nombre de paquets de bourrage nécessaires pour correspondre au temps mort. L'erreur est donc inférieure à la durée d'un paquet, ce qui correspond à quelques centaines de microsecondes pour un débit de l'ordre de 10 Mbits et est donc négligeable devant 40 ms. On a alors, si DTSsplice correspond à l'instant de décodage de la première image du nouveau flux et PCRsplice l'instant de réception du premier octet de la première image du nouveau flux: DTSsplice = DTS_next_AUold PCRsplice = PCRnew + DTS_next_AUold - DTS_first_AUnew En ce qui concerne le référentiel temporel, il faut indiquer que le passage, dans le flux commuté, du référentiel de l'ancien flux au référentiel du nouveau flux se fait après la réception des paquets de bourrage donc à la première image du nouveau flux: - soit grâce à un indicateur de rupture de PCR permettant de passer de la valeur PCR obtenue à la fin des paquets de bourrage (PCRsplice) à la valeur PCRnew, - soit en affectant un décalage (offset en anglais) à la valeur PCR obtenue à la fin des paquets du bourrage (PCRsplice), ce décalage étant égal à la différence entre PCRnew et cette valeur PCRsplice. - deuxième cas: DTSnextAUold - PCRold décodage de la prochaine image (non transmise) de l'ancien flux. La solution proposée ici est de "sauter" un ou plusieurs instants de décodage DTS et donc de décoder la première image du nouveau flux non plus à l'instant DTS_next_AUold, mais à l'instant DTS_next_AUold plus un nombre entier n de périodes image (40ms). Sachant que deux valeurs successives de DTS sont espacées d'une période image, on va donc choisir cet instant de décodage DTSsplice tel que: DTSsplice = DTS_next_AUold + {1 + INT [ [ (DTSfirst_AUnew - PCRnew) (DTSnext_AUold - PCRold)] / (période image)]} x (période image) INT étant la partie entière de la division. La valeur de PCRsplice est alors: PCRsplice = PCRnew + DTS_next_AUold DTS_first_AUnew Le fait de décaler l'instant de décodage de la première image du nouveau flux de n périodes image par rapport à l'instant DTS_next_AUold génère un " temps mort " qui pourrait être rempli par des paquets de bourrage. Une idée de l'invention consiste à insérer dans le flux, des images préencodées permettant ainsi de décoder une image à chaque période image, réduisant ainsi les défauts de commutation. Ces images préencodées sont décodées lors des instants DTS " sautés" par la première image du nouveau flux. Les paquets de bourrage sont ajoutés, comme indiqué dans le cas précédent, pour permettre la synchronisation aux instants DTS. Le codage de l'image ou des images insérées est fonction du " temps mort " disponible. Il s'agit, par exemple, de codage d'images au noir, d'images bleues ou d'images de type P, images préencodées selon des modes particuliers ne faisant pas référence au contenu d'une ou plusieurs images de la séquence. Une autre solution, mais qui peut aussi être combinée à la précédente, consiste non pas à sauter des instants de décodage DTS mais à remplacer des images du nouveau ou de l'ancien flux par des images préencodées de coût de codage inférieur à celui des images originelles. Par exemple, les premières images de type B du nouveau flux sont remplacées par des images de type B préencodées indépendamment de la séquence. Ces remplacements se font au niveau de la couche TS. Des modes de codage 13 2795272 spécifiques sont utilisés tels que prédiction anticipée avec vecteurs de mouvement anticipé nuls entraînant par exemple la répétition de l'image intra. Ceci permet d'ailleurs d'éliminer le problème des GOP ouverts pour lesquels les images de type B peuvent aller chercher, pour leur codage, une image de référence du GOP précédent. Ces images B ainsi codées sont équivalentes à des images de type P. Cette technique permet de réduire l'intervalle de temps représenté par l'expression DTS_first_AUnew PCRnew, par élimination d'un certain nombre de paquets TS qui deviennent inutiles, le coût de codage des images préencodées étant inférieur à celui des images originelles. Et celà jusqu'à inversion de l'inégalité conduisant au premier cas. Des paquets de bourrage sont ajoutés au nouveau flux, comme précédemment indiqué, afin d'obtenir une synchronisation sans défaut, c'est à dire une synchronisation faisant correspondre le DTS de l'ancien flux au DTS du nouveau flux. Une opération analogue à la précédente peut également être effectuée mais cette fois sur l'ancien flux. Les dernières images de type B de l'ancien flux sont remplacées par des images de type B, préencodées indépendamment de la séquence. Ces remplacements se font au niveau de la couche TS. Les mêmes modes de codage que précédemment peuvent être utilisés. Le résultat de cette opération est l'augmentation de l'intervalle de temps représenté par l'expression DTS_next_Auold - PCRold, par élimination d'un certain nombre de paquets TS qui deviennent inutiles, le coût de codage des images preencodées étant inférieur à celui des images originelles. Les deux opérations peuvent également être combinées, I'objectif étant toujours de revenir au cas le plus favorable, à savoir le premier cas. Etat de remplissage de la mémoire tampon du décodeur. L'état de remplissage de la mémoire du décodeur doit être contrôlé, un assèchement ou un débordement générant des défauts dans la présentation de l'image. Soit Rold le débit de l'ancien flux et Rnew le débit du nouveau flux. -premier cas: Rold (DTS_next_AUold - (période image) - PCRold) > Rnew (DTSfirst_AUnew - période image - PCRnew) Cela revient à dire, si l'on note que DTS_next_AUold - (période image) est l'instant de sortie appelé Tout de la mémoire tampon du décodeur de la dernière image de l'ancien flux, que le nombre de bits du nouveau flux stockés dans la mémoire du décodeur, entre l'instant PCRnew et l'instant Tout est inférieur ou égal au nombre de bits de l'ancien flux qui auraient été stockés entre l'instant PCRold et cet instant Tout si ce flux avait continué d'être transmis. En conséquence, il n'y a pas de risque de débordement. - deuxième cas: Rold (DTS_next_AUold - (période image) - PCRold) continué d'être transmis. Cette opération est effectuée dans la cas ou elle n'a pas eu lieu pour des problèmes de synchronisation comme indiqué précédemment ou ne serait pas suffisante pour assurer la condition précédente, les images choisies devant alors être de coût de codage encore plus faible. C'est cette même opération qui permet également d'éliminer le problème des GOP ouverts. On peut également observer que l'état de remplissage de la mémoire tampon du décodeur est généralement à un niveau haut en fin de GOP, un décodage d'une image 1, coûteuse en bits de codage, étant imminent. En conséquence, pour diminuer les risques de débordement, il est possible de réduire le niveau de remplissage de la mémoire avant le point de 2795272 commutation. En conséquence, une autre solution, mais qui peut aussi être combinée à la précédente, consiste alors à remplacer les dernières images de type B de l'ancien flux par de nouvelles images préencodées moins coûteuses en bits de codage. Le choix des images préencodées, ou, d'une autre manière la diminution dans le nombre de bits utiles transmis dans la mémoire du décodeur, est également fonction de la différence entre Rold (DTS_next_AUold - (période image) - PCRold) et Rnew (DTS_first_AUnew période image - PCRnew). L'économie en bits de codage faite en remplaçant ces images de l'ancien flux permet en effet de compenser cette différence. Ceci, également, dans le cas ou l'opération n'a pas été effectuée pour des problèmes de synchronisation ou bien ne serait pas suffisante. Enfin, la solution consistant à décaler l'instant de décodage de la première image du nouveau flux de n périodes image par rapport à l'instant DTS_next_Auold avec génération d'un "temps mort" et insertion dans le flux d'images préencodées assurant le décodage d'une image à chaque période image, peut s'avérer nécessaire pour mener à bien le contrôle de l'état de remplissage de la mémoire tampon du décodeur. Les applications de l'invention concernent la transmission et le stockage de programmes, ainsi que l'insertion de publicités ou le décrochage régional ou local. 16 2795272 REVENDICATIONS 1. Procédé de commutation d'un ancien flux de données MPEG (1, 3) vers un nouveau flux de données MPEG (2, 4) pour obtenir un flux commuté (5), le point de sortie dans l'ancien flux correspondant à la fin d'un paquet de données d'un flux TS relatif à la dernière image de l'ancien flux et le point d'entrée dans le nouveau flux correspondant au début d'un paquet de données relatif à la première image du nouveau flux, caractérisé en ce que, PCRold (Program Clock Reference) et PCRnew étant les instants d'horloge relatifs respectivement au point de sortie et point d'entrée, DTS_next_AUold (Decoding Time Stamp) et DTS_first_AUnew correspondant respectivement à l'instant de décodage calculé de l'image suivant la dernière image de l'ancien flux et l'instant de décodage calculé de la première image du nouveau flux, si: DTSnext AUold - PCRold DTSfirstAUnew - PCRnew, dans une deuxième étape, des paquets de bourrage TS sont insérés entre le point de sortie et le point d'entrée de manière à faire coïncider les instants de décodage DTS_next_AUold et DTS_first_AUnew. 2. Procédé de commutation d'un ancien flux de données MPEG (1, 3) vers un nouveau flux de données MPEG (2, 4) pour obtenir un flux commuté (5), le point de sortie dans l'ancien flux correspondant à la fin d'un paquet de données d'un flux TS relatif à la dernière image de l'ancien flux et le point d'entrée dans le nouveau flux correspondant au début d'un paquet de données relatif à la première image du nouveau flux, caractérisé en ce que, 17 2795272 PCRold (Program Clock Reference) et PCRnew étant les instants d'horloge relatifs respectivement au point de sortie et point d'entrée, DTS_next_AUold (Decoding Time Stamp) et DTS_first_AUnew correspondant respectivement à l'instant de décodage calculé de l'image suivant la dernière image transmise de l'ancien flux et l'instant de décodage calculé de la première image du nouveau flux, si: DTS_next_AUold - PCRold INT correspondant à la partie entière. - dans une deuxième étape, des paquets de bourrage TS sont insérés entre le point de sortie et le point d'entrée de manière à faire coïncider les instants de décodage DTS_next_AUold et DTS_first_AUnew modulo la période image. 3. Procédé selon la revendication 2, caractérisé en ce que la modification de l'instant de décodage des images du nouveau flux est effectuée en attribuant un décalage correspondant (offset) à l'étiquette DTS et à l'horloge PCR pour le nouveau flux. 4. Procédé selon la revendication 3, caractérisé en ce que n images préencodées sont insérées avant la première image du nouveau flux, dont la taille et les étiquettes attribuées permettent leur décodage pendant les instants DTS sautés par la première image du nouveau flux. 5. Procédé selon la revendication 4, caractérisé en ce que des paquets de bourrage sont insérés dans le flux pour faire correspondre les instants de décodage des images insérées aux instants DTS sautés. 18 2795272 6. Procédé selon la revendication 1 ou 4, caractérisé en ce qu'une image préencodée est une image dont l'erreur de prédiction est nulle. 7. Procédé selon la revendication 1 ou 4, caractérisé en ce qu'une image préencodée est une image de type intra. 8. Procédé selon la revendication 1, caractérisé en ce que le coût des images préencodées de remplacement dans le nouveau flux est tel que le nombre de bits du nouveau flux entrant dans la mémoire du décodeur entre l'instant PCRnew et l'instant DTS_first_AUnew - (période image) est inférieur ou égal au nombre de bits de l'ancien flux qui auraient été stockés dans la mémoire du décodeur entre l'instant PCRold et DTSnextAUold - (période image). 9. Procédé selon la revendication 8, caractérisé en ce que cette différence prenne en compte, le cas échéant, la différence de coût entre les images remplacées dans l'ancien flux et les images originelles de cet ancien flux.