Brevet FR3018148A1 — publié le 20150904

GENERATEUR DE FLUX VIDEO Domaine La présente description concerne le domaine des procédés et dispositifs pour générer des flux vidéo de test, et en particulier pour générer un flux vidéo compressé apte à tester 5 un décodeur de vidéo. Arrière-plan Les normes de codage de vidéo, comme la norme ISO H.264 MPEG4 AVC et la norme MPEG HEVC (codage vidéo à haute efficacité), définissent de nombreux modes de fonctionnement 10 différents. Un décodeur vidéo conçu pour décoder de la vidéo compressée selon une telle norme de codage vidéo doit en général être capable de décoder correctement de la vidéo dans tous les modes de fonctionnement. Afin de permettre à un concepteur de tester rigou- 15 reusement la conception d'un décodeur pendant les phases de développement, on a proposé d'appliquer un flux de test, c'est à dire un flux de vidéo compressée conformément à la norme concernée, au décodeur. La sortie vidéo décompressée générée par le décodeur est ensuite comparée à une sortie vidéo de référence 20 qui est connue pour être la décompression correcte du flux de test. Le flux de test devrait couvrir de façon exhaustive les modes de fonctionnement du décodeur qui doivent être testés. , B13163 2 Les solutions courantes pour générer des flux de test pour une norme de codage donnée ont des inconvénients en ce qui 4concerne la couverture du test et/ou le temps de conception. En effet, la production d'un flux de test ayant une couverture de test relativement complète est actuellement un processus lent, ce qui conduit à un temps de disponibilité sur le marché relativement long pour des décodeurs vidéo basés sur de nouvelles normes de codage. Résumé Un objet de modes de réalisation de la présente inven- tion est de résoudre au moins partiellement un ou plusieurs inconvénients de l'art antérieur. Selon un aspect, on prévoit un générateur de flux de test pour générer un flux de vidéo compressée pour tester un décodeur de vidéo, le générateur comprenant : un générateur pseudo-aléatoire conscient du contexte adapté à générer des valeurs pseudo-aléatoires d'éléments de syntaxe sur la base de données de contexte de décodage ; un module de traitement de décodage adapté à traiter les valeurs d'éléments de syntaxe et à générer les données de contexte de décodage ; et un module de codage binaire adapté à coder les valeurs d'éléments de syntaxe afin de générer le flux de vidéo compressée. Selon un mode de réalisation, le module de traitement de décodage est en outre adapté à générer une sortie de vidéo 25 décompressée sur la base des valeurs d'éléments de syntaxe. Selon un mode de réalisation, le module de traitement de décodage est adapté à générer des données de contexte de codage binaire ; et le module de codage binaire est adapté à coder les valeurs d'éléments de syntaxe sur la base des données 30 de contexte de codage binaire. Selon un mode de réalisation, le module de codage binaire et le module de traitement de décodage sont adaptés à traiter les éléments de syntaxe conformément à la norme HEVC (codage vidéo à haute efficacité). B13163 3 Selon un autre aspect, on prévoit un procédé de génération, par un générateur de flux de test, d'un flux de vidéo compressée pour tester un décodeur de vidéo, le procédé comprenant : générer, par un générateur pseudo-aléatoire conscient 5 du contexte, des valeurs pseudo-aléatoire d'éléments de syntaxe sur la base de données de contexte de décodage ; traiter, par un module de traitement de décodage, les valeurs d'éléments de syntaxe pour générer les données de contexte de décodage ; et coder, par un module de codage binaire, les valeurs d'éléments 10 de syntaxe afin de générer le flux de vidéo compressée. Selon un mode de réalisation, le procédé comprend en outre : générer, par le module de traitement de décodage, des données de contexte de codage binaire, le module de codage binaire étant adapté à coder les valeurs d'éléments de syntaxe 15 sur la base des données de contexte de codage binaire. Selon un mode de réalisation, le procédé comprend en outre le fait de demander, par le module de traitement de décodage, les valeurs d'éléments de syntaxe au générateur pseudoaléatoire conscient du contexte. 20 Selon un autre aspect, on prévoit un procédé de test d'un décodeur comprenant : générer un flux de vidéo compressée conformément au procédé susmentionné ; décoder, par le décodeur, le flux de vidéo compressée pour générer une sortie de vidéo décompressée ; et comparer la sortie de vidéo décompressée à une 25 sortie de vidéo de référence. Selon un mode de réalisation, le procédé comprend en outre le fait de générer, par le module de traitement de décodage, la sortie de vidéo de référence. Brève description des dessins 30 Les caractéristiques et avantages susmentionnés, et d'autres, apparaîtront clairement avec' ladescription détaillée suivante de modes de réalisation, donnés à titre d'illustratiOn et non de limitation, en référence aux dessins joints dans lesquels : B13163 4 La figure 1 illustre schématiquement un exemple de décodeur vidéo basé sur une syntaxe ; la figure 2 illustre schématiquement un générateur de flux de test selon un exemple de réalisation de la présente 5 description ; La figure 3 illustre schématiquement plus en détail un module de traitement de décodage du générateur de flux de test de la figure .2 selon un exemple de réalisation de la présente description ; 10 la figure 4 est un organigramme illustrant des opérations dans un procédé de génération d'un flux de vidéo compressée pour tester un décodeur de vidéo selon un exemple de réalisation de la présente description ; la figure 5 illustre schématiquement du matériel pour 15 mettre en oeuvre au moins certaines parties d'un générateur de flux de test selon un exemple de réalisation de la présente description. Description détaillée Dans la description suivante, des modes de réalisation 20 d'un générateur de flux de vidéo compressée sont décrits, ceux-ci étant basés sur la norme MPEG HEVC (codage vidéo à haute efficacité). La spécification décrivant la norme HEVC est par exemple publiée par l'ITU (Union Internationale des Télécommunications) dans la recommandation ITU-T H.265, intitulée : "High 25 efficiency video encoding, SERTES H: AUDIOVISUAL AND MUTLIMEDIA SYSTEMS, Infrastructure of audiovisual services - Coding of moving video", avril 2013. Un document fournissant une vue d'ensemble de cette norme est intitulé "Overview of the High Efficiency Video Coding (HEVC) Standard", G.Sullivan et al., Pre-publication draft 30 to appear in IEEE Trans. on circuits and systems for video technology, Dec. 2012. B13163 La façon dont les modes de réalisation décrits ici pourraient être adaptés à d'autres normes de compression basées sur une syntaxe apparaîtra clairement à l'homme de l'art. Comme on va le décrire plus en détail ci-après, une norme de 5 compression basée sur une syntaxe est une norme qui utilise des éléments de syntaxe pour représentér divers aspects d'un flux de vidéo. Par exemple le générateur de flux de test pourrait être adapté pour générer des flux'de test selon la norme ISO H.264 MPEG4 AVC, la norme vidéo MPEG-2 ou la norme VP9. La figure 1 illustre schématiquement un décodeur 100 basé sur une syntaxe selon un exemple de réalisation. Un décodage basé sur une syntaxe implique deux opérations principales : un codage binaire inverse réalisé par un module de codage binaire inverse (DEBINARIZER) 104,:suivi d'un processus de déco- dage réalisé par un module de traitement de décodage (DECODING PROCESS) 106. Le codage binaire inverse implique la génération d'éléments de syntaxe (SYNTAX ELEMENT) sur la base d'un flux de vidéo d'entrée compressée (COMPRESSED INPUT). En particulier, des requêtes d'éléments de syntaxes (REQUEST SYNTAX ELEMENT) sont reçues du module de traitement de décodage 106, accompagnées de données de contexte de codage binaire (BINARIZATION CONTEXT). Un élément de syntaxe est un élément de données 25 associé au flux de vidéo, qui indique un paramètre, comme la résolution de la vidéo, un mode de prédiction, un coefficient de filtre, ou n'importe quelles autres données représentant le flux de vidéo. Les valeurs de syntaxe de la norme HEVC sont définies dans la clause 7 à partir de la page 28 jusqu'à la page 52 de la 30 publication référencée précédemment. Le contexte de codage binaire fournit une correspondance entre des valeurs d'éléments de syntaxe et des séquences de bits. Cette correspondance peut évoluer pendant le processus de décodage afin de parvenir à une meilleure compres- , B13163 6 sion. Cette correspondance est entièrement spécifiée dans la norme de compression concernée. Dans la norme HEVC, les données de contexte de codage) binaire représentent les probabilités de valeurs des éléments de 5 syntaxe, et permettent de réaliser un décodage CABAC (codage arithmétique binaire adaptatif en fonction du contexte) par le module de codage binaire inverse 104. Comme le comprendra l'homme de l'art, le codage entropique CABAC est une technique de codage binaire qui implique l'utilisation d'une modélisation 10 de contexte pour obtenir des estimations de probabilités conditionnelles qui sont à leur tour utilisées pour compresser une séquence d'éléments de syntaxe en une séquence de bits-de données. Le codage binaire inverse est l'opération inverse dans 15 laquelle la séquence de bits de données est traitée, sur la base des données de contexte de codage binaire, pour recréer les éléments de syntaxe. Le processus de décodage réalisé par le module 106 implique le traitement des éléments de syntaxe, demandés au 20 module de codage binaire inverse 104, pour générer le flux de vidéo décompressée (DECOMPRESSED OUTPUT). Un flux vidéo de test compressé selon la norme HEVC ou une autre norme basée sur une syntaxe, et approprié pour le test d'un décodeur correspondant, comme le décodeur 100 de la figure 25 1, pourrait être généré par un codeur sur la base d'une entrée de vidéo non compressée. Toutefois, un inconvénient d'une telle approche est qu'elle est consommatrice de temps et qu'il est difficile d'assurer une couverture de test complète. La figure 2 illustre schématiquement un générateur de 30 flux de test 200 selon un exemple de réalisation. Le générateur 200 comprend un générateur pseildoaléatoire conscient du contexte (CONTEXT-AWARE PSEUDO-RANDOM GENERATOR) 202, un module de codage binaire (BINARIZER) 204 et un module de traitement de décodage (DECODING PROCESS) 206. B13163 7 Le module de traitement de décodage 206 réalise par exemple les mêmes fonctions que le bloc 106 correspondant de la figure 1. En plus, lte module 206 fournit des données de contexte de décodage (DECODING CONTEXT) au générateur 202. Dans la norme HEVC, les données de contexte de décodage représentent, par exemple, le nombre de blocs déjà décodés dans l'image courante, la résolution, le nombre d'images de référence disponibles, etc. Lorsqu'un nouvel élément de syntaxe est injecté dans le module de traitement de décodage 206, cela va provoquer une mise à jour de l'état du module 206, modifiant ainsi les données de contexte de décodage. Dans certains modes de réalisation, un flux de vidéo décompressée (DECOMPRESSED OUTPUT) est généré par le module de traitement de décodage 206 sur la base des éléments de syntaxe, et cette sortie de vidéo décompressée est utilisée comme sortie vidéo de référence lors d'un test ultérieur d'un décodeur. Le générateur pseudo-aléatoire conscient du contexte 202 reçoit des requêtes pour des éléments de syntaxe (REQUEST SYNTAX ELEMENT) provenant du module de traitement de décodage 20 206, accompagnées des données de contexte de décodage. En réponse, le générateur pseudo-aléatoire 202 génère, pour chaque élément de syntaxe demandé, une valeur pseudo-aléatoire qui tombe dans une plage associée de l'élément de syntaxe, et fournit les valeurs à la fois au module de codage binaire 204 et 25 au module de traitement de décodage 206. Sur la base de l'élément de syntaxe, et des données de contexte de codage binaire (BINARIZATION CONTEXT) provenant du module de traitement de décodage 206, le module de codage binaire 204 est ensuite capable de générer un flux de sortie compressé (COMPRESSED 30 OUTPUT), qui constitue le flux de test. La figure 3 illustre schématiquement plus en détail le module de traitement de décodage 206 de la figure 2 selon un exemple dans lequel il applique un décodage se conformant à la norme HEVC. Comme cela est illustré, ce module comprend par 35 exemple un bloc de prédiction intra (INTRA PREDICTION) 302 et un , B13163 8 bloc de prédiction inter (INTER PREDICTION) 304, chacun d'eux recevant les éléments de syntaxe à partir du générateur pseudoaléatoire conscient du contexte 202. Les sorties des blocs 302 et 304 sont combinées au niveau d'un bloc 306 pour fournir des images prédites (PREDICTED PICTURE). Un bloc transquant inverse (INVERSE TRANSQUANT) 308 reçoit aussi les éléments de syntaxe, et génère des données (RESIDUALS) ayant les dimensions d'une image, mais qui correspondent à la différence entre deux images afin de corriger l'image prédite. La sortie du bloc transquant inverse 308 est fournie à un additionneur 310, qui ajoute cette sortie aux images prédites. La sortie de l'additionneur 310 est fournie à un filtre de boucle (LOOP FILTER) 312, avec les éléments de syntaxe, le filtre fournissant des images filtrées (FILTERED PICTURE) à un tampon d'images décodées (DECODED PICTURE BUFFER) 314, qui à son tour fournit la sortie vidéo décompressée. Le tampon d'images décodées 314 fournit aussi des images de référence (REFERENCE PICTURES) au bloc de prédiction inter 304. Le module de traitement de décodage 206 fournit aussi 20 les données de contexte de décodage, qui correspondent par exemple à l'état du module de traitement de décodage, et les données de contexte de codage binaire, qui par exemple, conformément à la norme HEVC, correspondent à la fréquence et/ou la probabilité de certaines valeurs d'éléments de syntaxe. Ces 25 données sont par exemple mises à jour à chaque fois qu'un nouvel élément de syntaxe est injecté dans le module 206. La figure 4 est un organigramme illustrant des exemples d'opérations dans un procédé de génération d'un flux de vidéo de test basé sur le générateur de flux de test 200 de la 30 figure 2. Dans une première opération 402, un élément de syntaxe suivant est demandé par le module de traitement de décodage 206, sur la base du contexte de décodage et/ou sur la base de la spécification de la norme concernée. Par exemple, pour un 35 premier élément de syntaxe, l'état initial du module de B13163 9 traitement de décodage 206, avant qu'il ait reçu le premier bit d'un flux, est déterminé par la spécification de la norme de décodage vidéo seule, et cela indique quel premier élément de syntaxe doit être demandé. Dans la suite, les éléments de syntaxe à demander sont déterminés partiellement ou entièrement par les données de contexte de décodage. Le générateur pseudo-aléatoire conscient du contexte 202 génère ensuite l'élément de syntaxe demandé et le fournit à la fois au module de traitement de décodage 206 et au module de codage binaire 204. En particulier, le générateur 202 génère par exemple une valeur pseudo-aléatoire pour l'élément de syntaxe, tout en respectant toutes les contraintes imposées sur l'élément de syntaxe par les données de contexte de décodage. Par exemple, les données de contexte de décodage peuvent indiquer qu'un certain élément de syntaxe doit avoir une valeur comprise entre 0 et 7, et le générateur 202 va ainsi générer de façon pseudoaléatoire une valeur dans cette plage. À titre d'exemple plus particulier, dans le cas d'une syntaxe d'échantillon PCM (modulation par codage d'impulsion) de la norme HEVC, une requête de valeurs d'échantillons de luminance et de chrominance pour chacun des pixels d'un bloc de codage peut être faite. La clause 7.3.8.7 de la norme HEVC référencée précédemment définit l'échantillon PCM de la façon suivante : "pcm sample( x0, yO, log2CbSize){ for(i=0; i >1;i++) pcm sample Chrama[i] u(v) }" Le terme "log2CbSize" définit la taille du bloc de codage. Par exemple, une valeur de 3 va correspondre à un bloc de 8 par 8 pixels. Chaque échantillon est défini par un descripteur "u(v)", ce qui signifie qu'il a un nombre de bits 35 défini par un autre élément de syntaxe, et ce paramètre fait par , B13163 10 exemple partie des données de contexte de décodage. Le générateur 202 génère ainsi une valeur aléatoire pour chacun des échantillons PCM de luminance et de chrominanee, d'un nombre approprié de bits. L'opération 402 est suivie d'une opération 404 réalisée par le module de codage binaire 204 et d'une opération 406 réalisée par le module de traitement de décodage 206. Ces opérations peuvent être réalisées. en parallèle ou en série les unes par rapport aux autres. Dans l'opération 404, l'élément de syntaxe généré par le générateur 202 est codé par le module de codage binaire 204 pour obtenir des bits du flux vidéo compressé pour tester un décodeur. Pour cela, le module de codage binaire 204 reçoit aussi par exemple, en plus des éléments de syntaxe provenant du générateur 202, des données de contexte de codage binaire provenant du module de traitement de décodage 206. Dans l'opération 406, l'élément de syntaxe provenant du générateur 202 est traité par le module de traitement de décodage 206 pour générer de nouvelles données de contexte de 20 décodage et de nouvelles données de contexte de codage binaire. En outre, dans certains modes de réalisation, le module de traitement de décodage 206 génère aussi, sur la base de l'élément de syntaxe, des pixels d'une sortie de vidéo décompressée qui fournit par exemple une sortie de vidéo de référence pour tester 25 le décodeur. Dans une opération suivante 408, on détermine si la fin du flux vidéo a été atteinte. Par exemple, le générateur pseudo-aléatoire conscient du contexte 202 est agencé pour générer un certain nombre de trames de données de test. Si la 30 totalité de ces trames n'a pas été générée, le procédé revient par exemple à l'opération 402 afin que l'élément de syntaxe suivant soit identifié et généré. Par contre, si on détermine dans l'opération 406 que la fin du flux vidéo a été atteinte, dans certains modes de 35 réalisation, le procédé se termine. Par exemple, le flux vidéo B13163 11 compressé, et optionnellement la sortie de vidéo décompressée, sont mémorisés sur un support de stockage numérique pour un usage ultérieur dans le test d'un décodeur.. Dans une variante, le procédé continue avec une opération suivante 410, dans laquelle le flux vidéo compressé est fourni au décodeur qui doit être testé. Le décôdeur décompresse le flux de vidéo de test, et le résultat est par exemple comparé à une sortie de vidéo de référence. Dans une opération suivante 412, on détermine si la comparaison réalisée dans l'opération 410 indique une discordance entre les flux de vidéo. Si ce n'est pas le cas, la conception du décodeur est par exemple validée dans une opération suivante 414. Dans l'autre cas, si des discordances sont trouvées, l'erreur est par exemple indiquée dans une opération 416. La partie du décodeur dans laquelle l'erreur a eu lieu est par exemple identifiée sur la base de l'emplacement de l'erreur dans la sortie vidéo. Il sera clair pour l'homme de l'art que le générateur de flux de test 200 peut être mis en oeuvre entièrement ou 20 partiellement par un circuit matériel spécifique, comme un ASIC (circuit intégré spécifique d'application) ou un FPGA (réseau de portes programmable sur site) et/ou par du logiciel exécuté par un dispositif de traitement approprié. La figure 5 illustre un exemple de matériel 500 25 comprenant un dispositif de traitement (PROCESSING DEVICE) 502 adapté pour mettre oeuvre, sur la base de logiciel, au moins certaines des fonctions du générateur de flux de test 200. Le dispositif de traitement 502 comprend un OU plusieurs processeurs sous le contrôle d'instructions de logi- 30 ciel mémorisées dans une mémoire d'instructions (INSTR MEMORY) 504. Le dispositif de traitement 502 est aussi couplé à une mémoire (MEMORY) 506 qui par exemple mémorise au moins temporairement les éléments de syntaxe générés, les données de contexte, la sortie de vidéo décompressée et/ou le flux de vidéo 35 compressée. Une interface d'utilisateur (USER INTERFACE) 508 est , B13163 12 aussi par exemple prévue, celle-ci permettant à un opérateur d'adapter certains paramètres, comme le fait d'imposer ou de retirer des restrictions sur certain des éléments de syntaxe. En outre, une interface de communication (I/O MODULE) 5 510 peut être couplée au dispositif de traitement 502, ce qui permet au flux de test et à la sortie de vidéo décompressée d'être transmis à une station distante_ utilisée pour tester un décodeur. Un avantage des modes de réalisation décrits ici est 10 que, en prévoyant un générateur de flux de vidéo de test qui utilise des parties d'un décodeur de vidéo et des parties d'un codeur de vidéo, un flux de test ayant un format valide peut être généré de façon simple. En générant de façon pseudoaléatoire les valeurs d'éléments de syntaxe, on peut atteindre 15 une grande couverture de test sans avoir besoin de baser le flux de test sur une source de vidéo non compressée. En outre, en utilisant des données de contexte provenant du décodeur de syntaxe, des contraintes peuvent être imposées sur la génération d'éléments de syntaxe pour assurer qu'un flux valide est créé. 20 Avec la description ainsi faite d'au moins un mode de réalisation illustratif, diverses altérations, modifications et améliorations apparaitront facilement à l'homme de l'art. Par exemple, il apparaîtra clairement à l'homme de l'art que les divers- éléments décrits en relation avec les 25 divers modes de réalisation pourraient être combinés, dans des variantes de réalisation, selon des combinaisons quelconques. REVENDICATIONS1. Générateur de flux de test pour générer un flux de vidéo compressée pour tester un décodeur de vidéo, le générateur comprenant un générateur pSeùdo-aléatoire conscient du contexte (202) adapté à générer des valeurs pseudo-aléatoires d'éléments de syntaxe sur la base de données de contexte de décodage ; un module de traitement de décodage (206) adapté à traiter les valeurs d'éléments de syntaxe et à générer les données de contexte de décodage ; et un module de codage binaire (204) adapté à coder les valeurs d'éléments de syntaxe afin de générer le flux de vidéo compressée. 2. Générateur de flux de test selon la revendi- cation 1, dans lequel le module de traitement de décodage (206) 15 est en outre adapté à générer une sortie de vidéo décompressée sur la base des valeurs d'éléments de syntaxe 3. Générateur de flux de test selon la revendi- cation 1 ou 2, dans lequel : le module de traitement de décodage (206) est adapté à 20 générer des données de contexte de codage binaire ; et le module de codage binaire (204) est adapté à coder les valeurs d'éléments de syntaxe sur la base des données de contexte de codage binaire. 4. Générateur de flux de test selon l'une 25 quelconque des revendications 1 à 3, dans lequel le module de codage binaire (204) et le module de traitement de décodage (206) sont adaptés à traiter les éléments de syntaxe conformément à la norme HEVC (codage vidéo à haute efficacité). 5. Procédé de génération, par un générateur de flux 30 de' test, d'un flux de vidéo compressée pour tester un décodeur de vidéo, le procédé comprenant : générer, par un générateur pseudo-aléatoire conscient du contexte (202), des valeurs pseudo-aléatoires d'éléments de syntaxe sur la base de données de contexte de décodage ; traiter, par un module de traitement de décodage (206), les valeurs d'éléments de syntaxe pour générer les données de contexte de décodage et coder, par un module de codage binaire (204), les 5 valeurs d'éléments de syntaxe afin de générer le flux de vidéo compressée. 6. Procédé selon la revendication 5, comprenant en outre : générer, par le module de traitement de décodage (206), des données de contexte de codage binaire, le module de codage binaire (204) étant adapté à coder les valeurs d'éléments de syntaxe sur la base des données de contexte de codage binaire. 7. Procédé selon les revendications 5 ou 6, compre15 nant en outre le fait de demander, par le module de traitement de décodage (206), les valeurs d'éléments de syntaxe au générateur pseudo-aléatoire conscient du contexte (202). 8. Procédé pour tester un décodeur comprenant : générer un flux de vidéo compressée conformément au 20 procédé de l'une quelconque des revendications 5 à 7 ; décoder, par le décodeur, le flux de vidéo compressée pour générer une sortie de vidéo décompressée ; et comparer la sortie de vidéo décompressée à une sortie de vidéo de référence. 9. Procédé selon la revendication 8, comprenant en outre le fait de générer, par le module de traitement de décodage (206), la sortie de vidéo de référence.