Brevet FR2873465A1 — publié le 20060127

La présente invention se rapporte d'une manière générale à des multiplexeurs statistiques destinés à coder des programmes vidéo numériques dans un environnement à programmes multiples et plus particulièrement à un multiplexeur statistique dans lequel une redondance est prévue pour augmenter la fiabilité. Avec les progrès récents des techniques de transmission de données numériques et de compression vidéo numérique, telles qu'utilisées dans la norme MPEG 2, il est possible de délivrer plusieurs programmes vidéo compressés numériquement, dans la même bande passante que celle occupée actuellement par un seul canal de télévision analogique (TV). Ces possibilités offrent des opportunités pour les fournisseurs de services de programmes (par exemple les télédiffuseurs tels que CNN, ABC), les opérateurs de réseaux (par exemple les propriétaires de réseaux câblés et par satellites), et les utilisateurs finaux. Dans un environnement de transmission à programmes multiples, plusieurs programmes (par exemple des canaux) sont codés, multiplexés et transmis sur un seul canal de communication. Comme ces programmes partagent une capacité de canal limitée, le débit binaire regroupé des programmes ne doit pas être supérieur au débit du canal de communication. En conséquence, de nombreuses applications de codage vidéo utilisent des techniques de multiplexage statistique pour combiner plusieurs programmes, chacun comprenant un flux binaire vidéo compressé, en un seul flux binaire multiplexé, par exemple en vue d'une transmission sur un seul canal. Le débit binaire d'un flux compressé donné varie généralement avec le temps sur la base de la complexité des signaux vidéo correspondants. Un multiplexeur statistique tente d'estimer la complexité des diverses séquences de trames vidéo d'un signal vidéo et alloue des bits de canal parmi les flux binaires vidéo compressés correspondants de manière à fournir un niveau approximativement constant de qualité vidéo pour tous les flux multiplexés. Par exemple, une séquence de trames vidéo donnée présentant une valeur relativement importante d'activité dans l'espace ou de mouvement peut être plus complexe que d'autres séquences, et en conséquence se voir allouer plus de bits que les autres séquences. Un exemple d'un système de codage par multiplexage statistique est décrit dans le document de M. Perkins & D. Arnstein, intitulé "Statistical Multiplexing of Multiple MPEG 2 Video Programs in a Single Channel" (multiplexage statistique de programmes vidéo multiples au format MPEG 2 sur un seul canal), SMPTE J., volume 104, N 9, pages 596 à 599, septembre 1995. Comme décrit dans cette référence, des codeurs multiples reçoivent chacun un programme respectif, codent le programme, et classe leurs données d'images compressées d'un signal vidéo du programme dans une mémoire tampon correspondante de taille fixe en attendant qu'elles soient soumises à un multiplexeur (selon la terminologie MPEG-2, un "programme" est un ensemble d'un ou plusieurs signaux associés. Ici, un programme est supposé comprendre un signal vidéo mais peut également comprendre un ou plusieurs signaux audio associés, un signal de texte de sous-titrage invisible, etc.). Un multiplexeur reçoit les programmes codés des codeurs multiples sous la forme d'un flux binaire. Un débit binaire différent peut être affecté à chaque flux de bits en fonction d'une estimation respective du nombre de bits dont à besoin le flux binaire vidéo du programme correspondant pour obtenir le même niveau de qualité que les autres programmes avec lesquels il est multiplexé (d'une manière générale, le flux binaire vidéo d'un programme est variable alors que les débits binaires des flux audio et des autres flux binaires associés d'un programme sont constants. Cette invention est illustrée dans un contexte consistant à ne régler que le débit binaire de la partie de flux binaire vidéo d'un programme). A l'extrémité de réception de la communication, un décodeur reçoit le flux binaire à programmes multiples multiplexé et ignore les données dont il n'a pas besoin (par exemple si le décodeur est un boîtier de décodeur, seul le programme "accordé" ou sélectionné est retenu, alors que les données de chaque programme non sélectionné sont ignorées. Les données retenues sont appliquées en entrée à la mémoire tampon d'entrée du décodeur d'une taille fixe en attendant le décodage. Le retrait des données de la mémoire tampon de décodeur en vue de décodage est commandé d'une manière stricte afin d'affecter un temps de transmission de bout en bout constant pour tout programme sélectionné. Dans le principe de codage par multiplexage statistique, le cadencement relatif de chaque programme à multiplexer est indépendant. Un premier codeur pour un premier programme peut comporter de nombreuses images de données compressées dans sa mémoire tampon en attendant d'être soumises au multiplexage, alors qu'un second codeur pour un second flux de données peut ne comporter que quelques images dans sa mémoire tampon attendant d'êtres soumises au multiplexeur. Un décodeur qui sélectionne le premier programme pour le décodage recevra des images "antérieures" à celles d'un décodeur qui sélectionne le second programme pour le décodage. Un tel délai variable est éliminé par le fait que chaque décodeur allonge ou raccourcit le temps que les images reçues passent dans la mémoire tampon du décodeur en attendant d'être décodées pour réaliser le temps de transmission de bout en bout constant noté ci dessus. La figure 1 représente un exemple d'un multiplexeur statistique classique 10. Le multiplexeur statistique 10 comprend un certain nombre n de sources vidéo 12 i, i = 1, 2, ..., n. Chacune des n sources vidéo 12 i fournit un signal vidéo (par exemple un flux binaire vidéo) à un codeur correspondant 14 i. Les codeurs 14 i génèrent des flux binaires vidéo compressés qui sont fournis à un multiplexeur 16. Le multiplexeur 16 combine la totalité des flux binaires vidéo compressés en un seul flux binaire multiplexé. Chacun des codeurs 14 i envoie des statistiques relatives au flux binaire vidéo qu'il code, à un calculateur statistique 18. Le calculateur statistique 18 utilise les statistiques reçues des codeurs 14 i pour déterminer une allocation appropriée de bits de canal disponibles parmi les n flux binaires vidéo. Le calculateur statistique envoie des informations concernant le débit binaire alloué de chaque flux binaire vidéo aux codeurs correspondants 14 i. Dans certains multiplexeurs statistiques, les codeurs et les multiplexeurs sont dupliqués pour procurer un degré de tolérance vis-à- vis des défauts. Donc, si un codeur, par exemple, devait connaître une défaillance, un codeur de secours serait disponible pour prendre sa place. De manière similaire, si le multiplexeur devait connaître une défaillance, il pourrait être échangé avec un multiplexeur de secours qui est prêt à venir en ligne. A des fins de communication entre les divers composants, chaque codeur et multiplexeur se voit affecter un identificateur. Les identificateurs peuvent être affectés d'une manière fixe ou dynamique. Si les identificateurs sont affectés d'une manière fixe, chaque composant a un identificateur unique qui ne change pas, indépendamment du fait que le composant est en ligne ou non. Dans une allocation dynamique, en revanche, si un codeur donné devait connaître une défaillance, le codeur de secours, qui prendrait sa place, prendrait également son identificateur. Par exemple, si un codeur baptisé "codeur 1" devait connaître une défaillance, le codeur de secours serait baptisé "codeur 1" en arrivant en ligne. Une allocation d'identité dynamique est souvent préférable à une allocation d'identité fixe, du fait qu'elle donne un plus grand degré de flexibilité et, potentiellement, une efficacité de signalisation accrue. Cependant, un problème pourrait survenir si un composant émettait de manière erronée un message en utilisant l'identité d'un autre composant qui est dans un état de défaillance. Par exemple, si un codeur (ou multiplexeur) appelé "codeur 1" devait connaître une défaillance mais continuer à générer des signaux, à la fois lui et le codeur de secours qui prend sa place pourraient émettre des messages qui semblent avoir pour origine le "codeur 1". En conséquence, il serait souhaitable de fournir un multiplexeur statistique comportant des codeurs et des multiplexeurs redondants qui utilisent une allocation d'identité dynamique et évitent le problème mentionné ci-dessus. Conformément à la présente invention, un multiplexeur statistique est fourni afin de multiplexer au moins deux flux binaires, dont chacun comprend des signaux vidéo, en un seul flux binaire multiplexé. Le multiplexeur statistique comprend une pluralité de codeurs principaux, chacun recevant l'un des flux binaires et générant un flux binaire codé, et au moins un codeur de secours qui est activé et mis en ligne dans l'éventualité de la défaillance d'un codeur de la pluralité des codeurs principaux. Le codeur de secours reçoit le flux binaire qui serait dirigé sinon vers le codeur principal en panne. Le multiplexeur statistique comprend également au moins deux multiplexeurs, de sorte qu'à un instant donné, l'un des multiplexeurs est dans un état actif et l'autre est dans un état en secours. Le multiplexeur dans l'état actif reçoit chacun des flux binaires codés des codeurs et génère un flux binaire codé multiplexé. Le multiplexeur dans l'état de secours effectue une transition vers l'état actif et reçoit chacun des flux binaires codés provenant des codeurs dans l'éventualité d'une défaillance de l'autre multiplexeur. Un processeur de débit est prévu pour régler une répartition de l'allocation des débits binaires parmi la pluralité de codeurs principaux. Un canal de communications est associé de manière fonctionnelle aux codeurs, aux multiplexeurs et au processeur de débit. Le canal de communications accepte des messages parmi et entre les codeurs, les multiplexeurs et le processeur de débit. Les codeurs, les multiplexeurs, et le processeur de débit emploient un agencement d'allocation d'identité dynamique afin d'identifier une source des messages de sorte que des messages ayant pour origine les codeurs indiquent si la source est un codeur principal ou de secours et des messages ayant pour origine les multiplexeurs comprennent un caractère sélectionné parmi une séquence prédéterminée de caractères qui est incrémenté au caractère suivant dans la séquence à chaque fois que l'un des multiplexeurs effectue une transition entre un état actif et un état en secours. Conformément à un premier aspect de l'invention, les codeurs sont des 35 codeurs de type MPEG. Conformément à un autre aspect de l'invention, les codeurs sont des codeurs de type MPEG-2. Conformément à un autre aspect de l'invention, les flux binaires reçus pour les codeurs comprennent des flux binaires pré compressés. Conformément à un autre aspect de l'invention, chacun desdits flux binaires comprend un canal incorporé dans une diffusion sur un réseau de 5 communications à large bande. Conformément à un autre aspect de l'invention, le canal de communications est un canal de réseau Ethernet bidirectionnel. Conformément à un autre aspect de l'invention, les messages ayant pour origine le codeur de secours mais non pas les codeurs principaux comprennent 10 un indicateur. Conformément à un autre aspect de l'invention, si l'un des multiplexeurs reçoit deux messages identifiant un codeur donné mais qu'un message a pour origine un codeur principal et que l'autre message a pour origine un codeur de secours, le multiplexeur ignore le message provenant du codeur principal. Conformément à un autre aspect de l'invention, la séquence prédéterminée de caractères est un comptage numérique séquentiel. Conformément à un autre aspect de l'invention, le caractère sélectionné parmi la séquence prédéterminée de caractères est un numéro de version. Conformément à un autre aspect de l'invention, un message donné est ignoré s'il est reçu depuis l'un des multiplexeurs ayant un numéro de version inférieur à celui d'un autre message reçu de l'autre des multiplexeurs qui présente un numéro de version supérieur. L'invention sera bien comprise ainsi que ses avantages à la lecture de la description détaillée qui suit. La description se rapporte aux dessins indiqués ci-après et qui sont donnés à titre d'exemple. La figure 1 représente un multiplexeur statistique classique. La figure 2 illustre un mode de réalisation d'un système de multiplexeur statistique conforme à la présente invention. La présente invention sera illustrée ci dessous en utilisant une multiplexeur statistique d'exemple approprié à une utilisation dans des applications de codage vidéo. Cependant, on doit comprendre que l'invention est plus largement applicable à toute application qui implique une allocation de bande passante entre des flux binaires codés multiples. En outre, bien qu'elle soit particulièrement bien adaptée à une utilisation dans des applications de type MPEG 2, l'invention peut être utilisée avec des flux binaires codés générés en utilisant d'autres techniques de codage. La figure 2 illustre un mode de réalisation d'un système de multiplexeur statistique conforme à la présente invention. Les entrées dans le système de multiplexeur statistique 100 peuvent comprendre des programmes tels que des séquences vidéo numériques non compressées. Les séquences vidéo numériques non compressées, par exemple les programmes 1 à 4, sont codés par les codeurs 1201 à 1204, respectivement qui utilisent par exemple, le standard de codage vidéo MPEG. En variante, l'un ou plusieurs de ces programmes 1 à 4 peuvent être des flux binaires compressés, auquel cas le codeur vers lequel il est dirigé sert de transcodeur. Un codeur compresse une séquence vidéo numérique en un flux binaire à un débit beaucoup plus faible alors qu'un transcodeur convertit un flux binaire vidéo pré compressé en un autre flux binaire à un nouveau débit (bas). Par simplicité, à la fois les codeurs et les transcodeurs seront appelés ici codeurs. Les données transcodées et des données codées sont fournies à un multiplexeur 140 avant d'être transmises sur un canal, de façon caractéristique, à une population de décodeurs. Le canal peut faire partie d'un réseau de communications à large bande, tel qu'un réseau de télévision par câble ou par satellite, par exemple. Les données de programmes peuvent être fournies depuis une source quelconque, telle qu'un support de mémorisation (par exemple une bande magnétique ou un disque compact), ou depuis une transmission par satellite, par exemple. Des données pré compressées, telles que pour l'insertion de publicité ou l'insertion de nouvelles locales ou d'un autre programme, peuvent être fournies localement en vue d'une utilisation en association avec d'autres données qui sont reçues d'une source éloignée. En fonctionnement, chaque codeur MPEG 1201 à 1204 reçoit un nombre cible de bits, TI, T2, T2, T4, respectivement, d'un processeur de commande de débit 150 à chaque trame. Le processeur de commande de débit 150 peut remplir diverses fonctions bien connues de l'homme de l'art, telles qu'un traitement de niveau de trame, un super traitement au niveau des trames, et un traitement de complexité, par exemple. Ces fonctions de traitement peuvent partager des circuits communs tels que la mémoire et les circuits intégrés de traitement, ou peuvent être des sous systèmes distincts. De plus, bien que le processeur de commande de débit 150 soit lui même représenté sous forme d'un composant distinct, dans certain cas, il peut être incorporé directement dans le multiplexeur 160. Le nombre cible de bits pour chaque trame d'un programme est atteint en réglant le paramètre de quantification dans le codeur ou le transcodeur de type MPEG. Le nombre résultant de bits compressés R, de même que le paramètre de quantification moyen Q, utilisés pour chaque trame, sont alors envoyés au processeur de commande de débit 150 sous forme de données de rétroaction. En particulier, les codeurs 1201 à 1204 produisent R1, R2, R3 et R4 bits, respectivement, en utilisant les paramètres de quantification Q1, Q2, Q3 et Q4, respectivement. Le processeur de commande de débit 150 calcule les valeurs de complexité correspondantes C en utilisant R et Q pour chaque programme. Le processeur de commande de débit 150 détermine alors un nouveau nombre de bits cible pour chaque nouvelle trame de programme ou image sur la base de la complexité du programme. Idéalement, un système de multiplexeur statistique répartit la capacité du canal sur les programmes en entrée conformément aux mesures de complexités relatives des programmes. C'est-à-dire que les programmes plus complexes se voient affecter plus de bits, et que les programmes moins complexes se voient affecter moins de bits. Pour un débit donné, ceci implique également que le débit affecté pour un programme dépend des mesures de complexités du programme et des autres programmes. Comme la complexité d'un programme peut varier avec le temps, les mesures de complexités relatives des programmes varient également. La répartition de la capacité du canal, ou allocation de bits, entre les programmes doit en conséquence être une fonction variant avec le temps (par exemple sur un principe trame par trame). Une fois que le débit cible pour une trame d'un programme est établi, l'étape suivante consiste à obtenir ce débit, par exemple en réglant les paramètres de codage, tels que le paramètre de quantification, dans les codeurs et transcodeurs du système de multiplexeur statistique. Tout principe de commande de débit approprié peut être utilisé en association avec les codeurs et les transcodeurs. Sont également représentés sur la figure 2 des codeurs de secours 1301 et 1302 et un multiplexeur de secours 140. Les codeurs de secours 1301 et 1302 sont disponibles dans le cas où l'un des codeurs principaux 1201 à 1204 connaîtrait une défaillance. Bien que deux codeurs de secours soient représentés sur le mode de réalisation de l'invention décrit sur la figure 2, l'homme de l'art se rendra compte que tout nombre approprié de codeurs de secours peut être employé. Cependant, en général, le nombre de codeurs de secours 130 est inférieur au nombre de codeurs principaux 120. Par ailleurs, le multiplexeur 140 ne comportera généralement qu'un seul multiplexeur de secours 160. Un commutateur ou routeur 170, tel qu'un routeur Audio/Vidéo commandé par SNMP, par exemple, est prévu pour faire basculer un programme, lors de la défaillance de l'un des codeurs principaux 1201 à 1204, sur l'un des codeurs de secours 1301 à 1302. Une communication entre les divers codeurs 120 et 130 et les multiplexeurs 140 et 160 peut être accomplie d'une manière classique quelconque. Par exemple, comme indiqué sur la figure 2, une connexion de réseau Ethernet bidirectionnelle peut être prévue dans ce but. Les messages entre les composants peuvent être transmis conformément à un protocole souhaité quelconque. De tels messages comprennent généralement des demandes d'allocation de bande passante qui sont envoyées depuis les décodeurs au multiplexeur et des informations de débit binaire qui sont envoyées des multiplexeurs aux codeurs. Comme mentionné précédemment, l'utilisation d'une allocation d'identité dynamique pour identifier la source d'un message peut être problématique à la fois pour les codeurs et les multiplexeurs puisqu'un composant défaillant peut parfois transmettre de manière erronée des messages même après qu'il a été remplacé par un composant de secours qui est passé en ligne. De cette manière, des messages en conflit peuvent être reçus par l'autre composant ou les autres composants. La présente invention surmonte ce problème de la manière suivante. Comme le nombre de codeurs de secours est généralement inférieur au nombre des codeurs principaux, il existe deux ensembles distincts de codeurs. C'est-à-dire que tout codeur donné est soit un codeur principal, soit un codeur de secours. Les présents inventeurs se sont rendu compte que l'ambiguïté qui peut apparaître concernant les codeurs dans un principe d'allocation d'identité dynamique, peut être résolue en incluant un drapeau ou autre indicateur dans le protocole de message qui indique qu'un message a pour origine un codeur de secours. De cette manière, si le multiplexeur reçoit deux messages, qui ont le même identificateur indiquant qu'ils ont pour origine le même codeur, le multiplexeur pourra distinguer quel message a pour origine le codeur principal et quel message a pour origine le codeur de secours. Il est raisonnable de supposer qu'une panne du codeur principal est plus susceptible de provoquer des messages en conflit qu'une panne d'un codeur de secours. En conséquence, dans la présente invention, si le multiplexeur reçoit des messages avec la même identité de codeur, le multiplexeur devrait reconnaître le message provenant du codeur de secours et ignorer tout message provenant du codeur principal. Comme les nombres des multiplexeurs principaux et de secours sont généralement dans une configuration redondante 1:1, leurs rôles comme composants principaux et de secours sont interchangeables. Pour cette raison, l'indicateur utilisé par les codeurs pour distinguer entre un codeur principal et de secours n'est pas un moyen préférable de distinguer entre les multiplexeurs. Au lieu de cela, le protocole de message peut être revu pour comprendre un numéro de version des messages ayant pour origine un multiplexeur. Le numéro de version est un comptage séquentiel qui est incrémenté de un à chaque fois qu'un multiplexeur effectue une transition d'un rôle actif à un rôle de secours. Si un conflit apparaît du fait que deux multiplexeurs transmettent un message, les codeurs ne reconnaîtront que le message présentant le numéro de version le plus élevé. Les multiplexeurs peuvent être maintenus informés du numéro de version actuel par tout moyen approprié sur le réseau Ethernet ou sur une autre liaison de communications. Par exemple, le multiplexeur de secours peut recevoir le numéro de version actuel du multiplexeur actif à partir des messages de demande de bande passante du codeur qu'il reçoit. Bien qu'à des fins d'illustrations il ait été supposé que les multiplexeurs sont dans une configuration redondante 1:2, dans laquelle les rôles de multiplexeurs actifs et de secours sont interchangeables, l'agencement de messagerie mentionné ci dessus est également applicable à d'autres configurations. REVENDICATIONS 1. Multiplexeur statistique destiné à multiplexer au moins deux flux binaires comprenant chacun des signaux vidéo en un seul flux binaire codé 5 multiplexé, comprenant: une pluralité de codeurs principaux (120) recevant chacun l'un des flux binaires et générant un flux binaire codé, au moins un codeur de secours (130) qui est activé et est mis en ligne dans le cas d'une défaillance d'un codeur de la pluralité de codeurs principaux 10 (120), ledit codeur de secours (130) recevant le flux binaire qui serait sinon dirigé vers le codeur principal en panne (120), au moins deux multiplexeurs (140, 160), de sorte qu'à un instant donné quelconque l'un des multiplexeurs est dans un état actif, et l'autre est dans un état en secours, ledit multiplexeur dans l'état actif recevant chacun des flux binaires codés des codeurs, et générant un flux binaire codé multiplexé, ledit multiplexeur dans l'état en secours effectuant une transition à l'état actif et recevant chacun des flux binaires codés provenant des codeurs dans le cas d'une défaillance de l'autre multiplexeur, un processeur de débit (50) destiné à régler une répartition d'allocation de 20 débits binaires parmi la pluralité de codeurs principaux, un canal de communications associé de manière fonctionnelle aux codeurs, aux multiplexeurs et au processeur de débit (150), ledit canal de communications acceptant des messages parmi et entre les codeurs, les multiplexeurs et le processeur de débit (150), et où les codeurs (120, 130), les multiplexeurs (140, 160) et le processeur de débit (150) emploient un agencement d'allocation d'identité dynamique afin d'identifier une source de messages de manière à ce que des messages ayant pour origine les codeurs indiquent si la source est un codeur principal ou de secours et que des messages ayant pour origine les multiplexeurs comprennent un caractère sélectionné parmi une séquence prédéterminée de caractères qui est incrémenté au caractère suivant de la séquence à chaque fois que l'un de multiplexeur effectue une transition entre un état actif et un état en secours. 2. Multiplexeur statistique selon la revendication 1, dans lequel lesdits 35 codeurs (120, 130) sont des codeurs de type MPEG. 3. Multiplexeur statistique selon la revendication 1, dans lequel lesdits codeurs (120, 130) sont des codeurs de type MPEG 2. 4. Multiplexeur statistique selon la revendication 1, dans lequel lesdits 5 flux binaires reçus par les codeurs (120, 130) comprennent des flux binaires pré compressés. 5. Multiplexeur statistique selon la revendication 1, dans lequel chacun desdits flux binaires comprend un canal incorporé dans une diffusion sur un 10 réseau de communications à large bande. 6. Multiplexeur statistique selon la revendication 1, dans lequel ledit canal de communications est un canal de réseau Ethernet bidirectionnel. 7. Multiplexeur statistique selon la revendication 1, dans lequel lesdits messages ayant pour origine le codeur de secours, mais non pas les codeurs principaux, comprennent un indicateur. 8. Multiplexeur statistique selon la revendication 1, dans lequel, si l'un desdits multiplexeurs (140, 160), reçoit deux messages identifiant un codeur donné mais qu'un premier message a pour origine un codeur principal et que l'autre message a pour origine un codeur de secours, ledit multiplexeur ignore le message provenant du codeur principal. 9. Multiplexeur statistique selon la revendication 1, dans lequel ladite séquence prédéterminée de caractère est un comptage numérique séquentiel. 10. Multiplexeur statistique selon la revendication 1, dans lequel ledit caractère sélectionné parmi la séquence prédéterminée de caractères est un 30 numéro de version.