Brevet FR2782437A1 — publié le 20000218

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. Le codage selon la norme MPEG fait appel à différent types de codage des images: -codage intra (image 1) ne faisant référence à aucune image précédente ou suivante, -codage inter de type prédictif (image P) pouvant faire appel à une image de référence précédente -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, selon la norme MPEG, sont regroupées en GOP ou groupes d'images, de l'appellation anglaise Group Of Pictures. La première i 5 image d'un GOP 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. 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. Considérons par exemple une diffusion de deux séquences vidéo successives à partir de données numériques stockées sous forme comprimée, un premier flux de données vidéo comprimées correspondant à une première séquence d'images appelé ancien flux qui est remplacé, à partir d'un point donné appelé point de commutation, par un deuxième flux de données vidéo comprimées appelé nouveau flux et correspondant à une deuxième séquence d'images. 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 d'un premier GOP de ce deuxième flux peut nécessiter, s'il s'agit d'un GOP ouvert, l'exploitation d'images d'un 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. En effet, 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 est en effet 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 à ce problème existe et est connue pour être décrite dans la norme MPEG II (Partie 1: Systèmes, 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 bidirectionnel, ce GOP devant être fermée. 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. Ce codage MPEG II compatible des commutations de flux diminue donc le taux de compression et 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 d'utiliser exclusivement des GOP fermées. 3 2782437 Cette solution possède donc plusieurs inconvénients: - diminution du taux de compression des données vidéo - 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... L'invention a pour but de pallier les inconvénients précités. Elle a pour objet un procédé de commutation de flux MPEG pour la transmission d'un premier flux de données correspondant à une première séquence vidéo suivi, en un point de commutation donné de ce premier flux, d'un deuxième flux de données correspondant à une deuxième séquence vidéo, chaque séquence étant codée selon une structure en GOP (Group Of Pictures), chaque GOP comprenant des images de type intra codées en intra, de type prédictif codées en inter et de type bidirectionnel codées en inter, i 5 chaque codage d'image correspondant à un coût de codage fonction de la quantité d'informations à transmettre dans le flux de données pour le codage de cette image, le point de commutation étant au niveau d'un GOP, caractérisé en ce que le deuxième flux de données est modifié avant transmission, par remplacement d'informations de codage des premières images inter de type bidirectionnel suivant l'image intra du premier GOP de la deuxième séquence après le point de commutation, lorsque l'on considère l'ordre de codage des images, par des informations de codage d'images prédéfinies dont le coût de codage est inférieur ou égal à celui des images initiales. L'invention a pour principal avantage de permettre une commutation d'une séquence vidéo sur une autre séquence ou une insertion d'une séquence vidéo dans une autre séquence en minimisant les défauts pouvant apparaître lors de la ou des commutations. Grâce à l'invention, il est possible d'exploiter des flux de données codées MPEG qui ne sont pas compatibles de la commutation de flux (GOP ouverts), et donc des séquences vidéo comprimées de manière optimale. Les transitions de séquences sont adoucies en supprimant les défauts d'image les plus gênants générés par les GOP ouverts en début du nouveau flux de données. Les commutations peuvent être effectuées de manière aléatoire, par exemple par accès aléatoire de données stockées sur disques magnétiques, les flux de données codés n'étant soumis à aucune configuration particulière avant et après un point de commutation. Le coût de réalisation est minime du fait que la structure du flux de transport (Transport Stream en anglais et selon la norme MPEG) n'est pas modifiée par le traitement, évitant des opérations complexes de dépaquetisation et repaquetisation. Les caractéristiques et avantages de la présente invention ressortiront mieux de la description suivante, donnée à titre d'exemple. Considérons une commutation, lors d'une transmission vidéo, d'une séquence vidéo appelée séquence 1 sur une deuxième séquence vidéo appelée séquence 2. Les séquences vidéo exploitées sont des séquences codées selon la norme MPEG. L'ordre de codage ou ordre codé des images, qui est aussi l'ordre dans lequel sont transmises les images en sortie d'un codeur et/ou l'ordre dans lequel sont décodées et mémorisées les images en entrée d'un décodeur est différent de l'ordre d'affichage de ces images décodées du fait des possibilités de codage bidirectionnel. Supposons les deux séquences 1 et 2 constituées d'images de type 1, B, P, dont l'ordre de codage est le suivant: - séquence 1 B1 B1 P1**B1 B1 Il B1*B 1* P 1 B1 B - séquence 2 B2 B2 P2**B2 B2 12 B2* B2* P2 B2 B2 L'image de type intra (11, 12) définit la frontière d'un nouveau GOP. Les deux images de type bidirectionnel succédant à l'image de type intra (images marquées d'un astérisque) peuvent faire référence à l'image de type intra et à l'image de type P précédant cette image intra (image marquée de deux astérisques), donc appartenant au GOP précédant. Ce choix de la référence est effectué au niveau du macrobloc, raison pour laquelle le codage d'une image globale peut faire appel simultanément à deux références, I'image de type intra et l'image de type P. La commutation au niveau du GOP donne la nouvelle séquence transmise composée de la séquence 1 jusqu'à la frontière du GOP puis de la séquence 2: séquence commutée B1 B1 P1**B1 B1 12 B2*B2* P2 B2 B2 Les deux images B2* de type bidirectionnel succédant à l'image de type intra feront référence, lors du décodage, à l'image 12 de type intra et à l'image P1** de type prédictif. En conséquence, ces deux images ne peuvent être correctement décodées, ayant perdu une de leurs images de référence (P2** remplacé par PI **). Considérons maintenant les deux séquences d'images codées dans l'ordre d'affichage, c'est à dire après réordonnancement pour l'affichage. - séquence 1 B1 B1 P1**B1* B1*11 B1 B1 P1... - séquence 2 B2 B2 P2**B2* B2* 12 B2 B2 P2... - séquence commutée B1 B1 P1**B2* B2* 12 B2 B2 P2... Le décodage des deux images B2*de type bidirectionnel exploite des images de référence différentes de celles utilisees lors du codage. Cette différence dans les images de référence est la source des défauts de visualisation pour les images B2*. Le procédé de codage selon l'invention consiste à remplacer les images B2* qui correspondent à un codage d'erreur de prédiction ou de résidu relativement à une image de référence, par des images ayant une configuration prédéterminée, de telle sorte que les informations d'erreur de prédiction contenues dans les blocs de ces images de type B soient indépendants des images de référence utiliséees lors du décodage. Les nouvelles images B2* sont des images de type inter préencodées, ce preencodage étant indépendant des séquences exploitées; elles sont calculées une seule fois et chargées dans l'équipement utilisé pour la commutation des séquences, comme expliqué plus loin. La seule contrainte concerne la taille des nouvelles images B2*, c'est à dire les données nécessaires au codage de ces images, données qui devront remplacer les données de codage des images initiales B2* dans le flux de données MPEG. Cette taille doit être inférieure ou égale à la taille des images remplacées afin de pouvoir mettre dans le flux de données MPEG, en lieu et place des données initiales, les nouvelles données, complétées par des bits de bourrage ou des valeurs nulles si la taille est inférieure. Les différentes possibilités de préencodage ou modes de codage sont détaillées ci-après et concernent aussi bien les blocs de résidus que les vecteurs de mouvement associés. Le codage en mode inter réalise un calcul d'erreur entre l'image à coder et l'image de référence reconstruite compensée en mouvement à partir de vecteurs de mouvement, ceci au niveau de chaque bloc (en fait macrobloc) composant l'image à coder. Ce sont les blocs de résidus ou blocs d'erreurs de prédiction qui constituent, avec les vecteurs de mouvement, les données de codage de l'image en inter. Une première possibilité de préencodage consiste à forcer les blocs d'erreurs de prédiction à zero et les vecteurs de mouvement associés à zéro. Dans ce cas, le décodeur reconstruit les images B2* à partir d'une ou des deux images de références selon qu'il s'agisse d'un codage monodirectionnel ou bidirectionnel. Ainsi, d'après l'ordre d'affichage de la séquence commutée indiqué plus haut: - si l'image de référence est l'image codée en intra 12 (prédiction anticipée, vecteurs de mouvement anticipé nuls), cette image est répétée deux fois avant l'affichage de l'image 12. - si l'image de référence est l'image Pl** codée en mode prédictif (prédiction différée, vecteurs de mouvement différé nuls), cette image est répétée deux fois après l'affichage de l'image Pi**. Il y a donc prolongation artificielle, d'une durée de deux images, de la séquence 1. - s'il y a deux images de référence 12 et P1** (prédiction bidirectionnelle, vecteurs de mouvement nuls), les deux images B2* sont un fondu des deux images de référence encadrant ces deux images B2* permettant de créer un effet de fading entre les deux séquences. Les images, pour un codage selon la norme MPEG, peuvent être découpées en trames et il est alors possible de coder différemment les quatre trames constituant les deux images B2*. Par exemple, la première trame de la première image (selon l'ordre d'affichage) fait référence à l'image P1**, la deuxième trame de la première image fait référence à l'image P1**et 12, la première trame de la deuxième image fait référence à l'image P1** et 12, la deuxième trame de la deuxième image fait référence à l'image 12. Une deuxième possibilité de préencodage consiste à forcer les blocs d'erreurs de prédiction à zéro et utiliser des vecteurs de mouvement associés non nuls. Dans ce cas, le décodeur reconstruit les images B2* à partir d'une ou des images de référence indiquées dans le flux de données reçu, mais ces images de référence sont compensées en mouvement à partir des vecteurs de mouvement avant d'être exploitées. Les images codées en mode intra, selon la norme MPEG peuvent être accompagnées de vecteurs de mouvement appelés vecteurs de mouvement de masquage (concealment motion vectors en anglais et selon la norme). Ces vecteurs de mouvement ne sont pas utilisés pour le codage intra et des valeurs peuvent être transmises pour une exploitation quelconque par le décodeur. Il est donc tout a fait possible de coder les séquences en attribuant aux champs de vecteurs de mouvement liés aux images de type intra, le mouvement de cette image intra par rapport à une image précédente de référence de type P. Un tel codage des séquences permet d'exploiter le champ de vecteurs de mouvement de masquage pour effectuer par exemple une extrapolation, ou extension temporelle, de ce champ de vecteurs pour le codage des images de remplacement. Par exemple, les données relatives à l'image 12 contiennent le champ de vecteurs de mouvement de masquage représentant le mouvement entre cette image 12 et l'image précédente P2, des extrapolations de ce champ de vecteurs de mouvement permettent d'attribuer un premier champ extrapolé pour l'image de remplacement de la première image B2*, un deuxième champ extrapolé pour l'image de remplacement de la deuxième image B2*. Il est alors possible, non plus de répéter simplement l'image de type intra, mais de réaliser une compensation en mouvement de cette image de type intra afin de rendre la commutation plus douce en n'ayant pas recours à une simple répétition de I'image 12* mais en réalisant une anticipation du mouvement. La qualité de la commutation est bien sur dépendante de la qualité du champ de vecteurs de mouvement exploité. Ainsi, d'après l'ordre d'affichage de la séquence commutée indiqué plus haut, si l'image de référence est l'image codée en intra 12 (prédiction anticipée), les deux images de type bidirectionnel B* correspondent à cette image 12 compensée en mouvement et sont visualisées avant l'affichage de l'image 12. Bien sûr, cette possibilité nécessite que les séquences d'image soient initialement codées en exploitant les champs de vecteurs de mouvement de masquage comme indiqué précédemment. Une troisième possibilité consiste tout simplement à coder tous les blocs des deux images de type bidirectionnel (B2*) en mode intra, par exemple en codant des images de couleur bleue ou noire et ainsi deux images bleues ou noires seront affichées entre les deux séquences. Il est également possible de coder une image représentant un logo adapté à la nouvelle séquence. Les blocs d'image ne font appel à aucune image de référence et la valeur de ces blocs n'est pas nulle mais contient l'information que l'on souhaite afficher. Une transition avec des images entièrement noires ou bleues est beaucoup plus "propre" qu'une transition faisant apparaître des défauts de blocs. Le but est de minimiser les défauts visuels lorsque l'on réalise l'enchaînement des séquences et donc d'effectuer une commutation douce. Les images au noir ne sont généralement pas détectées par l'observateur, l'effet se produisant pendant un très court instant puisque seules les premières images de type B du GOP sont concernées. L'exploitation de vecteurs de mouvement non nuls permet également d'éviter les problèmes de scintillement de l'image (flickering en anglais) lorsque 1 5 une solution consistant en la répétition d'images est choisie. L'utilisation d'un champ de vecteurs de mouvement non nuls mais constitué de vecteurs de mouvement verticaux, de module par exemple un interligne de la trame, permet de réaliser une interpolation de trame en la décalant d'un pixel et ainsi de limiter le scintillement. De plus, il est possible de décomposer le codage des images de remplacement en codage de trames constituant ces images et ainsi d'appliquer un mode de prédiction différent à chaque trame même si les séquences d'images sont codées en mode image et non trame. En effet, les décodeurs commutent d'un mode à l'autre en fonction des consignes transmises dans le flux de données selon la norme et cette commutation est possible au niveau de chaque image. D'une manière générale, tout type de prédiction prévu dans la norme est exploitable pour le codage des images de remplacement. Le choix parmi ces différentes solutions et parmi les différents types de prédiction est effectué en fonction du type de transition souhaité par I'utilisateur. Les différents groupes d'images de type B correspondant à ces solutions peuvent être générés une fois pour toutes et conservés en mémoire. On fera alors appel au groupe d'image le mieux adapté parmi le jeu mémorisé, lors des commutations. Il est également possible de calculer ces images en temps réel. Le coût de codage des images de remplacement est faible et généralement inférieur au coût de codage des images originales B2* permettant une insertion facile de ces nouvelles images dans le flux de données MPEG, en lieu et place des images originales, c'est à dire évitant des manipulations complexes au niveau du flux global. La solution choisie pourra tenir compte de ce critère de coût, sachant que le coût dépend entre autre des vecteurs de mouvement et des erreurs de prédiction. Le flux de transport TS (Transport Stream dans la norme MPEG) est constitué de paquets de données de 188 octets et 16 octets de correction d'erreurs. Les paquets correspondant aux images B2* sont donc remplacés par de nouveaux paquets contenant des données fonction de la solution retenue pour la commutation. Ainsi, après avoir choisi une solution de codage dont le coût est inférieur au coût de codage des images originales B2*, les paquets précalculés correspondant aux images de remplacement sont substitués aux paquets concernant ces images originales. Des paquets de bourrage sont utilises si le nombre de paquets relatifs aux images de remplacement est inférieur. De cette i 5 manière, la structure en paquets n'est pas modifiée, la séquence de paquets n'est pas cassée du fait que les informations PCR (Program Clock Reference) se trouvant dans l'entête au niveau du flux transport (TS) et liées au nombre de paquets restent valables pour l'ensemble des paquets. En effet, la référence horloge ne peut être exploitée que pour une transmission a débit fixe, des paquets de bourrage du flux de transport compensant la variation de débit lors du codage vidéo et audio. La mise en application de l'invention peut être réalisée de la manière suivante. Lors d'une commutation de segments de programmes, par exemple d'une séquence 1 vers une séquence 2, on mémorise dans un fichier intermédiaire la dernière section de la séquence 1 et la première section de la séquence 2 modifiée. Cette modification est simplement liée aux problèmes de synchronisation, afin d'éviter un mauvais alignement des trames vidéo et audio, et consiste par exemple à intercaler des données correspondant aux temps morts. Ensuite, on remplace, dans ce fichier intermédiaire, les données spécifiques correspondant à la partie utile (ou payload en anglais et dans la norme MPEG) relative aux premières images de type B de la deuxième séquence (les images B2*,dans l'exemple) par des données relatives à un groupe d'images prédéfinies contenant une structure connue et choisi par exemple dans un échantillon d'images mémorisées à cette fin. Enfin, les données tronquées de la première séquence sont collées à celles du fichier intermédiaire, elles-mêmes collées aux données de la deuxième séquence tronquée à son début. Ainsi, les fichiers originels ne sont pas modifiés et peuvent être réutilisés par la suite en exploitant de nouveaux points de commutation. Seul le fichier temporaire sera détruit après utilisation. Il est donc possible de stocker sur serveurs les séquences séparément et sous forme comprimée. Il est également possible d'utiliser plusieurs sources de données comprimées, serveurs, supports de type DVD, CD-ROM..., encodeurs MPEG temps réel (bien que ces derniers ne soient plus nécessaires grâce à l'invention)..., les problèmes de commutation étant résolus de la manière décrite précédemment. Les exemples décrits ci-dessus concernent le remplacement de deux images de type bidirectionnel. L'invention n'est bien sûr pas limitée à ce nombre et il pourrait tout aussi bien être envisagé le remplacement d'un nombre plus important d'images sans que le procédé ainsi mis en oeuvre sorte du domaine de l'invention. Si par exemple la structure du GOP est composée de 1 ou 3 images de type bidirectionnel au lieu de deux comme précédemment décrit, le nombre d'images concerné par le remplacement serait respectivement de 1 ou 3 images. Les applications concernent la transmission de programmes constitués de segments de programmes aussi bien que le stockage de tels programmes par exemple pour une transmission décalée dans le temps, le flux de données pouvant être transmis soit vers des unités de stockage soit directement vers des unités de distribution de programmes de télévision. Elles concernent tous types d'opérations d'édition permettant d'obtenir un nouveau flux binaire de données codées répondant aux prescriptions définies par la norme MPEG. REVENDICATIONS 1 Procédé de commutation de flux MPEG pour la transmission d'un premier flux de données correspondant à une première séquence vidéo suivi, en un point de commutation donné de ce premier flux, d'un deuxième flux de données correspondant à une deuxième séquence videéo, chaque séquence étant codée selon une structure en GOP (Group Of Pictures), chaque GOP comprenant des images de type intra codées en intra, de type prédictif codées en inter et de type bidirectionnel codées en inter, chaque codage d'image correspondant à un coût de codage fonction de la quantité d'informations à transmettre dans le flux de données pour le codage de cette image, le point de commutation étant au niveau d'un GOP, caractérisé en ce que le deuxième flux de données est modifié avant transmission, par remplacement d'informations i 5 de codage des premières images inter de type bidirectionnel suivant l'image intra du premier GOP de la deuxième séquence après le point de commutation, lorsque l'on considère l'ordre de codage des images, par des informations de codage d'images prédéfinies dont le coût de codage est inférieur ou égal à celui des images initiales. 2 Procédé de commutation selon la revendication 1, caractérisé en ce que les informations prédefinies correspondent à un codage intra. 3 Procédé de commutation selon la revendication 1, caractérisé en ce que les informations prédéfinies correspondent à un codage inter de type bidirectionnel dont l'erreur de prédiction est forcée à zéro. 4 Procédé selon la revendication 3, caractérisé en ce que les informations prédéfinies associées à une image comprennent les données de codage d'un champ de vecteurs de mouvement et en ce que ces données codent un champ de vecteurs de mouvement nuls. Procédé selon la revendication 3, caractérisé en ce que les informations prédefinies associées à une image comprennent les données de codage d'un champ de vecteurs de mouvement et en ce que ces données codent un champ de vecteurs de mouvement horizontal. 6 Procédé selon la revendication 3, caractérisé en ce qu'une seule image est prise comme image de référence pour le codage inter de type bidirectionnel. 7 Procédé selon la revendication 6, caractérisé en ce que l'image de référence est la dernière image de type prédictif P de la première séquence avant le point de commutation. 8 Procédé selon la revendication 6, caractérisé en ce que l'image de référence est la première image intra de la deuxième séquence après le point de commutation. 9 Procédé selon la revendication 8 pour la commutation de flux de données MPEG dont les champs de vecteurs de mouvement de masquage i 5 associés aux images de type intra de ces flux de données sont calculés, pour chaque champ, en fonction du mouvement entre l'image de référence précédant l'image de type intra associée à ce champ et cette image de type intra, en considérant l'ordre de codage des images d'une séquence, caractérisé en ce que le deuxième flux est modifié, avant transmission, par remplacement des informations de codage des champs de vecteurs de mouvement des dites premières images de type B, par des informations de codage des champs de vecteurs de mouvement calculés à partir d'une interpolation temporelle des champs de vecteurs de mouvement de masquage associés aux images de type intra précédant les dites premières images de type B selon l'ordre de codage. Procédé selon l'une des revendications précédentes, caractérisé en ce que les images concernées par le remplacement d'informations de codage sont les deux premières images inter de type bidirectionnel suivant l'image intra.