FR 2907990 A1 20080502 FR 0609473 A 20061027 1 Encodeur temps-réel contraint en débit et en délai, procédé, produit programme d'ordinateur et moyen de stockage correspondants. 1. DOMAINE DE L'INVENTION Le domaine de l'invention est celui de la compression de données (audio et/ou vidéo). Plus précisément, l'invention concerne une technique d'encodage temps-réel, sous contraintes de débit et de délai. Dans un mode de réalisation de l'invention, il est proposé un encodeur/décodeur (codec) temps-réel et contraint en débit et en délai. 2. ART ANTÉRIEUR Dans la présente description, on définit une trame comme un ensemble de données successives et une scène comme un ensemble de trames successives. Dans le cas particulier de la vidéo, une trame est une image. La quantité d'information (entropie) contenue dans un signal peut varier énormément au cours du temps. Par exemple, dans le cas d'un signal vidéo, on peut passer d'une scène statique contenant des textures lisses à une scène comportant beaucoup d'objets en mouvement et des textures complexes. Dans ce cas, on observe une augmentation importante de la complexité de la scène, et donc de la quantité d'information. Lorsque l'on met en oeuvre des techniques de compression, cette variabilité naturelle a deux conséquences : tout d'abord, le débit de données généré par l'encodeur varie en fonction de la scène ; - ensuite, suivant la stratégie de mise en oeuvre choisie, le temps nécessaire à l'encodage de chaque trame peut varier. Des solutions ont été développées pour pallier ces deux problèmes. Des techniques dites de contrôle de débit, permettent de réguler le débit en sortie de l'encodeur. On peut assurer soit un débit constant (ou CBR, pour Constant Bit Rate en anglais), soit un débit variable (ou VBR, pour Variable Bit Rate en anglais). Dans les deux cas, on respecte une contrainte externe, comme par exemple la capacité physique d'un canal de communication. Si cette contrainte externe varie au cours du temps, alors on est dans le cas du débit variable (VBR). Le contrôle de débit 2907990 2 s'appuie sur l'utilisation d'une modélisation de la mémoire tampon d'émission, aussi appelée buffer d'émission ou encore VBE (pour Vérificateur du Buffer d'Emission ). La mémoire tampon d'émission est aussi appelée VBV (pour Vérificateur du Buffer Vidéo ) dans le cas de la compression d'un signal vidéo ou 5 réservoir-bit dans le cas de la compression d'un signal audio. Davantage de détails sur le contrôle de débit peuvent être trouvés dans : Efficient algorithms for MPEG video compression , Dzung Tien Hoang, Jeffrey Scott Vitter, WILEY, 2002. Pour assurer un temps d'encodage constant par trame, la solution la plus simple 10 consiste à sur-dimensionner le matériel (processeur, FPGA, ...). Cependant cette solution est coûteuse et sous-optimale, puisque le matériel n'est que rarement utilisé à sa pleine capacité. Le raisonnement inverse consiste à limiter la complexité de l'encodeur. Dans ce cas, on limite l'efficacité de la compression et par conséquent la qualité des données compressées. De la même manière, le matériel n'est que rarement utilisé à sa 15 pleine capacité. De plus, la qualité n'est pas optimale sur des scènes peu complexes. Idéalement, il faudrait pouvoir limiter la complexité de l'encodeur seulement en cas de scène trop complexe pour être traitée en temps réel avec le matériel disponible. Une telle technique de contrôle dynamique de complexité est présentée dans le document de brevet WO 03/061298 A1, du 24 juillet 2003. 20 Avant de résumer cette technique de contrôle dynamique de complexité, nous décrivons un exemple d'encodeur temps réel classique, en nous appuyant sur la figure 1. L'encodeur est synchronisé sur une horloge discrète. Cette horloge est ajustée sur la fréquence des trames. Par exemple, à 25 trames par secondes, l'horloge donnera 1 top toutes les 40 ms. Ces tops d'horloge sont indexés par la variable t. La période des 25 tops, c'est-à-dire la durée entre deux tops successifs est notée P. L'exemple d'encodeur temps réel de la figure 1 comprend : un module de capture 1 (réalisé par exemple sous la forme d'une carte ou un appareil) qui capture les trames en entrée et qui les convertit en un format utilisable par le module d'encodage. Par exemple, une entrée vidéo 30 peut être au format SDI et la sortie correspondante au format YUV brut ; 2907990 3 une mémoire tampon de capture 2 (aussi appelée buffer de capture , ou Capture buffer en anglais) où sont stockées les trames en attente d'être traitées par le module d'encodage. A l'instant t, cette mémoire tampon de capture contient Np) trames ; un module d'encodage 3 (réalisé par exemple sous la forme d'un appareil) qui effectue la compression. Il prend en entrée une trame capturée et renvoie en sortie une trame compressée. Il traite Ve(t) trames par période d'horloge à l'instant t ; une mémoire tampon intermédiaire 4 (aussi appelée Output buffer en anglais) où sont stockées les trames compressées issues du module d'encodage, en attente d"être transférées vers la mémoire tampon d'émission (VBE). A l'instant t, cette mémoire tampon intermédiaire contient No(t) trames compressées ; - une mémoire tampon d'émission 5 (aussi appelée VBE pour Vérificateur 15 du Buffer d'Emission ) qui est un élément essentiel au bon fonctionnement de la régulation de débit. Le VBE, avec sa logique de contrôle de débit, permet d'amortir en partie la variation de la taille des trames compressées tout en garantissant le respect de la contrainte de débit. Le rôle de la logique de contrôle de débit est de s'assurer que le VBE n'est 20 jamais en dépassement de capacité. Le VBE modélise une mémoire tampon qui stocke les trames compressées jusqu'à ce qu'elle soient transmises sur le canal de communication. Chaque trame compressée dans le VBE est découpée en paquets de données de taille fixe. A l'instant t, le VBE contient D,(t) paquets de données. 25 Les différents éléments 1 à 5 compris dans l'encodeur sont classiquement réalisés de manière informatique, avec un ou plusieurs éléments matériels (composants mémoires et processeurs notamment) et/ou logiciels (programmes). Les transferts de données, référencés A à E sur la figure 1, sont décrits ci- dessous. Un transfert de données est dit synchronisé s'il est aligné sur l'horloge, c'est-à-30 dire s'il a lieu à chaque top . Un transfert de donnée non synchronisé est complètement indépendant de l'horloge. 5 10 2907990 4 Transfert A (synchronisé) : à chaque top, une trame sort du module de capture 1 et est stockée dans la mémoire tampon de capture 2. Transfert B (non synchronisé) : à l'instant t, le module d'encodage 3 prend en entrée Ve(t) trames par période d'horloge. 5 Transfert C (non synchronisé) : à l'instant t, le module d'encodage 3 renvoie également en sortie Ve(t) trames compressées par période d'horloge. Transfert D (synchronisé) : à chaque top, le VBE 5 prend en entrée 1/0(t) paquets de données (qui correspondent généralement à une trame compressée). Transfert E (synchronisé) : le VBV renvoie en sortie un paquet de données à 10 chaque top. Il garantit ainsi un débit contrôlé sur le canal de communication. Dans le cas d'un débit constant (CBR), la taille des paquets de données est constante et donc le débit en sortie est constant. Classiquement, le processus que constitue l'ensemble des transferts A à E est contrôlé par un programme exécuté par un ou plusieurs processeurs compris dans 15 l'encodeur. Les deux mémoires tampons de capture 2 et intermédiaire 4 ont pour fonction d'amortir la variation de temps de traitement par trame de l'encodeur (Ve(t)). Ces deux mémoires tampons sont synchronisées. Lorsque l'une se vide, l'autre se remplit. Soit Mc la taille maximale de chacune de ces deux mémoires tampons. On a : N0(t) = M~ û NN.(t). 20 Si le temps de traitement par le module d'encodage reste supérieur à p (c'est-à-dire si Ve(t) Mc, alors le vidage de la mémoire tampon intermédiaire se fait de 25 manière instantanée et sans synchronisation avec le remplissage de la mémoire tampon de capture, avec M, est la taille maximale initiale de la mémoire tampon intermédiaire, et Nc(t) le niveau de remplissage de la mémoire tampon de capture exprimé en nombre de trames contenues dans la mémoire tampon de capture. 30 Dans un mode de réalisation avantageux de l'invention, le module de contrôle comprend des moyens de réglage dynamique de la complexité du module d'encodage 2907990 8 par sélection dynamique d'un niveau de complexité parmi au moins deux niveaux de complexités distincts, en fonction du niveau de remplissage NVt) de la mémoire tampon de capture exprimé en nombre de trames contenues dans la mémoire tampon de capture et du niveau de remplissage Dv(t) de la mémoire tampon d'émission exprimé en nombre 5 de paquets contenus dans la mémoire tampon d'émission. Avantageusement, lesdits moyens de réglage dynamique de la complexité du module d'encodage appliquent les règles suivantes : - si Ne(t) k*Me", avec Me" = M, + DM), alors réduction de la complexité du module d'encodage, 10 - sinon, pas de réduction de la complexité du module d'encodage, où k k*Mc", avec Me" = MIN(M, + Dv(t), M, + K), et si Dv(t) Me, la mémoire tampon intermédiaire 4 est vide. Elle fonctionne alors en mode instantané . C'est-à-dire que dès que le module d'encodage 3 émet une image compressée, elle est directement transférée dans la mémoire tampon 25 d'émission 5' (VBV), sans attendre la synchronisation. Cela revient à accélérer le vidage de la mémoire tampon d'émission 5' (VBV), afin de rattraper le retard introduit par l'augmentation de la taille la mémoire tampon de capture 2. Le module de contrôle 10 (RTCC) est par exemple réalisé par un programme 30 exécuté par un processeur. 2907990 12 On présente maintenant, en relation avec la figure 4, un encodeur vidéo temps-réel et contraint en débit et en délai, avec contrôle dynamique de la taille de la mémoire tampon de capture et de la complexité, selon un second mode de réalisation de l'invention. 5 Ce second mode de réalisation se différencie du premier (décrit ci-dessus en relation avec la figure 3) en ce que le module de contrôle 20 (aussi appelé RTCCC, pour Real-Time Capture and Complexity Controler ) effectue les mêmes actions que le module de contrôle 10 de la figure 3, et l'action supplémentaire suivante : il règle dynamiquement la complexité du module d'encodage 3 en fonction 10 de Nc(t) et D,(t). Cette commande est représentée par la flèche référencée 15. Ce second mode de réalisation est par exemple mis en oeuvre sur la base d'un encodeur H.264/MPEG4-10 AVC. Un tel encodeur découpe les images en macro-blocs (ou macro-block en anglais). Chaque macro-bloc est encodé suivant un mode choisi 15 dans une liste prédéfinie. Notamment, les modes 16x16, 16x8, 8x16 et 8x8 sont définis pour les macro-blocs dits P . La sélection du meilleur mode d'encodage pour un macro-bloc est un processus coûteux. Afin de réduire la complexité de l'encodeur, nous réduisons la liste de modes testés pour chaque macro-bloc. Ainsi nous définissons deux niveaux de complexité pour l'encodeur (il est clair cependant que dans d'autres modes 20 de réalisation de l'invention, on peut utiliser plus de deux niveaux de complexité). Un niveau standard où tous les modes sont autorisés pour les blocs P, et un niveau de complexité réduite où seul le mode 16x16 est autorisé. Pour plus d'information sur le fonctionnement du standard H.264/MPEG4-10 AVC, on peut se référer à "H.264 and MPEG-4 Video Compression", Iain E G Richardson, John Wiley & Sons, September 25 2003, ISBN 0-470-84837-5. Différentes configurations sont possibles. Par exemple, les seuils peuvent être réglés soit en fonction de Mc, soit en fonction de Me'. Dans une première configuration, nous passons en niveau de complexité réduite lorsque le niveau de remplissage Nc(t) de la mémoire tampon de capture 2 est supérieur à 30 0.8*MM ", avec M," = MAX (Mc') = Mc. + D,(t). Dans une deuxième configuration, plus intéressante, nous avons : 2907990 13 - Me" = MIN(MAX (Mc.'), N,!. + K), où K est une constante positive, par exemple Mc/ 2 et MAX (Mc') = M~ + D,(t) ; le passage au niveau de complexité réduite a lieu lorsque NN.(t) > 0.8*M, " ET D,(t) REVENDICATIONS 1. Encodeur temps-réel et contraint en débit, du type comprenant : - une mémoire tampon de capture (2), stockant des trames en attente d'être traitées - un module d'encodage (3), recevant des trames issues de la mémoire tampon de capture et délivrant des trames compressées ; - une mémoire tampon intermédiaire (4), stockant les trames compressées issues du module d'encodage ; et une mémoire tampon d'émission (5 ; 5'), stockant des paquets de données, résultant du découpage de trames compressées issues de la mémoire tampon intermédiaire, et émettant, avec un débit contrôlé, lesdits paquets de données sur un canal de communication ; ledit encodeur étant caractérisé en ce qu'il comprend un module de contrôle (RTCC ; RTCCC) comprenant des moyens de réglage dynamique de la taille maximale de la mémoire tampon de capture, permettant d'augmenter temporairement la taille maximale de la mémoire tampon de capture tant que la mémoire tampon d'émission n'est pas vide. 2. Encodeur selon la revendication 1, caractérisé en ce que la taille maximale temporaire Mc' de la mémoire tampon de capture est définie par l'équation suivante : M, Me' 3. Encodeur selon l'une quelconque des revendications 1 et 2, caractérisé en ce que le module de contrôle (RTCC ; RTCCC) comprend des moyens de gestion du rythme de vidage de la mémoire tampon intermédiaire en fonction du niveau de remplissage de la mémoire tampon de capture exprimé en nombre de trames contenues dans la mémoire tampon de capture. 4. Encodeur selon la revendication 3, caractérisé en ce que lesdits moyens de gestion du rythme de vidage de la mémoire tampon intermédiaire appliquent les règles suivantes : 2907990 15 - si N,(t) Mc, alors le vidage de la mémoire tampon intermédiaire se fait de manière synchronisée avec le remplissage de la mémoire tampon de capture, et - si N,(t) > Mc, alors le vidage de la mémoire tampon intermédiaire se fait de manière instantanée et sans synchronisation avec le remplissage de la mémoire 5 tampon de capture, avec M, est la taille maximale initiale de la mémoire tampon intermédiaire, et Nc(t) le niveau de remplissage de la mémoire tampon de capture exprimé en nombre de trames contenues dans la mémoire tampon de capture. 5. Encodeur selon l'une quelconque des revendications 1 à 4, caractérisé en ce que 10 le module de contrôle (RTCCC) comprend des moyens de réglage dynamique de la complexité du module d'encodage par sélection dynamique d'un niveau de complexité parmi au moins deux niveaux de complexités distincts, en fonction du niveau de remplissage Nc(t) de la mémoire tampon de capture exprimé en nombre de trames contenues dans la mémoire tampon de capture et du niveau de remplissage DM) de la 15 mémoire tampon d'émission exprimé en nombre de paquets contenus dans la mémoire tampon d'émission. 6. Encodeur selon la revendication 5, caractérisé en ce que lesdits moyens de réglage dynamique de la complexité du module d'encodage appliquent les règles suivantes: 20 - si N,(t) >_ k*Mc", avec Me" = M~ + DM), alors réduction de la complexité du module d'encodage, - sinon, pas de réduction de la complexité du module d'encodage, où k 7. Encodeur selon la revendication 5, caractérisé en ce que lesdits moyens de 25 réglage dynamique de la complexité du module d'encodage appliquent les règles suivantes : - si N,(t) > k*Mc", avec Mc" = MIN(Mc + DM), Mc + K), et si D,(t) 8. Encodeur selon l'une quelconque des revendications 6 et 7, caractérisé en ce que 5 k est compris entre 0,7 et 0,9, en ce que r est compris entre 0,2 et 0,4, et en ce que K=Mc/2. 9. Procédé de contrôle d'un encodeur temps-réel et contraint en débit, du type comprenant : - une mémoire tampon de capture (2), stockant des trames en attente d'être traitées 10 - un module d'encodage (3), recevant des trames issues de la mémoire tampon de capture et délivrant des trames compressées ; - une mémoire tampon intermédiaire (4), stockant les trames compressées issues du module d'encodage ; et 15 une mémoire tampon d'émission (5 ; 5'), stockant des paquets de données, résultant du découpage de trames compressées issues de la mémoire tampon intermédiaire, et émettant, avec un débit contrôlé, lesdits paquets de données sur un canal de communication ; ledit procédé étant caractérisé en ce qu'il comprend une étape de réglage dynamique de 20 la taille maximale de la mémoire tampon de capture, permettant d'augmenter temporairement la taille maximale de la mémoire tampon de capture tant que la mémoire tampon d'émission n'est pas vide. 13. Procédé selon la revendication 9, caractérisé en ce que la taille maximale temporaire Mc' de la mémoire tampon de capture est définie par l'équation suivante : 25 Mes M,'s M, + Dy(t) avec Me la taille maximale initiale de la mémoire tampon de capture, et D,(t) le niveau de remplissage de la mémoire tampon d'émission exprimé en nombre de paquets contenus dans la mémoire tampon d'émission. 14. Procédé selon l'une quelconque des revendications 9 et 10, caractérisé en ce 30 qu'il comprend une étape de gestion du rythme de vidage de la mémoire tampon 2907990 17 intermédiaire en fonction du niveau de remplissage de la mémoire tampon de capture exprimé en nombre de trames contenues dans la mémoire tampon de capture. 12. Procédé selon la revendication 11, caractérisé en ce que dans ladite étape de gestion du rythme de vidage de la mémoire tampon intermédiaire, les règles 5 suivantes sont appliquées : - si Nc(t) Me, alors le vidage de la mémoire tampon intermédiaire se fait de manière synchronisée avec le remplissage de la mémoire tampon de capture, et - si N,(t) > Mc, alors le vidage de la mémoire tampon intermédiaire se fait de manière instantanée et sans synchronisation avec le remplissage de la mémoire 10 tampon de capture, avec M, est la taille maximale initiale de la mémoire tampon intermédiaire, et Nc(t) le niveau de remplissage de la mémoire tampon de capture exprimé en nombre de trames contenues dans la mémoire tampon de capture. 13. Procédé selon l'une quelconque des revendications 9 à 12, caractérisé en ce qu'il 15 comprend une étape de réglage dynamique de la complexité du module d'encodage par sélection dynamique d'un niveau de complexité parmi au moins deux niveaux de complexités distincts, en fonction du niveau de remplissage N,(t) de la mémoire tampon de capture exprimé en nombre de trames contenues dans la mémoire tampon de capture et du niveau de remplissage Dv(t) de la mémoire tampon d'émission exprimé en nombre 20 de paquets contenus dans la mémoire tampon d'émission. 14. Procédé selon la revendication 13, caractérisé en ce que dans ladite étape de réglage dynamique de la complexité du module d'encodage, les règles suivantes sont appliquées : - si Nc(t) ? k*Me", avec Mc" = Mc + Dv(t), alors réduction de la complexité du 25 module d'encodage, - sinon, pas de réduction de la complexité du module d'encodage, où k k*Mc", avec Mc" = MIN(Me + DM), Me + K), et si DM)