Brevet FR2946204A1 — publié le 20101203

La présente invention concerne le domaine du transport d'un flux vidéo. Elle concerne plus précisément un procédé de génération du signal d'horloge gérant le débit d'émission d'un flux de sortie par un appareil transmettant un flux issu d'un flux d'entrée. Les flux étant typiquement des flux de type MPEG (Moving Picture Experts Group en anglais) tel que défini dans le document ISO/CEI 13818-1. Dans le cadre de l'invention, ces flux sont transportés sur des liens conformes à la norme ASI (Asynchronous Serial Interface en anglais). L'architecture de distribution de flux de transport vidéo, appelés flux TS, comporte des appareils qui reçoivent un ou plusieurs flux TS en entrée et génèrent au moins un flux en sortie. De tels appareils peuvent avoir des fonctions diverses. On peut citer des appareils qui reçoivent plusieurs copies dupliquées d'un même flux et retransmettent l'un de ces flux en sortie. Ces appareils sont utilisés dans le cadre de la fiabilisation d'un réseau de distribution. Les différentes copies sont alors diffusées par des réseaux différents et si l'une des copies subit un problème de transport sur l'un des réseaux, l'appareil bascule sur une autre entrée pour permettre de générer un flux de sortie fiable tant qu'au moins une des entrées fournit une copie du flux. Il peut encore s'agir d'un appareil permettant de choisir l'un des flux en entrée pour le retransmettre en sortie. D'une manière générale, il s'agit de tout appareil qui reçoit au moins un flux en entrée et le retransmet en sortie. Le flux peut éventuellement subir un traitement entre l'entrée et la sortie. Le fonctionnement fiable de ces appareils nécessite une gestion fine des débits de transmission. Les débits exacts des flux transmis ne sont typiquement pas connus. Lorsque le débit de sortie de l'appareil diverge, même de très peu, du débit du flux reçu en entrée, il s'ensuit une dérive menant fatalement au débordement ou à la famine du tampon de l'appareil et donc à une interruption de service. Pour résoudre ce problème, il est connu d'utiliser directement les données reçues pour générer le flux de sortie. On effectue alors un asservissement de l'horloge de génération du flux de sortie sur l'horloge de réception. On définit ici l'horloge d'un flux, en réception ou en émission, comme la suite des moments, de réception ou d'émission d'un paquet de données du flux. Cette définition est illustrée par la Fig. 1. Sur cette figure, on peut voir sur la courbe de la Fig. la un diagramme représentant la réception ou l'émission de données. Chaque objet 1.1 représente des données émises ou reçues appartenant au flux. Ces données 1.1 peuvent représenter des paquets TS ou des octets selon le cas. La Fig. lb illustre l'horloge du flux présentant la succession temporelle des moments 1.2 de début de réception ou d'émission des données 1.1. En l'occurrence, s'agissant de flux TS MPEG, ces flux étant formés de paquets dits paquets TS, chaque paquet comportant typiquement 188 octets, on distingue l'horloge paquet correspondant à la suite temporelle des moments de réception ou d'émission d'un paquet TS et l'horloge octet correspondant à la suite temporelle des moments de réception ou d'émission d'un octet. Si la recopie de l'horloge d'entrée permet de répondre au risque de dérive de l'horloge du flux de sortie par rapport à l'horloge du flux d'entrée, il est des cas où cette horloge du flux de sortie va connaître des irrégularités. En particulier lors d'un basculement entre deux flux d'entrée qui risquent de ne pas être parfaitement en phase. Selon les procédés de régulation connus, on a soit une convergence rapide du 15 débit au démarrage du système mais au prix d'une précision faible, soit une convergence lente du débit. L'invention vise à résoudre les problèmes précédents par un procédé de génération de l'horloge du flux de sortie à partir d'une mesure de l'horloge du flux d'entrée. Cette mesure est ajustée en permanence pour permettre d'augmenter la 20 précision de la mesure ainsi que de suivre d'éventuelles dérives de l'horloge du flux d'entrée. Cette décorrélation entre l'horloge du flux d'entrée et celle du flux de sortie permet de générer une horloge de sortie régulière même en cas d'irrégularités sur l'horloge du flux d'entrée. L'invention offre, de plus, l'avantage de converger rapidement vers une valeur de débit précise. 25 L'invention concerne un procédé de génération d'une horloge des moments d'émission de paquets de données d'un flux de données émis par un dispositif, ledit dispositif recevant au moins un premier flux de données en entrée et émettant un flux de données en sortie, qui comporte une étape de mesure du débit du flux d'entrée ; une étape de génération des moments d'émission des paquets de données du flux émis à 30 partir du débit d'entrée mesuré de façon à respecter un débit d'émission correspondant au débit du flux d'entrée et où l'étape de mesure du débit du flux d'entrée est effectuée en continu sur l'intégralité des données reçues. Selon un mode de réalisation particulier de l'invention, l'étape de mesure du débit du flux d'entrée est effectuée par accumulation dans deux compteurs, un premier compteur accumule la quantité de données reçue, le second compteur accumule le temps écoulé pour recevoir ces données. Selon un mode de réalisation particulier de l'invention, le flux d'entrée étant composé de paquets de données eux-mêmes composés d'octets, lesdits compteurs sont mis à jour lors de la réception du premier octet d'un paquet de données. Selon un mode de réalisation particulier de l'invention, le procédé comporte une étape de génération du moment d'émission d'un paquet lorsque la quantité de données émises pendant le temps d'émission devient inférieure à la quantité de données reçues pendant le temps de réception. Selon un mode de réalisation particulier de l'invention, l'étape de génération du moment d'émission d'un paquet comporte une étape de comparaison de deux compteurs, un premier compteur accumulant le nombre d'octets reçus multiplié par le temps d'émission, un second compteur accumulant le nombre d'octets émis multiplié par le temps de réception. L'invention concerne également un dispositif recevant au moins un premier flux de données en entrée et émettant un flux de données en sortie, comportant des moyens de génération d'une horloge des moments d'émission de paquets de données d'un flux de données émis par un dispositif, qui comporte des moyens de mesure du débit du flux d'entrée ; des moyens de génération des moments d'émission des paquets de données du flux émis à partir du débit d'entrée mesuré de façon à respecter un débit d'émission correspondant au débit du flux d'entrée et où les moyens de mesure du débit du flux d'entrée effectuent le calcul en continu sur l'intégralité des données reçues. Les caractéristiques de l'invention mentionnées ci-dessus, ainsi que d'autres, apparaîtront plus clairement à la lecture de la description suivante d'un exemple de réalisation, ladite description étant faite en relation avec les dessins joints, parmi lesquels : La Fig. 1 illustre le principe d'horloge de flux, La Fig. 2 illustre les deux modes de transmission d'un flux TS sur ASI, La Fig. 3 illustre le procédé de mesure du débit d'entrée, La Fig. 4 illustre le procédé de génération de l'horloge du flux de sortie, La Fig. 5 illustre un exemple de dispositif selon l'invention. Nous avons vu qu'un flux TS est composé de paquets de données appelés paquets TS et composés typiquement de 188 octets. Le transport d'un tel flux sur une liaison ASI peut se faire selon deux modes distincts de transmission, un mode dit salve (burst en anglais) et un mode dit continu (continuous mode en anglais), parfois aussi appelé mode paquet (packet mode en anglais) ou encore mode données brutes (raw data mode en anglais). Nous adopterons l'expression de mode � continu �. La Fig. 2 illustre ces deux modes. Le flux de transport est transmis à un débit inférieur au débit maximum autorisé par le lien ASI. De ce fait, la transmission des données se trouve entrelacée de moments sans transmission pour respecter le débit du flux. Les deux modes se distinguent par la façon dont sont entrelacés ces moments sans transmission de données utiles du flux. Le premier mode dit mode continu est illustré Fig. 2a. Dans ce mode, les octets composant les paquets TS sont sensiblement équirépartis temporellement dans le flux. Le premier octet 2.1 de chaque paquet TS est illustré en noir. Les moments sans transmission sont insérés entre chaque octet de donnée indépendamment de la position de l'octet au sein du paquet TS. Le second mode dit mode salve est illustré sur la Fig. 2b. Dans ce mode, les octets composant un paquet TS sont envoyés successivement les uns à la suite des autres. Les moments sans transmission sont donc insérés uniquement entre le dernier octet d'un paquet TS et le premier octet du paquet TS suivant. Sur cette figure, on a également marqué en noir les premiers octets de chaque paquet TS. On note que les paquets TS sont typiquement composés de 188 octets qui ne sont pas tous représentés sur la figure par souci de clarté. Lorsque l'on compare les deux modes, on s'aperçoit que l'horloge paquet du flux est sensiblement la même dans les deux modes. Au contraire, l'horloge octet est différente. Dans le mode continu, l'horloge octet est sensiblement régulière, tandis que l'horloge paquet présente un groupement par paquet TS des moments d'émission ou de réception des octets. Un des problèmes adressés également par l'invention est le changement de mode de transmission entre le flux reçu et le flux émis en sortie. Lorsque l'on veut changer de mode, en particulier lorsque l'on reçoit un flux transmis en mode salve et que l'on désire émettre le flux de sortie en mode continu, il est nécessaire de générer l'horloge octet du flux de sortie pour piloter l'émission des octets au bon rythme. Cette horloge ne peut pas se déduire par simple copie d'une horloge du flux reçu. Le procédé proposé permet une mesure s'affinant en permanence du débit du flux reçu. Cette mesure est utilisée pour générer une horloge octet du flux de sortie. Cette horloge est très précise du fait que la mesure du flux d'entrée est affinée en permanence. En cas de dérive du débit d'entrée, l'horloge du flux de sortie est adaptée de manière très progressive. En cas de modification brusque, en particulier de gigue brusque de l'horloge du flux d'entrée, par exemple lors d'un basculement sur un autre flux d'entrée, l'horloge du flux de sortie conserve sa régularité. Le dispositif dispose, comme tout dispositif électronique, d'une horloge de référence. Cette horloge de référence permet un comptage du temps, elle égrène des tics d'horloge de manière régulière. Elle est utilisée dans le procédé comme référence temporelle. Le procédé de mesure du débit du flux reçu est illustré par la Fig. 3. Si l'on appelle R le débit du flux d'entrée, ce débit peut s'exprimer en nombre d'octets reçus pendant un temps donné. Le calcul de ce débit est fait par accumulation au sein de deux compteurs nommés c pour le compteur servant à mesurer le temps écoulé sous la forme du nombre de tics de l'horloge de référence temporelle depuis l'initialisation du procédé. Nous appelons synchro TS les événements de l'horloge paquet du flux reçu. Ce sont donc des événements temporels correspondant au moment de la réception du premier octet d'un paquet TS. Ces octets ont une valeur définie de 0x47 en hexa permettant de les distinguer dans le flux. Lors d'une première étape 3.1 d'initialisation, on initialise à 0 trois compteurs. Un premier compteur t permet de compter le temps écoulé depuis cette initialisation. Il s'exprime en nombre de tics d'horloge de l'horloge de référence. Un second compteur n permet de compter le nombre d'octets reçus. Le troisième compteur c est également un compteur temporel dans lequel on mémorise le temps écoulé pendant la réception des octets comptabilisés dans le compteur n. Cette étape d'initialisation est effectuée avantageusement lors de la réception d'une synchro TS. Ensuite, un traitement représenté par les étapes 3.2, 3.3 et 3.4 est effectué typiquement à chaque tic d'horloge de l'horloge de référence. Lors de l'étape 3.2, on met à jour le compteur de temps t. Lors de l'étape 3.3, on teste si l'on a reçu une synchro TS depuis le précédent instant t-1. Si le résultat de ce test est négatif, on reboucle sur l'étape 3.2 pour l'instant suivant. Lorsque l'on a reçu une synchro TS, on effectue l'étape 3.4 de mise à jour des compteurs n et c. Le compteur n est incrémenté d'une valeur correpondant à la taille en octet d'un paquet TS, typiquement 188. Pour que ce compteur soit exact lors de la première exécution de l'étape, avantageusement, l'étape d'initialisation 3.1 est faite lors de la réception d'une synchro TS. On constate que ce procédé met à jour les compteurs n et c uniquement lorsque l'on reçoit le premier octet d'un paquet TS et non pas à la réception de chaque octet. Cette mise à jour est donc faite au rythme de l'horloge paquet du flux reçu. Cette horloge paquet est la même dans les deux modes de transmission, salve et continu, au contraire de l'horloge octet du flux. Le procédé de mesure fonctionne donc de la même manière dans ces deux modes de transmission. Le débit que l'on cherche à mesurer R étant égal à n/c. On le mémorise avantageusement sous la forme des deux compteurs n et c, sans effectuer la division, dans un souci d'économie de ressource de calcul. Le procédé étant effectué de manière continue sans réinitialisation des compteurs, l'accumulation des valeurs c et n permet d'affiner le rapport R dans le 20 temps. Lorsqu'un basculement de flux d'entrée est effectué, on continue la mesure sur le nouveau flux reçu sans réinitialiser les compteurs de façon à éviter un saut dans la valeur du débit. Le procédé de génération de l'horloge octet du flux de sortie est illustré par la 25 Fig. 4. Le procédé de génération de l'horloge octet du flux de sortie est basé sur la comparaison de deux compteurs dont l'évolution est dépendante des débits du flux d'entrée d'une part et du flux de sortie d'autre part. L'horloge octet du flux de sortie que l'on cherche à générer est un sous ensemble de l'horloge temporelle de référence. Le débit du flux de sortie correspond à un instant donné au nombre d'octets émis 30 divisé par le temps mis pour les émettre. Ce débit devant correspondre au mieux au débit d'entrée. Si l'on appelle t' le compteur de temps en sortie, à un instant t', le nombre d'octets émis n' , est égal à R '.t'. On doit donc respecter l'équivalence : R =R' et donc : n/c = n'/t' ou encore : n.t' = n'.c Si l'on pose c'=n'.c et a'=t'.n, on doit respecter l'équivalence entre c' et a' pour générer l'horloge du flux de sortie. On génère donc le moment d'émission d'un octet lorsque la quantité de données émises pendant le temps d'émission devient inférieure à la quantité de données reçues pendant le temps de réception. On émet donc un octet lorsque le débit d'émission devient inférieur au débit de réception. La Fig. 4 illustre un mode de calcul de l'horloge de sortie selon ce principe. Lors d'une phase d'initialisation 4.1, on met à zéro les compteurs t', c' et n' définis ci-dessus. On va également utiliser un compteur intermédiaire a qui conservera la valeur de n lors de la dernière génération d'un tic de l'horloge octet du flux de sortie appelé tic TS. Ce compteur est initialisé à la valeur courante de n. A chaque tic de l'horloge de référence, on effectue les calculs correspondant aux 15 étapes 4.2, 4.3, 4.4 et 4.5 selon le mode suivant. Lors de l'étape 4.2, le compteur d'horloge t' est incrémenté de 1. Cet incrément est répercuté sur le compteur a', ce compteur étant égal à t'.n, t' étant incrémenté de 1, a' doit être incrémenté de n et donc de a puisque a = n. Lors de l'étape 4.3, on compare le compteur a' au compteur c', si le compteur a' 20 a rattrapé ou dépassé le compteur c', il faut générer un tic TS de l'horloge octet du flux de sortie et donc l'émission d'un octet du flux de sortie. Sinon, on reboucle sur l'étape 4.2 lors du tic suivant de l'horloge de référence. La génération du tic TS est faite lors de l'étape 4.4. On en profite pour réinitialiser le compteur intermédiaire a à la valeur courante de n. 25 Les compteurs sont alors mis à jour lors de l'étape 4.5. Le compteur n' des octets émis est incrémenté de 1. Le compteur a' est réinitialisé à la valeur t'.a qui correspond à t'.n. Le compteur c' est réinitialisé à la valeur n'.c. On boucle ensuite sur l'étape 4.2 pour le tic suivant de l'horloge de référence. Dans la pratique, les compteurs utilisés sont stockés sur un nombre de bits 30 suffisant pour ne pas déborder sur des périodes très longues, typiquement de plusieurs années. Dans l'exemple de réalisation, des compteurs sur 56 bits sont utilisés. Le procédé ainsi décrit permet de générer une horloge octet du flux de sortie à partir d'une valeur calculée et affinée en permanence du débit du flux d'entrée. Cette valeur du débit d'entrée étant calculée sur l'ensemble des données reçues depuis l'initialisation du procédé, elle converge vers une valeur stable peu affectée par des perturbations possibles du flux d'entrée. Ceci étant vrai même lors d'un basculement de flux d'entrée. En cas de coupure totale de réception du flux d'entrée, les données reçues peuvent continuer à être émises en utilisant la dernière valeur calculée du débit d'entrée jusqu'à épuisement des données reçues. Ceci est fait en vidant le tampon de réception et en arrêtant la mise à jour des compteurs c et n. D'autres façons de calculer une valeur du débit d'entrée de manière continue ou de générer l'horloge du flux de sortie à partir de cette valeur calculée du débit du flux d'entrée peuvent être adoptées sans sortir du cadre de l'invention. La Fig. 5 présente un exemple de réalisation de l'invention. Cet exemple est un équipement servant dans le cadre de la fiabilisation d'un réseau de diffusion. Dans ces réseaux, il est courant de dupliquer la distribution d'un flux, par exemple en utilisant deux réseaux de distribution. À destination, on reçoit donc par deux voies différentes deux copies d'un même flux. Cela permet d'assurer la diffusion même en cas de problème sur l'un des réseaux de distribution. Les deux copies du flux 5.7 et 5.8 sont en entrée de l'équipement. Le module 5.2 gère la réception des deux flux et sélectionne l'un de ces flux pour remplir un tampon 5.3. Le flux de sortie 5.9 est généré par le module de génération 5.4. Les opérations se font sous le contrôle du processeur 5.5 à l'aide de programmes enregistrés dans la mémoire 5.6 de l'équipement. C'est en particulier le processeur 5.5 qui va mettre en oeuvre les moyens d'exécuter les procédés précédemment décrits. L'horloge de référence est ici l'horloge de fonctionnement du processeur 5.5. Le module de réception fournit l'horloge paquet du flux reçu sélectionné. Le processeur 5.5 génère selon le procédé décrit l'horloge octet utilisée par le module de génération 5.4 pour générer le flux de sortie 5.9. Ce dispositif n'est qu'un exemple de réalisation de l'invention qui peut être utilisée dans tout dispositif qui reçoit un flux de données en entrée et génère un flux de sortie à partir de ce flux d'entrée devant respecter le débit du flux d'entrée. L'invention, bien que décrite dans le cadre de flux de transport MPEG, peut s'adapter à d'autre flux de données transmis selon un débit sensiblement constant. En particulier, il est possible d'utiliser l'horloge octet du flux d'entrée ou toute horloge paquet adapté au format des données du flux d'entrée. REVENDICATIONS1/ Procédé de génération d'une horloge des moments d'émission de paquets de données d'un flux de données émis par un dispositif, ledit dispositif recevant au moins un premier flux de données en entrée et émettant un flux de données en sortie, caractérisé en ce qu'il comporte : - une étape de mesure du débit du flux d'entrée ; - une étape de génération des moments d'émission des paquets de données du flux émis à partir du débit d'entrée mesuré de façon à respecter un débit d'émission 10 correspondant au débit du flux d'entrée ; et en ce que l'étape de mesure du débit du flux d'entrée est effectuée en continu sur l'intégralité des données reçues. 2/ Procédé selon la revendication 1, caractérisé en ce que l'étape de mesure du 15 débit du flux d'entrée est effectuée par accumulation dans deux compteurs, un premier compteur accumule la quantité de données reçue, le second compteur accumule le temps écoulé pour recevoir ces données. 3/ Procédé selon la revendication 2, caractérisé en ce que le flux d'entrée étant 20 composé de paquets de données eux-mêmes composés d'octets, lesdits compteurs sont mis à jour lors de la réception du premier octet d'un paquet de données. 4/ Procédé selon la revendication 1, caractérisé en ce que le procédé comporte une étape de génération du moment d'émission d'un paquet lorsque la quantité de 25 données émises pendant le temps d'émission devient inférieure à la quantité de données reçues pendant le temps de réception. 5/ Procédé selon la revendication 4, caractérisé en ce que l'étape de génération du moment d'émission d'un paquet comporte une étape de comparaison de deux 30 compteurs, un premier compteur accumulant le nombre d'octets reçus multiplié par le temps d'émission, un second compteur accumulant le nombre d'octets émis multiplié par le temps de réception.6/ Dispositif recevant au moins un premier flux de données en entrée et émettant un flux de données en sortie, comportant des moyens de génération d'une horloge des moments d'émission de paquets de données d'un flux de données émis par un dispositif, ledit dispositif caractérisé en ce que ces moyens de génération comportent : - des moyens de mesure du débit du flux d'entrée ; - des moyens de génération des moments d'émission des paquets de données du flux émis à partir du débit d'entrée mesuré de façon à respecter un débit d'émission correspondant au débit du flux d'entrée ; et en ce que les moyens de mesure du débit du flux d'entrée effectuent le calcul en continu sur l'intégralité des données reçues.