Brevet FR2951344A1 — publié le 20110415

Procédé et installation pour marquer en temps réel un flux vidéo composé d'une succession d'images vidéo codées en MPEG-4 AVC Description Domaine technique de l'invention. L'invention a principalement pour objet un procédé et une installation permettant de marquer en temps réel, ou à la volée, un flux vidéo composé 15 d'une succession d'images vidéo codées en MPEG-4 AVC. L'invention se rapporte au domaine technique général du traitement de données d'images vidéo codées en MPEG-4 AVC. Elle concerne plus précisément les techniques de marquage connues sous les termes anglais de 20 « fingerprinting » ou « watermarking », permettant de lutter contre le piratage et la contrefaçon de vidéos numériques. Elle permet également une personnalisation de la vidéo, les images pouvant être modifiées d'une façon propre à chaque utilisateur. 25 État de la technique. Pour être transmise de façon efficace (transmission par satellite, terrestre, ou câble), une vidéo numérique est compressée (ou codée) avec un 10 2951344 -2 standard de compression optimisé pour la vidéo par exemple selon les normes MPEG-4 AVC. Classiquement, le flux vidéo est composé d'une succession d'images vidéo codées en MPEG-4 AVC, lesdites images étant constituées de plusieurs tranches (ou slices en anglais) de macroblocs organisées sous forme 5 de lignes. Le développement des réseaux de communication (télévision numérique, téléphonie mobile, Internet, ...) favorise la transmission et la diffusion de flux vidéo numériques vers une grande quantité d'unités de réception (téléviseur, téléphone mobile, ordinateur, ...). Cette augmentation des échanges s'accompagne hélas d'une augmentation des actes de contrefaçon et de piratage. Il est en effet courant qu'un utilisateur réceptionne ou télécharge à titre privé des données vidéo (typiquement un film, une émission de télévision, ...), et fasse une copie illicite de ces données qu'il distribuera ultérieurement à des personnes non autorisées. Il est également possible que l'utilisateur réceptionne à titre privé un contenu vidéo qu'il diffusera illégalement vers d'autres unités de réception. Il apparaît donc nécessaire de contrôler et de sécuriser la transmission et la diffusion des flux vidéo de façon à en protéger les auteurs. Les techniques de marquage d'images vidéo numériques plus connues sous les termes anglais « fingerprinting » ou « watermarking », permettent d'insérer une marque (ou une « empreinte digitale ») sur une ou plusieurs images afin d'identifier leur provenance lorsqu'elles sont diffusées sur un réseau de communication. La marque peut être perceptible ou imperceptible lorsque la vidéo est jouée. On utilise ce marquage lorsque l'on souhaite pouvoir tracer une vidéo susceptible d'être diffusée illégalement, et plus spécifiquement pour identifier le contrefacteur présumé, c'est-à-dire le premier utilisateur qui a initialement reçu la vidéo et qui l'a ensuite diffusée de manière illégale. La marque insérée dans la vidéo numérique va dépendre de l'utilisateur qui la réceptionne, et il y aura autant de versions différentes d'une même vidéo qu'il y aura d'utilisateurs légitimes. Si ces utilisateurs légitimes diffusent par la suite 2951344 -3 illégalement la vidéo, l'analyse des marques permettra de facilement remonter jusqu'à eux. Un marquage spécifique à chaque utilisateur permet également de 5 personnaliser une vidéo envoyée à un ensemble d'utilisateurs, en modifiant à la volée les images après réception et d'une façon déterminée par les paramètres personnels de cet utilisateur précis. On connaît par les documents brevets EP 0.777.946 (MACROVISION), 10 US 2005/0213826 (INTEL), WO 2005/114571 (THOMSON), GB 2.438.907 (SONY) ou encore WO 2007/098296 (VOBILE) diverses techniques permettant d'insérer des données d'identification d'origine dans un signal vidéo. Ces méthodes de marquage connues de l'art antérieur apparaissent être complexes à mettre en oeuvre. 15 En tout état de cause, le marquage d'un flux vidéo codé en MPEG-4 AVC est dans la plupart des cas réalisé lorsque ledit flux est décompressé (ou décodé). En effet, il faut souvent décoder tout le flux pour accéder à un seul macrobloc correspondant à un endroit bien précis de l'image à modifier. De 20 plus, le marquage à la volée d'un flux compressé apparaît être plus délicat et plus complexe, car la modification d'une image codée en MPEG-4 AVC peut être néfaste si elle sert de référence pour le décodage des images suivantes dans l'ordre de décodage dudit flux. C'est pour ces raisons qu'il est plus courant de marquer une image décodée plutôt qu'une image codée. 25 Face à cet état des choses, le principal objectif de l'invention est de proposer un procédé permettant de modifier rapidement et simplement certains éléments d'un flux vidéo codé en MPEG-4 AVC afin de marquer certaines images originelles à la volée, c'est-à-dire sans qu'il soit nécessaire de décoder 30 ledit flux. Un autre objectif de l'invention est de proposer un procédé permettant d'identifier et de sélectionner rapidement certains macroblocs du flux vidéo qui - 4 pourront facilement être remplacés par des macroblocs codant l'information d'identification ou de personnalisation servant au marquage. L'invention a en outre pour objectif de proposer une installation permettant de facilement et rapidement mettre en oeuvre ce procédé. Divulgation de l'invention. La solution proposée par l'invention est un procédé pour marquer un flux 10 vidéo généré par un encodeur, ledit flux étant composé d'une succession d'images vidéo codées en MPEG-4 AVC, lesdites images codées étant constituées d'une ou plusieurs tranches de macroblocs. Ce procédé consiste à : a) coder une information d'identification ou de personnalisation sous la forme de macroblocs, 15 b) identifier à la volée, dans le flux vidéo (F), au moins une image comportant un ou plusieurs des macroblocs modifiables suivants : • macrobloc ne servant pas de référence pour le décodage des images suivantes dans l'ordre de décodage dudit flux vidéo, • et/ou macrobloc servant de référence mais dont la modification n'engendre 20 pas de modification visible lors de l'affichage du flux vidéo (F) sur un écran, c) sélectionner dans l'image identifiée à l'étape b), un ou plusieurs des macroblocs modifiables, d) remplacer les macroblocs modifiables sélectionnés à l'étape c) par les macroblocs codant l'information d'identification ou de personnalisation. 25 Le principe de l'invention consiste à remplacer une image ou une partie d'image, par une autre image ou une autre partie d'image, à la volée, c'est-à-dire sans décodage préalable d'image. Ceci peut typiquement être utilisé pour insérer un code permettant d'identifier l'image à la manière d'une empreinte 30 digitale : c'est le « fingerprinting ». Ceci peut être également utilisé pour personnaliser certaines parties d'une vidéo pour un utilisateur donné. 2951344 -5 Au sens de la présente invention, on parlera de macroblocs références si au moins un de ses pixels et/ou un de ses paramètres (tels que les possibles vecteurs de mouvements, les possibles images de référence utilisées, etc) est 5 utilisé pour une prédiction dans les images suivantes dans l'ordre de décodage du flux vidéo. A l'opposé, on parlera de macroblocs non références ou ne servant pas de référence. L'étape a) peut être réalisée en codant l'information d'identification ou de personnalisation sous la forme d'un ou plusieurs macroblocs destinés à être placés à un endroit précis de l'image en tenant compte du contexte de décodage et des informations de prédictions issues des macroblocs précédents. Dans une variante de réalisation, on code l'information d'identification ou de personnalisation sous la forme d'une ou plusieurs tranches. Selon encore une autre variante de réalisation, l'information d'identification ou de personnalisation est codée sous la forme d'un ou plusieurs pixels, ces pixels permettant de caractériser en partie ou en totalité un ou plusieurs macroblocs I_PCM. Selon encore une autre variante de réalisation, une ou plusieurs informations d'identification ou de personnalisation, pré-encodées ou non au bon format, sont directement envoyées par l'encodeur (ou par une autre source) conjointement avec le flux vidéo. Dans ce cas, l'étape a) est réalisée en sélectionnant et en codant, si besoin, une des ces informations. En pratique, le récepteur pourra être configuré pour choisir quelle information utiliser (ou choisira de n'utiliser aucune de ces informations) en fonction de paramètres qu'il aura en sa possession. L'information d'identification ou de personnalisation choisie peut être codée directement lors de son envoi ou codée par le récepteur : - soit sous la forme d'un ou plusieurs macroblocs destinés à être placés à un endroit précis de l'image en tenant compte du contexte de - 6 décodage et des informations de prédictions issues des macroblocs précédents ; - soit sous la forme d'une ou plusieurs tranches ; - soit sous la forme d'un ou plusieurs pixels, ces pixels permettant de caractériser en partie ou en totalité un ou plusieurs macroblocs I_PCM. Selon un premier mode de réalisation, l'étape b) peut être réalisée en identifiant les images non références qui, dans l'ordre de décodage, sont constituées d'une ou plusieurs unités NAL contenant des tranches et dont les en-têtes ont le paramètre nal_ref_idc égal à O. Dans une variante de ce premier mode de réalisation, cette étape b) est réalisée en identifiant les images références qui comportent un ou plusieurs macroblocs dont les pixels et/ou les paramètres ne sont pas utilisés comme référence par les macroblocs des images suivantes. Dans une autre variante de ce premier mode de réalisation, cette étape b) est réalisée en identifiant les images références qui comportent un ou plusieurs macroblocs I_PCM dont au moins une partie des pixels n'est pas utilisée comme référence par les macroblocs des images suivantes. Encore une autre variante de ce premier mode de réalisation permettant de simplifier l'étape b), consiste à réaliser cette dernière en identifiant les images (références ou non références) qui comportent un ou plusieurs macroblocs non références introduits de manière forcée dans le flux vidéo. Les coordonnées de ces macroblocs peuvent être potentiellement indiquées à l'entité chargée de mettre en oeuvre l'étape b), par l'encodeur ou une autre source. Selon un second mode de réalisation, l'étape b) peut être réalisée en identifiant les images références qui comportent un ou plusieurs macroblocs 2951344 -7 références mais dont la modification n'engendre pas de modification visible lors de l'affichage du flux vidéo sur un écran. Dans une variante de ce second mode de réalisation, l'étape b) est 5 réalisée en identifiant les images références qui comportent un ou plusieurs macroblocs I_PCM références mais dont au moins une partie des pixels est modifiable sans que cela n'engendre de modification visible lors de l'affichage du flux vidéo sur un écran. 10 Dans une autre variante de ce second mode de réalisation, l'étape b) est réalisée en identifiant les images qui comportent un ou plusieurs macroblocs références mais dont la modification n'engendre pas de modification visible lors de l'affichage du flux vidéo sur un écran, lesdits macroblocs étant introduits de manière forcée dans ledit flux. 15 Concernant le remplacement des macroblocs (étape d), un ou plusieurs macroblocs de synchronisation pourront éventuellement être rajoutés juste après les macroblocs codant l'information d'identification ou de personnalisation, lesdits macroblocs de synchronisation étant codés de sorte 20 que les macroblocs suivant lesdits macroblocs codant l'information d'identification ou de personnalisation possèdent le même contexte de décodage et les mêmes données de prédiction qu'avant modification. L'étape d) peut également être réalisée en remplaçant une tranche 25 entière de macroblocs modifiables préalablement identifiés à l'étape c), par une tranche entière de macroblocs codant l'information d'identification ou de personnalisation. L'étape d) peut également être réalisée en remplaçant une partie ou la 30 totalité des pixels d'un ou plusieurs macroblocs I_PCM modifiables préalablement identifiés à l'étape c), par des pixels codant l'information d'identification ou de personnalisation. - 8 Les étapes b) et d) pouvant être complexes à réaliser, on préfère forcer l'encodeur à générer dans le flux vidéo, un ou plusieurs des macroblocs modifiables suivants : ^ une ou plusieurs tranches entières de macroblocs non références destinés à être remplacés par une ou plusieurs tranches codant l'information d'identification ou de personnalisation, • et/ou une ou plusieurs tranches entières de macrobloc références mais dont la modification n'engendre pas de modification visible lors de l'affichage du flux vidéo sur un écran, et destinés à être remplacés par une ou plusieurs tranches codant l'information d'identification ou de personnalisation, • et/ou des macroblocs I_PCM non références destinés à voir un ou plusieurs de leurs pixels remplacés par des pixels codant l'information d'identification ou de personnalisation, • et/ou des macroblocs I_PCM référence mais dont la modification n'engendre pas de modification visible lors de l'affichage du flux vidéo sur un écran, et destinés à voir un ou plusieurs de leurs pixels remplacés par des pixels codant l'information d'identification ou de personnalisation. Pour simplifier le marquage, l'encodeur génère une ou plusieurs tranches entières de macroblocs modifiables dont la taille et la localisation sont définies en fonction de la taille et de la localisation voulues pour l'information d'identification ou de personnalisation. Dans le même but, l'encodeur peut générer un ou plusieurs macroblocs I_PCM modifiables dont le nombre et la localisation sont définis en fonction de la taille et de la localisation voulues pour l'information d'identification ou de personnalisation. Pour simplifier d'avantage l'identification des macroblocs modifiables à remplacer (étape b), l'encodeur peut directement intégrer dans le flux vidéo, une information permettant de localiser les tranches entières de macroblocs modifiables et/ou les macroblocs I_PCM modifiables générés, ladite information - 9 de localisation étant analysée pour réaliser l'étape b). Dans une variante de réalisation, l'encodeur transmet à une entité adaptée pour mettre en oeuvre l'étape b) (typiquement le récepteur du flux vidéo), une ou plusieurs informations permettant de localiser les tranches entières de macroblocs modifiables et/ou les macroblocs I_PCM modifiables générés, lesdites informations de localisation étant analysées pour réaliser l'étape b). Un autre aspect de l'invention concerne un programme comportant des instructions exécutables par un processeur agencé dans une installation apte à recevoir un flux vidéo généré par un encodeur et composé d'une succession d'images vidéo codées en MPEG-4 AVC, lesdites instructions permettent de mettre en oeuvre le procédé conforme à l'invention pour marquer ledit flux vidéo. Encore un autre aspect de l'invention concerne une carte d'extension configurée pour être insérée dans le port d'interface commune d'un récepteur de télévision numérique, ledit récepteur étant configuré pour recevoir un flux vidéo généré par un encodeur et composé d'une succession d'images vidéo codées en MPEG-4 AVC. Cette carte comporte avantageusement : - une zone-mémoire dans laquelle est stocké un programme comportant des instructions permettant de mettre en oeuvre le procédé conforme à l'invention, - un processeur configuré pour exécuter les instructions dudit programme pour marquer ledit flux vidéo. Encore un autre aspect de l'invention concerne une installation remarquable en ce qu'elle comporte : - un encodeur configuré pour générer un flux vidéo composé d'une succession d'images vidéo codées en MPEG-4 AVC, - un moyen pour recevoir le flux vidéo, - un décodeur configuré pour décoder ledit flux vidéo, 2951344 - 10 - - une zone-mémoire dans laquelle est stocké un programme comportant des instructions permettant de mettre en oeuvre le procédé conforme à l'invention, - un processeur configuré pour exécuter les instructions dudit 5 programme et marquer ledit flux vidéo avant décodage. Préférentiellement, l'encodeur comporte un moyen pour générer dans le flux vidéo, une ou plusieurs tranches entières de macroblocs modifiables et/ou des macroblocs I_PCM modifiables destinés à être remplacés par les 10 macroblocs codant l'information d'identification ou de personnalisation. L'encodeur peut comporter un moyen pour générer conjointement avec le flux vidéo, différentes informations d'identification ou de personnalisation déjà encodée, le programme comportant des instructions permettant de choisir une 15 desdites informations. Dans une variante de réalisation, l'encodeur peut comporter un moyen pour générer conjointement avec le flux vidéo, différentes informations d'identification ou de personnalisation, le programme comportant des instructions permettant de choisir une desdites informations et de l'encoder. 20 Encore un autre aspect de l'invention concerne un récepteur de télévision numérique équipé : - d'un moyen pour recevoir le flux vidéo, - d'un décodeur configuré pour décoder le flux vidéo, - d'un port d'interface commune configuré pour recevoir une carte 25 d'extension par laquelle transite ledit flux vidéo avant décodage. Conformément à l'invention, la carte comporte une zone-mémoire dans laquelle est stocké le programme comportant des instructions permettant de mettre en oeuvre le procédé conforme aux caractéristiques et un processeur configuré pour exécuter lesdites instructions pour marquer le flux vidéo avant 30 décodage. 2951344 -11- Selon une autre caractéristique avantageuse de l'invention, le processeur de la carte d'extension est activé à distance par un code de commande généré par l'encodeur et intégré dans le flux vidéo lors de l'émission dudit flux vers ledit récepteur. Description des figures. D'autres objectifs, avantages et caractéristiques de l'invention 10 apparaîtront mieux à la lecture de la description des modes de réalisation préférés qui vont suivre, en référence aux dessins annexés, réalisés à titre d'exemples indicatifs et non limitatifs et sur lesquels : - la figure 1 représente schématiquement la structure d'un flux vidéo codé en MPEG-4 AVC, 15 - la figure 2 montre un exemple de paquétisation du flux vidéo ainsi que la sélection des données utiles à la vidéo, - les figures 3a et 3b schématisent différentes étapes permettant de remplacer des macroblocs originels par des macroblocs codant l'information d'identification ou de personnalisation, 20 - la figure 4 est un organigramme représentant différentes étapes d'un premier mode de réalisation du procédé objet de l'invention, - la figure 5 un organigramme représentant différentes étapes d'un second mode de réalisation du procédé objet de l'invention, - la figure 6 schématise une installation conforme à l'invention. 25 Modes de réalisation de l'invention. 1. Le standard MPEG-4 AVC. 5 30 2951344 - 12 - Pour toute information détaillée sur la norme H264/MPEG-4 AVC, l'homme du métier se reportera au document « ITU-T-Recommandation H.264-ISO/IEC 14496-10 » la décrivant. 5 La figure 1 donne un exemple de structure d'image utilisée. Dans un flux MPEG-4 AVC, une séquence vidéo SEQ est composée de plusieurs groupes GOP d'images IM se succédant dans le temps. Chaque image IM est composée de plusieurs lignes horizontales L1, L2, ..., Ln, avec généralement n=36 pour un flux SD PAL. Chaque ligne regroupe des macroblocs M alignés 10 de gauche à droite sans recouvrement. Les différents macroblocs M sont regroupés dans une ou plusieurs entités S1, S2, S3, appelées « tranches » ou « slice » en anglais. Ces tranches correspondent à tout ou partie d'une image IM. Les macroblocs M sont des pavés de 16 pixels de largeur par 16 pixels de hauteur en luminance et de 8 pixels de largeur par 8 pixels de hauteur 15 en chrominance lorsque l'échantillonage est en 4:2:0 (on peut avoir aussi des tailles de 8x16, de 16x16 ou pas de chrominance du tout). Les images IM sont donc composées de tranches S1, S2, S3 regroupent un ensemble de macroblocs M. 20 Dans le mode de fonctionnement appelé MBAFF (pour le terme anglais Macroblock Adaptative Frame Field), les macroblocs M se présentent par paires comme le montre le détail de droite de la figure 1. Dans le reste de la description, on explicitera l'invention au regard du mode non MBAFF (macroblocs unitaires). Cependant, l'invention peut être transposée en utilisant 25 le mode MBAFF (macroblocs en paires). La norme H264/AVC englobe une couche de codage vidéo VCL (pour l'anglais Video Coding Layer) qui représente efficacement le contenu vidéo et une couche d'abstraction de réseau NAL (pour l'anglais Network Abstraction 30 Layer). Cette dernière couche formate la représentation VCL de la vidéo et fournit des informations d'en-tête pour être acheminées par les couches de transport ou des supports de stockage particulier. Le flux est donc composé 2951344 - 13 - d'un ensemble d'unités NAL qui sont des entités dans lesquelles sont encapsulées, entre autre, les tranches de macroblocs. Elles renferment toutes les informations permettant de décoder le flux vidéo. En pratique, il existe plusieurs type d'unités NAL : les unités NAL de type SPS (pour l'anglais 5 Sequence Parameter Set - ensemble de paramètres de séquence) contenant des paramètres communs à toute une séquence de vidéo ; les unités NAL de type PPS (pour l'anglais Picture Parameter Set - ensemble de paramètres d'image) contenant des paramètres communs à une image ; les unités NAL contenant les informations permettant de décoder une tranche de macroblocs ; 10 etc. La structure des unités NAL est bien connue de l'homme du métier et décrite en détail dans le document « ITU-T-Recommandation H.264-ISO/IEC 14496-10 ». Elle ne sera donc pas explicitée plus en détail dans la présente description. 15 Dans la norme H264/AVC, on peut définir trois principaux types de tranches de macroblocs : - les tranches I (ou Intra) : ce sont des tranches qui sont codées en utilisant seulement leur propre information. Les macroblocs sont codés sans référence à d'autres images de la séquence vidéo. 20 - les tranches P (ou Prédictive) : ce sont des tranches qui sont codées en utilisant leur propre information ainsi que les informations d'images de références précédemment décodées. Elles utilisent la compensation de mouvement pour un meilleur taux de compression. - les tranches B (ou Bi-prédictive) : ce sont des tranches qui sont 25 codées en utilisant leur propre information ainsi que les informations d'images de références suivantes ou précédentes et décodées. Deux images références peuvent être utilisées simultanément pour procéder à la prédiction d'un macrobloc. 30 Chaque image qui vient d'être décodée peut devenir référence ou non référence pour les autres images décodées. 2951344 - 14 - Dans chaque tranche, les macroblocs sont, en général, encodés les uns après les autres à l'aide de plusieurs procédés ou algorithmes permettant d'utiliser peu de bits. Dans la majorité des cas, et en se rapportant à la figure 1, on commence par encoder le macrobloc en haut à gauche de l'image puis on 5 passe au macrobloc suivant positionné directement sur sa droite. Lorsqu'on est arrivé à l'extrémité de la première ligne L1, on encode le macrobloc positionné le plus à gauche de la seconde ligne L2 et ainsi de suite. Lorsqu'on utilise le mode MBAFF, les macroblocs sont gérés par paires. Sur la première paire située en haut à gauche de l'image, on encode d'abord le macrobloc situé en 10 haut puis celui du bas. On passe ensuite à la paire positionnée directement à sa droite et ainsi de suite. Les principaux procédés d'encodage sont les suivants : - l'utilisation d'une transformation semblable à la transformation DCT 15 (pour Discrete Cosinus Transform en anglais), de la quantification, ainsi que d'une linéarisation spécifique des coefficients permettent généralement d'enlever les détails les moins importants pour l'ceil humain et ainsi avoir moins d'information à encoder. - l'utilisation de la compensation de mouvement permet à partir de 20 l'image précédente et/ou suivante (temporellement parlant) ainsi qu'à l'aide de données supplémentaires telles que les vecteurs de mouvement, de prédire la texture du macrobloc courant. Il suffit alors de coder la différence à l'aide du procédé précédent. Le principe de ce codage repose d'une part, sur la compensation de mouvement : où se trouve le macrobloc dans l'image à t+1, « 25 ressemblant » le plus à un macrobloc donné à l'instant t, et d'autre part, sur le codage des erreurs entre les deux blocs correspondants, qui ne peuvent être parfaitement identiques. Ainsi, une fois calculés les vecteurs déplacement, un codeur s'en sert pour calculer les différences entre le macrobloc actuel et le macrobloc de référence, pixel à pixel. 30 - l'utilisation de l'intra-prédiction qui permet de prédire un macrobloc à partir des macroblocs voisins. 2951344 - 15 - - l'utilisation de codes de tailles variables (VLC) pour coder certains paramètres du macrobloc. Ainsi, pour chaque paramètre, les valeurs les plus fréquemment rencontrées sont codées en utilisant peu de bits et inversement les valeurs rarement rencontrées sont codées avec beaucoup de bits : c'est un 5 codage entropique. Dans la norme H264/AVC, deux modes évolués sont possibles : le CAVLC (pour l'anglais Context Adaptative Variable Length Coding) et le CABAC (pour l'anglais Context Adaptative Binary Arithmetic Coding). 10 Dans les tranches I, seuls des macroblocs intra sont codés (pas de compensation de mouvement). Ceux-ci peuvent être prédits à partir de macroblocs voisins : c'est l'intra-prédiction. Dans les tranches P, des macroblocs intra ou utilisant la prédiction de mouvement peuvent être codés. Lorsque le macrobloc est codé en utilisant la 15 prédiction de mouvement, il utilise la compensation de mouvement à l'aide d'une des images références disponibles. Dans les tranches B, des macroblocs intra, ou utilisant la prédiction de mouvement peuvent être codés. Lorsque les macroblocs sont codés en utilisant la prédiction de mouvement, celle-ci peut alors utiliser simultanément les 20 informations de deux images de références disponibles : c'est la bi-prédiction. Certains macroblocs dans les tranches P et B peuvent être prédits sans qu'il soit nécessaire d'ajouter d'information supplémentaire. Ils peuvent alors être sautés (ou skipped en anglais). Dans la norme H264/AVC, on retrouve des macroblocs dits I_PCM (de 25 l'anglais Intra Pulse Code Modulation). II s'agit de macroblocs intra non compressés. Ces macroblocs I_PCM sont codés pixel par pixel. 2. Principe du procédé objet de l'invention. Le procédé objet de l'invention permet de marquer en temps réel, ou à la volée, un flux vidéo généré par un encodeur, ledit flux étant composé d'une 30 2951344 - 16 - succession d'images vidéo codées en MPEG-4 AVC, lesdites images codées étant constituées d'une ou plusieurs tranches de macroblocs. Ce procédé consiste à : a) coder une information d'identification ou de personnalisation sous la 5 forme de macroblocs, b) identifier à la volée, dans le flux vidéo (F), au moins une image comportant un ou plusieurs des macroblocs modifiables suivants : • macrobloc ne servant pas de référence pour le décodage des images suivantes dans l'ordre de décodage dudit flux vidéo, 10 • et/ou macrobloc référence mais dont la modification n'engendre pas de modification visible lors de l'affichage du flux vidéo (F) sur un écran, c) sélectionner dans l'image identifiée à l'étape b), un ou plusieurs des macroblocs modifiables, d) remplacer les macroblocs modifiables sélectionnés à l'étape c) par les 15 macroblocs codant l'information d'identification ou de personnalisation. 2.1. Réalisation de l'étape a). 20 L'information d'identification ou de personnalisation est avantageusement codée sous la forme d'un ou plusieurs macroblocs destinés à être placés à un endroit précis de l'image en tenant compte du contexte de décodage et des informations de prédictions issues des macroblocs précédents. L'information d'identification ou de personnalisation peut également être codée sous la forme 25 d'une ou plusieurs tranches ou sous la forme d'un ou plusieurs pixels, ces pixels permettant de caractériser en partie ou en totalité un ou plusieurs macroblocs I_PCM. Dans le cas où l'on remplace des macroblocks qui ne sont pas I_PCM, le 30 codage de l'information d'identification ou de personnalisation sous forme d'un ou plusieurs macroblocs est réalisé au moyen d'un algorithme connu de l'homme du métier. On pourra par exemple utiliser un algorithme d'encodage du 2951344 - 17 - type décrit précédemment. Typiquement, l'information d'identification ou de personnalisation se présente sous la forme d'un code binaire permettant de visualiser un texte, une image, une suite de chiffres et/ou de lettres ou toute autre marque équivalente, lorsque la vidéo est décodée et jouée sur un écran. 5 En particulier, l'information d'identification ou de personnalisation pourra être une suite de chiffres et/ou de lettres associée au numéro de série d'une unité de réception du flux vidéo ou associée à l'identité de son propriétaire. Pour encoder correctement l'information, les unités NAL, contenant des informations importantes comme les PPS et les SPS courants, seront récupérées dans le 10 flux vidéo et analysées. L'encodeur (ou une autre source) peut être configuré pour envoyer une ou plusieurs informations d'identification ou de personnalisation différentes conjointement avec le flux vidéo, l'étape a) étant réalisée en codant une des 15 ces informations. Avantageusement, le récepteur est alors configuré pour choisir, en fonction de certains paramètres qu'il a en sa possession, laquelle desdites informations il va utiliser pour effectuer l'opération de marquage du flux vidéo. Comme décrit précédemment, l'information d'identification ou de 20 personnalisation choisie peut être codée : - soit sous la forme d'un ou plusieurs macroblocs destinés à être placés à un endroit précis de l'image en tenant compte du contexte de décodage et des informations de prédictions issues des macroblocs précédents ; 25 - soit sous la forme d'une ou plusieurs tranches ; - soit sous la forme d'un ou plusieurs pixels, ces pixels permettant de caractériser en partie ou en totalité un ou plusieurs macroblocs I_PCM. Chacune de ces informations d'identification ou de personnalisation peut être soit déjà pré-encodée lors de leur envoi (auquel cas, le récepteur devra 30 simplement les sélectionner), soit à encoder ultérieurement (auquel cas, il faudra appliquer un algorithme d'encodage du type décrit précédemment). 2951344 - 18 - Le récepteur peut également être configuré pour ne choisir aucune de ces informations reçues et : soit ne pas effectuer l'opération de marquage, soit utiliser une autre information d'identification ou de personnalisation qu'il intègre déjà (par exemple qui est initialement stockée dans sa zone-mémoire). 2.2. Réalisation de l'étape b). 2.2.1. Cas d'une image non référence. 10 Pour réaliser l'étape b), on peut chercher à savoir si, dans l'ordre de décodage, l'image courante analysée ne va pas être utilisée comme référence pour les images suivantes. Dans la norme MPEG-4 AVC, si une image est composée de plusieurs tranches de macroblocs, alors soit toutes ces tranches sont utilisées comme références, soit aucune de ces tranches n'est utilisée 15 comme référence. Lorsque les données du flux MPEG-4 AVC sont analysées, des séquences spécifiques de trois octets (0, 0 et 1) appelées codes de début ou « startcodes » en anglais ou plus spécifiquement « start_code_prefix_one_3bytes » dans la norme H.264, sont recherchées de manière à localiser les unités NAL. Une fois que ces dernières sont localisées, 20 l'en-tête de chaque unité NAL va être lue de manière à déterminer si elle contient une tranche et, si c'est le cas, si la tranche de macroblocs qu'elle encapsule est ou non utilisée comme référence. Cette information est donnée par le paramètre nal_ref_idc contenu dans l'en-tête de l'unité Nal. Si ce paramètre nal_ref_idc est différent de 0, alors la tranche de macroblocs 25 encapsulée dans l'unité NAL est utilisée comme référence. Et si ce paramètre nal_ref_idc est égal à 0, alors la tranche de macroblocs encapsulée n'est pas utilisée comme référence. L'étape b) est donc réalisée en identifiant les unités NAL contenant des tranches et dont l'en-tête contient le paramètre nal_ref_idc égal à O. 30 2.2.2. Cas d'une image référence. 5 2951344 - 19 - Dans le cas où le paramètre nal_ref_idc n'est pas nul, on peut chercher à identifier les images comportant un ou plusieurs macroblocs non références. Cette option revient à analyser le bitstream (parsing), pour déterminer les paramètres de chaque image et de chaque macrobloc du flux vidéo et définir 5 quels sont les macroblocs qui ne sont pas utilisés comme référence. En pratique, il s'agit des macroblocs dont les pixels et/ou les paramètres ne sont pas utilisés comme référence par les macroblocs des images suivantes. Cette analyse peut toutefois s'avérer fastidieuse et longue à effectuer. 10 Pour éviter cette analyse, on préfère identifier les images références qui comportent un ou plusieurs macroblocs non références introduits de manière forcée dans le flux vidéo. Comme cela est expliqué plus en détail dans la suite de la description, ces macroblocs non références sont générés de manière forcée par l'encodeur et introduits dans le flux vidéo, notamment dans une 15 image référence. On notera que ces macroblocs peuvent également être introduits dans une image non référence. Dans tous les cas, il est également possible de sélectionner un ou plusieurs macroblocs utilisés comme références pour le décodage des images 20 suivantes dans l'ordre de décodage du flux vidéo, mais dont la modification n'engendre pas de modification visible lors de l'affichage du flux vidéo sur un écran. Ces macroblocs peuvent être introduits de manière forcée dans le flux vidéo. Par « pas de modification visible » on entend : soit aucune modification, soit des modifications qui ne sont pas perceptibles par une personne visualisant 25 normalement la vidéo sur un écran, c'est-à-dire sans utiliser des fonctions du type « ralenti », « arrêt sur image » ou « zoom ». Ces macroblocs références modifiables sont typiquement ceux dont les pixels et/ou les paramètres sont utilisés comme références mais que l'on peut 30 modifier sans que cela n'entraine de modification visible gênante sur l'affichage, c'est-à-dire avec peu de pixels modifiés et/ou dont la valeur n'est pas trop différente de la valeur originale. Ce sont par exemple des macroblocs dont les 2951344 - 20 - pixels sont utilisés pour reconstruire des macroblocs qui sont dans l'image mais finalement pas affichés, conséquence d'un rognage appliqué au niveau du décodage H.264 et/ou d'un rognage appliqué par le dispositif qui affiche les images décodées. Il faut également que ces derniers macroblocs non affichés 5 ne soient pas utilisés comme références ou alors utilisés comme références mais uniquement pour reconstruire des macroblocs qui sont également rognés et ainsi de suite. De la même manière, on peut également sélectionner un ou plusieurs 10 macroblocs I_PCM références dont au moins une partie des pixels est modifiable sans que cela n'engendre de modification visible lors de l'affichage du flux vidéo sur un écran. Ces macroblocs I_PCM peuvent être introduits de manière forcée dans le flux vidéo. 15 2.3. Réalisation de l'étape d). Après avoir sélectionné un ou plusieurs des macroblocs modifiables (étape c), il convient de les remplacer par les macroblocs codant l'information 20 d'identification ou de personnalisation. Dans le cas général, on remplace les macroblocs modifiables (macroblocs initialement présents dans le flux et/ou placés délibérément par l'encodeur) par les macroblocs codant l'information d'identification ou de 25 personnalisation en prenant soin de rajouter d'éventuels macroblocs de synchronisation. Ces derniers sont codés de sorte que les macroblocs suivant les macroblocs codant l'information d'identification ou de personnalisation possèdent le même contexte de décodage et les mêmes données de prédiction qu'avant modification. 30 Dans la pratique, le cas précédent est délicat à mettre en oeuvre car, dans un flux MPEG-4 AVC, en remplaçant un macrobloc d'une tranche, le 2951344 - 21 - contexte de décodage et les informations de prédiction de tous les autres macroblocs de cette tranche peuvent évoluer. On comprend donc que le codage des macroblocs de synchronisation peut rapidement devenir complexe. Pour cette raison, on préfère remplacer une tranche entière de 5 macroblocs modifiables par une tranche entière de macroblocs codant l'information d'identification ou de personnalisation. Le remplacement d'une tranche entière de macroblocs supprime le problème technique précité lié à la conservation des données de prédiction. Un résultat similaire est obtenu en remplaçant un ou plusieurs pixels de macroblocs I_PCM modifiables par un ou 10 plusieurs pixels codant l'information d'identification ou de personnalisation. Il est toutefois relativement rare de trouver une tranche entière de macroblocs modifiables à l'endroit et à la taille voulus pour afficher l'information d'identification dans un flux MPEG-4-AVC. Il est également rare de trouver des macroblocs I_PCM modifiables dans un flux MPEG-4 AVC et encore plus à 15 l'endroit voulu pour effectuer l'affichage de l'information d'identification ou de personnalisation. 2.4. Forçage de l'encodeur. 20 On préfère forcer l'encodeur à générer dans le flux vidéo : • une ou plusieurs tranches entières de macroblocs (pouvant même aller jusqu'à composer une image entière) non références destinés à être remplacés par une ou plusieurs tranches codant l'information d'identification ou de 25 personnalisation, • et/ou une ou plusieurs tranches entières de macroblocs (pouvant même aller jusqu'à composer une image entière) références mais dont la modification n'engendre pas de modification visible lors de l'affichage du flux vidéo sur un écran, et destinés à être remplacés par une ou plusieurs tranches codant 30 l'information d'identification ou de personnalisation, 2951344 -22- • et/ou des macroblocs I_PCM non références destinés à voir un ou plusieurs de leurs pixels remplacés par des pixels codant l'information d'identification ou de personnalisation, • et/ou des macroblocs I_PCM références dont la modification n'engendre 5 pas de modification visible lors de l'affichage du flux vidéo sur un écran, et destinés à voir un ou plusieurs de leurs pixels remplacés par des pixels codant l'information d'identification ou de personnalisation. Lorsqu'il génère le flux vidéo, l'encodeur peut également être forcé à 10 générer une ou plusieurs tranches entières de macroblocs modifiables dont la taille et la localisation sont définies en fonction de la taille et de la localisation voulues pour l'information d'identification ou de personnalisation. Par exemple, si l'information doit être positionnée sur telle image et à tel endroit, on forcera l'encodeur à générer une tranche entière de macroblocs modifiables répondant 15 à ces critères. L'encodeur générera les macroblocs I_PCM modifiables en prenant compte les mêmes contraintes, c'est-à-dire que leur nombre et leur localisation seront définis en fonction de la taille et de la localisation voulues pour l'information d'identification ou de personnalisation. 20 Pour que l'on puisse rapidement retrouver les macroblocs modifiables qui ont été générés de manière forcée par l'encodeur, ce dernier peut intégrer dans le flux vidéo, une ou plusieurs informations permettant de localiser les tranches entières de macroblocs modifiables et/ou les macroblocs I_PCM modifiables générés. Les informations de localisation peuvent par exemple être 25 contenues dans des unités NAL spécifiques dont la norme H264 ne spécifie pas la façon de les gérer. Dans une variante de réalisation, l'encodeur E transmet directement ces informations de localisation à une entité adaptée pour mettre en oeuvre l'étape b), par exemple au récepteur du flux vidéo. 30 Dans l'un et l'autre cas, ces informations de localisation sont ensuite simplement analysées par le récepteur du flux vidéo, ou par une autre entité, afin de réaliser l'étape b). On peut ainsi rapidement se placer sur ces 2951344 - 23 - macroblocs modifiables, les modifier et être assuré de ne pas modifier indirectement la suite du flux vidéo. Si l'encodeur ne fournit pas les informations de localisation, il faudra 5 analyser les en-têtes de chaque tranche, notamment le paramètre relatif au numéro du premier macrobloc de la tranche « first_mb_in_slice » de manière à connaître la localisation et la taille de chaque tranche d'une image et de choisir la ou les tranches les plus appropriées. L'analyse du type de chaque macrobloc (mb_type) permettra quant à elle de déterminer si des macroblocs I_PCM sont 10 présents et s'il est donc possible d'effectuer le processus de fingerprint. On peut également, par exemple, forcer l'encodeur à générer les macroblocs I_PCM modifiables seulement au début d'une tranche. Il suffit alors d'analyser l'en-tête puis le premier macrobloc de chaque tranche pour savoir si on peut modifier cette dernière. 15 Dans le cas où l'encodeur envoi lui même différentes informations d'identification ou de personnalisation, et dans le cas où il a été forcé à générer des zones bien définies de marquage, alors ledit encodeur pourra envoyer lesdites informations sous forme encodée. Le récepteur chargé de marquer le 20 flux n'aura plus qu'à remplacer les macroblocs originaux par les nouveaux macroblocs codant l'information d'identification ou de personnalisation, sans se soucier de l'encodage desdits nouveaux macroblocs. 25 3. Exemples de mise en oeuvre du procédé objet de l'invention. 3.1. Cas où les données du flux vidéo sont initialement paquétisées dans des paquets de transport. 30 Lorsque le flux est paquétisé, en utilisant par exemple, la paquétisation TS (pour Transport Stream en anglais), il est analysé afin de traiter uniquement les données utiles à la vidéo. Les en-têtes et les données qui ne sont pas utiles 2951344 - 24 - à la vidéo sont ignorés. La paquétisation TS utilisée pour le transport d'un flux MPEG-4 AVC est par exemple décrite par le standard Transport Stream H.222. Pour plus d'information sur cette technique, l'homme du métier pourra se reporter au document « ITU-T Recommandation H.222.0 1 ISO/IEC 13818-1 ». 5 La paquétisation qui est utilisée ci-après dans les exemples de la présente invention, peut être décrite simplement en se rapportant à la figure 2 : chaque paquet PQ1, PQ2, PQ3 possède normalement 188 octets. Il est composé d'un en-tête, respectivement ET1, ET2, ET3, d'au moins quatre octets 10 regroupant des informations sur la paquétisation, d'un nombre variable d'octets de donnée utile, respectivement DU1, DU2, DU3, ainsi que d'éventuels octets de champs d'adaptation (ou Adaptation Field en anglais), respectivement CA1, CA2, CA3. Pour la paquétisation selon le standard Transport Stream H.222, il est aisé de parcourir rapidement le flux vidéo codé en MPEG-4 AVC et de 15 sauvegarder uniquement les données utiles DU1, DU2, DU3. En pratique, ce sont les en-têtes des unités NAL qui sont lues de manière à déterminer de quel type d'unité NAL il s'agit. Les unités NAL utiles sont par exemple celles contenant des paramètres communs à toute la séquence (Sequence Parameter Set) ou celles contenant des paramètres communs à une image entière (Picture 20 Parameter Set) ou celles contenant les tranches. 3.2. Remplacement d'une tranche entière de macroblocs modifiables. 25 Après avoir identifié (étape b) et sélectionné (étape c) une tranche entière de macroblocs modifiables (« naturellement » présente dans le flux vidéo ou introduite de manière forcée par l'encodeur), on la remplace. La sélection de la tranche de macrobloc à modifier se porte généralement sur la tranche possédant le nombre de macroblocs le plus proche du nombre de 30 macroblocs codant l'information d'identification ou de personnalisation. En pratique, le code des macroblocs originaux correspondant à la partie de l'image à modifier est alors enlevé et remplacé par le code des nouveaux macroblocs. 2951344 - 25 - Les figures 3a et 3b illustrent un exemple de remplacement d'une tranche entière de macroblocs modifiables. L'image est composée de onze tranches. On a identifié une tranche entière Sx de trois macroblocs 1, 2 et 3 qui 5 sont modifiables. L'information d'identification ou de personnalisation est codée sous la forme de trois macroblocs 1', 2' et 3'. Conformément à l'invention, on remplace les macroblocs originels 1, 2 et 3 par les macroblocs 1', 2' et 3' codant l'information d'identification ou de personnalisation. Ces derniers peuvent par exemple être des macroblocs intra contenant la nouvelle image. 10 Il est possible d'utiliser ce procédé plusieurs fois dans l'image. Ceci permet d'insérer une image d'une taille quelconque dans l'image existante. Dans l'exemple des figures 3a et 3b où l'image est divisée en onze tranches, on peut utiliser le procédé pour modifier les trois tranches de trois macroblocs 15 (dans le cas où tous ces derniers sont modifiables) et afficher l'information d'identification ou de personnalisation sur une image de 3x3 macroblocs, c'est-à-dire de 48x48 pixels. Il est probable que le nombre de bits utilisés pour coder les macroblocs 20 1', 2' et 3' de l'information d'identification ou de personnalisation ne soit pas le même que le nombre de bits utilisés pour coder les macroblocs 1, 2 et 3 originels remplacés. Trois cas sont possibles : soit le nombre de bits est égal, soit le nombre de bits est inférieur, soit le nombre de bits est supérieur. 25 Dans le cas où le nombre de bits générés par les macroblocs rajoutés est égal au nombre de bits générés par les macroblocs enlevés, alors les octets modifiés remplacent les octets originaux. Dans l'exemple où les données du flux vidéo sont initialement paquétisées dans des paquets de transport ayant un nombre normatif d'octets (en pratique 188 octets normatifs pour la norme 30 H222), alors les données du nouveau flux vidéo marqué peuvent rester paquetisées dans des paquets de transport ayant le même nombre normatif d'octets, et : 2951344 - 26 - • seuls les paquets de transport comportant des octets de données utiles modifiés, sont modifiés, • et seules les données utiles de ces paquets de transport modifiés sont modifiées : pas de modifications des en-têtes ni du champ d'adaptation (ou 5 Adaptation Field en anglais). Dans le cas où le nombre de bits générés par les macroblocs rajoutés est inférieur au nombre de bits générés par les macroblocs enlevés, alors les octets modifiés remplacent les octets originaux. Dans l'exemple où les données 10 du flux vidéo sont paquétisées dans des paquets de transport ayant un nombre normatif d'octets (en pratique 188 octets normatifs pour la norme H222), alors les données du nouveau flux vidéo marqué peuvent rester paquetisées dans des paquets de transport ayant le même nombre normatif d'octets, et : • chaque paquet de transport contenant des octets de données utiles 15 modifiés, est modifié, • on rajoute à chaque paquet de transport modifié, un nombre adéquat d'octets de champs d'adaptation, de manière à obtenir un paquet de transport ayant le même nombre normatif d'octets. Chaque paquet de transport contenant des octets de données utiles 20 modifiés se voit donc modifié. En pratique, chaque paquet qui contenait avant modification des données utiles sera composé d'au moins un octet de données utiles ainsi qu'un nombre adéquat d'octets de champs d'adaptation permettant d'obtenir un paquet de transport de 188 octets normatifs. Il se peut que certains paquets n'aient pas besoin d'Adaptation Field. 25 Cette technique permet d'avoir au final le même nombre de paquets de transport possédant de la donnée utile qu'avant transformation. Ces paquets de transports obtenus remplacent alors purement et simplement les paquets de transport originaux. 30 Dans le cas où le nombre de bits générés par les macroblocs rajoutés est supérieur au nombre de bits générés par les macroblocs enlevés, alors les octets modifiés remplacent les octets originaux. Dans l'exemple où les données 2951344 - 27 - sont paquétisées dans des paquets de transport ayant un nombre normatif d'octets (en pratique 188 octets normatifs pour la norme H222), alors les données du nouveau flux vidéo marqué peuvent rester paquetisées, les paquets de transport contenant des octets de données utiles modifiés étant 5 enlevés et remplacés par de nouveaux paquets de transport ayant le même nombre normatif d'octets générés à partir desdits octets modifiés. Et si le nombre de paquets de transports générés est différent du nombre de paquets enlevés, alors tous les paquets de transports suivants seront modifiés de façon à ce qu'il n'y ait pas de discontinuité et que le nouveau flux vidéo marqué reste 10 cohérent. Il faut en effet dans certains cas modifier le paramètre compteur de continuité (ou continuity_counter en anglais) de manière à ce qu'il n'y ait pas de discontinuité ainsi que d'autres valeurs, comme le marquage temporel PTS inclus dans le flux vidéo de manière à ce que celui-ci reste cohérent. En pratique, on ne modifie pas les données utiles, mais uniquement les en-têtes et 15 les champs d'adaptation. Les deux premiers cas (nombre de bits générés par les macroblocs rajoutés est inférieur ou égal au nombre de bits générés par les macroblocs enlevés), sont, dans beaucoup de situations, plus simples à gérer que le 20 troisième cas (nombre de bits générés par les macroblocs rajoutés est supérieur au nombre de bits générés par les macroblocs enlevés). Il existe plusieurs techniques permettant de réduire le nombre de bits des macroblocs rajoutés dont : - utiliser une valeur de quantification grande, 25 - en cas de codage de macroblocs intra, utiliser un coefficient DC proche de la prédiction, ledit coefficient DC correspondant à la luminance moyenne du bloc, - utiliser des informations d'identification dont on sait qu'elles ne génèrent pas beaucoup de coefficient AC. Dans le cas où l'on voudrait écrire un 30 texte, une police particulièrement adaptée peut être utilisée, par exemple une police type « code-barre » qui est particulièrement adaptée à la compression. Des formes simples et ne générant pas beaucoup de coefficients AC peuvent 2951344 - 28 - également être utilisées : codes-barres, carrés, macroblocs de couleur unie (tout noir), etc. La figure 4 est un organigramme récapitulatif représentant différentes 5 étapes possibles du procédé objet de l'invention, dans le cas décrit précédemment. Le flux vidéo F à marquer peut être initialement paquétisé P ou non paquétisé NP. Dans le cas où le flux est paquétisé, on analyse préalablement la paquétisation afin de ne traiter que les données utiles MPEG-4 AVC (étape El). Après cette étape préalable, ou lorsque le flux n'est pas 10 paquétisé, on analyse les différentes unités NAL et on sauvegarde des données utiles (étape E2). Une ou plusieurs tranches de macroblocs modifiables sont identifiées et sélectionnées (étape E3). Le code des macroblocs originaux correspondant à la partie de l'image à modifier est enlevé et remplacé par le code des nouveaux macroblocs (étape E4). On peut alors remplacer la tranche 15 sélectionnée par la nouvelle tranche (étape E5). On obtient alors un flux non paquétisé modifié FNP'. Dans le cas où le flux était initialement paquétisé, on modifie les paquets contenant des données utiles modifiées (étape E6). Si cela est nécessaire, on ajoute des paquets et on modifie des données de paquétisation dans les paquets suivants. On obtient alors un flux paquétisé 20 modifié FP'. Il se peut que les macroblocs d'autres tranches et qui sont adajacents aux macroblocs modifiés soient impactés par un filtre appliqué à l'image entière, ledit filtre étant appelé «deblocking filter ». Si ces macroblocs ne sont 25 eux aussi pas utilisés comme références, les effets du filtre ne seront que peu visibles. Il faut simplement s'assurer que ces modifications n'auront pas de conséquences gênantes si ces macroblocs voisins venaient à être utilisés eux-mêmes pour la prédiction. Dans ce cas de fonctionnement, il est possible de forcer l'encodeur à désactiver tout simplement le filtre. La modification des 30 macroblocs n'aura alors aucun effet sur les macroblocs adjacents car pas d'application du filtre « deblocking filter ». On peut également forcer l'encodeur 2951344 - 29 - à désactiver le filtre seulement aux limites des tranches ce qui permet de bénéficier du filtre sans avoir de problème au niveau des macroblocs voisins. 5 3.3. Remplacement de macroblocs I_PCM. Dans ce cas, l'information d'identification ou de personnalisation est codée sous forme de pixels non compressés. Seuls les macroblocs I_PCM présents dans une tranche sont modifiés. Il suffit de remplacer la valeur de un 10 ou plusieurs pixels d'un ou plusieurs macroblocs I_PCM par la valeur des pixels codant l'information d'identification ou de personnalisation de manière à ce que l'on forme la nouvelle image. Il se peut que les macroblocs intra qui sont adjacents aux macroblocs 15 modifiés soient impactés par cette modification du fait de l'intra-prédiction. En effet, un macroblocs intra peut être prédit à partir de ses macroblocs voisins. Il faut alors soit s'assurer qu'il n'y ait pas de macrobloc intra utilisant, pour sa propre prédiction, les macroblocs modifiés, soit faire en sorte que les pixels situés en bordures des macroblocs I_PCM et utilisés pour l'intra-prédiction ne 20 soient pas modifiés. Si des macroblocs voisins venaient tout de même à être modifiés, il faut simplement s'assurer que les modifications ne sont pas gênantes et qu'elles n'auront pas de conséquences gênantes si ces macroblocs voisins venaient à être utilisés eux-mêmes pour la prédiction. 25 De même, les macroblocs adjacents aux macroblocs modifiés seront potentiellement impactés par un filtre appliqué à l'image entière, ledit filtre étant appelé « deblocking filter ». Si ces macroblocs ne sont eux aussi pas utilisé comme référence, les effets du filtre ne seront que peu visibles. De la même manière que précédemment, il faut simplement s'assurer que ces modifications 30 n'auront pas de conséquences gênantes si ces macroblocs voisins venaient à être utilisés eux-mêmes pour la prédiction. 2951344 - 30 - Dans ce cas de fonctionnement, il est possible de forcer l'encodeur à désactiver tout simplement le filtre. 5 3.4. Remplacement d'une image entière non référence. Dans ce cas, l'étape a) est réalisée en codant l'information d'identification ou de personnalisation sous la forme d'une image vidéo codée en MPEG-4 AVC, c'est-à-dire sous la forme d'un ensemble de macroblocs 10 arrangés en tranches et en lignes. L'étape b) est réalisée en identifiant les unités NAL contenant l'ensemble des tranches d'une image et dont les en-têtes contiennent le paramètre nal_ref_idc égal à 0. Cette étape peut également être réalisée en analysant des 15 informations de localisation éventuellement transmises par l'encodeur. Ce dernier peut avoir généré de manière forcée une image entière non utilisée comme référence et cela même si elle est indiquée comme étant référence. L'étape c) est réalisée en sélectionnant toutes les tranches de 20 macroblocs de l'image non référence identifiée. L'étape d) est ensuite réalisée en remplaçant l'ensemble des macroblocs de l'image identifiée à l'étape b) par l'ensemble des macroblocs de l'image codant l'information d'identification ou de personnalisation. 25 Il est ici également probable que le nombre de bits utilisés pour coder la nouvelle image ne soit pas le même que le nombre de bits utilisés pour l'image originale. Trois cas sont possibles : soit le nombre de bits générés par la nouvelle image est égal au nombre de bits générés par l'image enlevée, soit le nombre de bits générés est inférieur, soit le nombre de bits est supérieur. 30 Dans le cas où le nombre de bits générés par la nouvelle image est égal au nombre de bits générés par l'image enlevée, les octets modifiés remplacent 2951344 -31- les octets originaux. Dans l'exemple où les données du flux vidéo sont initialement paquetisées dans des paquets de transport ayant un nombre normatif d'octets (en pratique 188 octets normatifs pour la norme H222), alors les données du nouveau flux vidéo marqué restent paquetisées dans des 5 paquets de transport ayant le même nombre normatif d'octets, et : • seuls les paquets de transport comportant des octets de données utiles modifiés, sont modifiés, • et seules les données utiles de ces paquets de transport modifiés sont modifiées : pas de modifications des en-têtes ni du champ d'adaptation (ou 10 Adaptation Field en anglais). Dans le cas où le nombre de bits générés par la nouvelle image est inférieur au nombre de bits générés par l'image enlevée, les octets modifiés remplacent les octets originaux. Dans l'exemple où les données du flux vidéo 15 sont initialement paquetisées dans des paquets de transport ayant un nombre normatif d'octets (en pratique 188 octets normatifs pour la norme H222), alors les données du nouveau flux vidéo marqué restent paquetisées dans des paquets de transport ayant le même nombre normatif d'octets, et : • chaque paquet de transport contenant des octets de données utiles 20 modifiés, est modifié, • on rajoute à chaque paquet de transport modifié, un nombre adéquat d'octets de champs d'adaptation, de manière à obtenir un paquet de transport ayant le nombre normatif d'octets. Il se peut toutefois que certains paquets n'aient pas besoin de champs d'adaptation. 25 Cette technique permet d'avoir au final le même nombre de paquets de transport possédant de la donnée utile qu'avant transformation. Ces paquets de transports obtenus remplacent alors purement et simplement les paquets de transport originaux. 30 Dans le cas où le nombre de bits générés par la nouvelle image est supérieur au nombre de bits générés par l'image enlevée, les octets modifiés remplacent les octets originaux. Dans l'exemple où les données du flux vidéo 2951344 - 32 - sont initialement paquetisées dans des paquets de transport ayant un nombre normatif d'octets (en pratique 188 octets normatifs pour la norme H222), alors les données du nouveau flux vidéo marqué restent paquetisées, les paquets de transport contenant des octets de données utiles modifiés étant enlevés et 5 remplacés par de nouveaux paquets de transport ayant le même nombre normatif d'octets générés à partir des octets modifiés. En tout état de cause, si le nombre de paquets de transports générés est différent du nombre de paquets enlevés, alors on modifie tous les paquets de transports suivants de façon à ce qu'il n'y ait pas de discontinuité et que le 10 nouveau flux vidéo marqué reste cohérent. Il faut en effet dans certains cas modifier le paramètre « continuity_counter » de manière à ce qu'il n'y ait pas de discontinuités ainsi que d'autres valeurs comme le PTS inclus dans le flux vidéo de manière à ce que celui-ci reste cohérent. En pratique, on ne modifie pas les données utiles, mais uniquement les en-têtes et les champs d'adaptation. 15 La figure 5 est un organigramme récapitulatif représentant différentes étapes possibles du procédé objet de l'invention, dans le cas où une image entière non référence est modifiée. Le flux vidéo F à marquer peut être initialement paquétisé P ou non paquétisé NP. Dans le cas où le flux est 20 paquétisé, on analyse préalablement la paquétisation afin de ne traiter que les données utiles MPEG-4 AVC (étape E10). Après cette étape préalable, ou lorsque le flux n'est pas paquétisé, on recherche une image non référence (étape E20). On remplace alors toute l'image non référence par la nouvelle image (étape E30). On obtient alors un flux non paquétisé modifié FNP'. Dans 25 le cas où le flux était initialement paquétisé, on modifie les paquets contenant des données utiles modifiées (étape E40). Si cela est nécessaire, on ajoute des paquets et on modifie des données de paquétisation dans les paquets suivants. On obtient alors un flux paquétisé modifié FP'. 30 4. Autres aspects de l'invention et diverses mises en oeuvre du procédé objet de l'invention. 2951344 - 33 - Il est possible d'envisager un programme comportant des instructions exécutables par un processeur agencé dans une installation apte à recevoir un flux vidéo généré par un encodeur et composé d'une succession d'images 5 vidéo codées selon la norme MPEG-4 AVC, lesdites instructions permettent de mettre en oeuvre le procédé conforme à l'invention pour marquer ledit flux vidéo. Plus particulièrement, on peut prévoir une carte d'extension, par exemple 10 du type carte PCMCIA, configurée pour être insérée dans le port d'interface commune d'un récepteur de télévision numérique, ledit récepteur étant configuré pour recevoir un flux vidéo composé d'une succession d'images vidéo codées selon la norme MPEG-4 AVC. Cette carte comportera avantageusement : 15 - une zone-mémoire dans laquelle est stocké un programme comportant des instructions permettant de mettre en oeuvre le procédé conforme à l'invention, - un processeur configuré pour exécuter les instructions dudit programme pour marquer ledit flux vidéo. 20 La figure 6 schématise une installation comportant notamment : - un encodeur E configuré pour générer un flux vidéo F composé d'une succession d'images vidéo codées en MPEG-4 AVC, - un moyen 10 pour recevoir le flux vidéo, 25 - un décodeur 15 configuré pour décoder ledit flux vidéo, - une zone-mémoire 13 dans laquelle est stocké un programme comportant des instructions permettant de mettre en oeuvre le procédé conforme à l'invention, - un processeur 14 configuré pour exécuter les instructions dudit 30 programme et marquer ledit flux vidéo avant décodage. 2951344 - 34 - En pratique, le flux F généré par l'encodeur E transite vers un récepteur de télévision R équipé d'une antenne, et/ou d'une parabole et/ou d'un câble, ou tout autre moyen 10 permettant de recevoir un signal de télévision numérique. Le signal reçu est alors dirigé vers un syntoniseur 11 (ou tuner en anglais) 5 permettant de sélectionner dans ledit signal, un flux vidéo spécifique modulé et codé selon la norme MPEG-4 AVC. A la sortie du syntoniseur 11, le flux vidéo sélectionné est démodulé via un démodulateur 12. Conformément à l'invention, une carte d'extension C est destinée à être insérée dans le port d'interface commune P du récepteur R. Cette carte C comporte une zone-mémoire 13 10 dans laquelle est stocké le programme permettant de mettre en oeuvre le procédé objet de l'invention et un processeur 14 configuré pour exécuter les instructions dudit programme pour marquer le flux vidéo F avant décodage. Le flux démodulé transite donc alors par la carte C avant d'être décodé par le décodeur 15 pour être joué sur l'écran du récepteur R. La particularité de 15 l'invention est que la carte C est configurée pour marquer le flux vidéo F avant décodage. Il est ainsi possible de marquer en temps réel le flux avant décodage, le marquage étant réalisé au même niveau que le contrôle d'accès dans un module indépendant du module de décodage. 20 Le processeur 14 de la carte d'extension C peut être activé à distance par un code de commande généré par l'encodeur E et intégré dans le flux vidéo F lors de l'émission dudit flux vers le récepteur R. En pratique, un opérateur, lors de l'émission du signal de télévision numérique, pourra intégrer dans ledit signal un code de commande qui activera ultérieurement le processeur 14 25 lorsque le flux vidéo sélectionné sera reçu par la carte C. L'encodeur E peut comporter un moyen pour générer conjointement avec le flux vidéo F, différentes informations d'identification ou de personnalisation qui sont déjà encodées. Dans ce cas, le programme stocké dans la zone- 30 mémoire 13 comporte des instructions permettant de choisir une information spécifique parmi toutes celles qui sont envoyées par l'encodeur E. 2951344 - 35 - Dans une variante de réalisation, les différentes informations d'identification ou de personnalisation générées par l'encodeur E ne sont pas pré-encodées. Dans ce cas, le programme stocké dans la zone-mémoire 13 comporte des instructions permettant non seulement de choisir une information 5 parmi toutes celles qui sont envoyées par l'encodeur E, mais encore permettant de l'encoder. Revendications1. Procédé pour marquer un flux vidéo (F) généré par un encodeur (E), ledit flux étant composé d'une succession d'images vidéo codées en MPEG-4 AVC, lesdites images codées étant constituées d'une ou plusieurs tranches de macroblocs, ledit procédé étant caractérisé en ce qu'il consiste à: a) coder une information d'identification ou de personnalisation sous la forme de macroblocs, b) identifier à la volée, dans le flux vidéo (F), au moins une image comportant un ou plusieurs des macroblocs modifiables suivants : • macrobloc ne servant pas de référence pour le décodage des images suivantes dans l'ordre de décodage dudit flux vidéo, • et/ou macrobloc servant de référence mais dont la modification n'engendre pas de modification visible lors de l'affichage du flux vidéo (F) sur un écran, c) sélectionner dans l'image identifiée à l'étape b), un ou plusieurs des macroblocs modifiables, d) remplacer les macroblocs modifiables sélectionnés à l'étape c) par les macroblocs codant l'information d'identification ou de personnalisation. 2. Procédé selon la revendication 1, dans lequel l'étape a) est réalisée en codant l'information d'identification ou de personnalisation sous la forme d'un ou plusieurs macroblocs destinés à être placés à un endroit précis de l'image en tenant compte du contexte de décodage et des informations de prédictions issues des macroblocs précédents. 3. Procédé selon la revendication 1, dans lequel l'étape a) est réalisée en codant l'information d'identification ou de personnalisation sous la forme d'une ou plusieurs tranches. 2951344 - 37 - 4. Procédé selon la revendication 1, dans lequel l'étape a) est réalisée en codant l'information d'identification ou de personnalisation sous la forme d'un ou plusieurs pixels, ces pixels permettant de caractériser en 5 partie ou en totalité un ou plusieurs macroblocs I_PCM. 5. Procédé selon la revendication 1, dans lequel une ou plusieurs informations d'identification ou de personnalisation sont envoyées par l'encodeur (E) ou par une autre source conjointement avec le flux vidéo (F), 10 et dans lequel l'étape a) est réalisée en sélectionnant et en codant une desdites informations. 6. Procédé selon la revendication 5, dans lequel l'information d'identification ou de personnalisation choisie est codée sous la forme d'un 15 ou plusieurs macroblocs destinés à être placés à un endroit précis de l'image en tenant compte du contexte de décodage et des informations de prédictions issues des macroblocs précédents. 7. Procédé selon la revendication 5, dans lequel l'information 20 d'identification ou de personnalisation choisie est codée sous la forme d'une ou plusieurs tranches. 8. Procédé selon la revendication 5, dans lequel l'information d'identification ou de personnalisation choisie est codée sous la forme d'un 25 ou plusieurs pixels, ces pixels permettant de caractériser en partie ou en totalité un ou plusieurs macroblocs I_PCM. 9. Procédé selon la revendication 1, dans lequel une ou plusieurs informations d'identification ou de personnalisation sont envoyées par 30 l'encodeur (E) ou par une autre source conjointement avec le flux vidéo (F), lesdites informations étant déjà encodée et dans lequel l'étape a) est réalisée en sélectionnant une desdites informations. 2951344 - 38 - 10. Procédé selon la revendication 9, dans lequel lors de son envoi, l'information d'identification ou de personnalisation choisie est déjà codée sous la forme d'un ou plusieurs macroblocs destinés à être placés à un 5 endroit précis de l'image en tenant compte du contexte de décodage et des informations de prédictions issues des macroblocs précédents. 11. Procédé selon la revendication 9, dans lequel lors de son envoi, l'information d'identification ou de personnalisation choisie est déjà codée 10 sous la forme d'une ou plusieurs tranches. 12. Procédé selon la revendication 9, dans lequel lors de son envoi, l'information d'identification ou de personnalisation choisie est déjà codée sous la forme d'un ou plusieurs pixels, ces pixels permettant de caractériser 15 en partie ou en totalité un ou plusieurs macroblocs I_PCM. 13. Procédé selon la revendication 1, dans lequel l'étape b) est réalisée en identifiant les images non références qui, dans l'ordre de décodage, sont constituées d'une ou plusieurs unités NAL contenant des 20 tranches et dont les en-têtes ont le paramètre nal_ref_idc égal à 0. 14. Procédé selon la revendication 1, dans lequel l'étape b) est réalisée en identifiant les images références qui comportent un ou plusieurs macroblocs dont les pixels et/ou les paramètres ne sont pas utilisés comme 25 référence par les macroblocs des images suivantes. 15. Procédé selon la revendication 1, dans lequel l'étape b) est réalisée en identifiant les images références qui comportent un ou plusieurs macroblocs 1_PCM dont au moins une partie des pixels n'est pas utilisée 30 comme référence par les macroblocs des images suivantes. 2951344 - 39 - 16. Procédé selon la revendication 1, dans lequel l'étape b) est réalisée en identifiant les images qui comportent un ou plusieurs macroblocs non références introduits de manière forcée dans le flux vidéo (F). 5 17. Procédé selon la revendication 1, dans lequel l'étape b) est réalisée en identifiant les images références qui comportent un ou plusieurs macroblocs références mais dont la modification n'engendre pas de modification visible lors de l'affichage du flux vidéo (F) sur un écran. 10 18. Procédé selon la revendication 1, dans lequel l'étape b) est réalisée en identifiant les images références qui comportent un ou plusieurs macroblocs I_PCM références mais dont au moins une partie des pixels est modifiable sans que cela n'engendre de modification visible lors de l'affichage du flux vidéo (F) sur un écran. 15 19. Procédé selon la revendication 1, dans lequel l'étape b) est réalisée en identifiant les images qui comportent un ou plusieurs macroblocs références mais dont la modification n'engendre pas de modification visible lors de l'affichage du flux vidéo (F) sur un écran, lesdits macroblocs étant 20 introduits de manière forcée dans ledit flux. 20. Procédé selon l'une des revendications précédentes, dans lequel durant l'étape d), un ou plusieurs macroblocs de synchronisation sont rajoutés juste après les macroblocs codant l'information d'identification ou 25 de personnalisation, lesdits macroblocs de synchronisation étant codés de sorte que les macroblocs suivant lesdits macroblocs codant l'information d'identification ou de personnalisation possèdent le même contexte de décodage et les mêmes données de prédiction qu'avant modification. 30 21. Procédé selon l'une des revendications précédente, dans lequel l'étape d) est réalisée en remplaçant une tranche entière de macroblocs 2951344 - 40 - modifiables préalablement identifiés à l'étape c), par une tranche entière de macroblocs codant l'information d'identification ou de personnalisation. 22. Procédé selon l'une des revendications 1 à 20, dans lequel l'étape 5 d) est réalisée en remplaçant un ou plusieurs pixels d'un ou plusieurs macroblocs I_PCM modifiables préalablement identifiés à l'étape c), par des pixels codant l'information d'identification ou de personnalisation. 23. Procédé selon l'une des revendications précédentes, dans lequel 10 on force l'encodeur (E) à générer dans le flux vidéo (F), un ou plusieurs des macroblocs modifiables suivants : • une ou plusieurs tranches entières de macroblocs non références destinés à être remplacés par une ou plusieurs tranches codant l'information d'identification ou de personnalisation, 15 • et/ou une ou plusieurs tranches entières de macroblocs références mais dont la modification n'engendre pas de modification visible lors de l'affichage du flux vidéo (F) sur un écran, et destinés à être remplacés par une ou plusieurs tranches codant l'information d'identification ou de personnalisation, 20 • et/ou des macroblocs I_PCM non références destinés à voir un ou plusieurs de leurs pixels remplacés par des pixels codant l'information d'identification ou de personnalisation, • et/ou des macroblocs I_PCM références mais dont la modification n'engendre pas de modification visible lors de l'affichage du flux vidéo 25 (F) sur un écran, et destinés à voir un ou plusieurs de leurs pixels remplacés par des pixels codant l'information d'identification ou de personnalisation. 24. Procédé selon la revendication 23, dans lequel l'encodeur (E) 30 génère une ou plusieurs tranches entières de macroblocs modifiables dont la taille et la localisation sont définies en fonction de la taille et de la localisation voulues pour l'information d'identification ou de personnalisation. 2951344 - 41 - 25. Procédé selon l'une des revendications 23 ou 24, dans lequel l'encodeur (E) génère un ou plusieurs macroblocs I_PCM modifiables dont le nombre et la localisation sont définis en fonction de la taille et de la 5 localisation voulues pour l'information d'identification ou de personnalisation. 26. Procédé selon l'une des revendications 23 à 25, dans lequel l'encodeur (E) intègre dans le flux vidéo (F), une information permettant de localiser les tranches entières de macroblocs modifiables et/ou les 10 macroblocs 1_PCM modifiables générés, ladite information de localisation étant analysée pour réaliser l'étape b). 27. Procédé selon l'une des revendications 23 à 25, dans lequel l'encodeur (E) transmet à une entité adaptée pour mettre en oeuvre l'étape 15 b), une ou plusieurs informations permettant de localiser les tranches entières de macroblocs modifiables et/ou les macroblocs I_PCM modifiables générés, lesdites informations de localisation étant analysées pour réaliser l'étape b). 20 28. Programme comportant des instructions exécutables par un processeur agencé dans une installation apte à recevoir un flux vidéo (F) généré par un encodeur (E) et composé d'une succession d'images vidéo codées en MPEG-4 AVC, caractérisé en ce que lesdites instructions permettent de mettre en oeuvre le procédé conforme à l'une des 25 revendications 1 à 27 pour marquer ledit flux vidéo. 29. Carte d'extension configurée pour être insérée dans le port d'interface commune d'un récepteur (R) de télévision numérique, ledit récepteur étant configuré pour recevoir un flux vidéo (F) généré par un 30 encodeur (E) et composé d'une succession d'images vidéo codées en MPEG-4 AVC, caractérisée en ce qu'elle comporte : 2951344 - 42 - - une zone-mémoire (13) dans laquelle est stocké un programme comportant des instructions permettant de mettre en oeuvre le procédé conforme à l'une des revendications 1 à 27, - un processeur (14) configuré pour exécuter les instructions dudit 5 programme pour marquer ledit flux vidéo. 30. Installation caractérisée en ce qu'elle comporte : - un encodeur (E) configuré pour générer un flux vidéo (F) composé d'une succession d'images vidéo codées en MPEG-4 AVC, 10 - un moyen (10) pour recevoir le flux vidéo (F), - un décodeur (15) configuré pour décoder ledit flux vidéo, - une zone-mémoire (13) dans laquelle est stocké un programme comportant des instructions permettant de mettre en oeuvre le procédé conforme à l'une des revendications 1 à 27, 15 - un processeur (14) configuré pour exécuter les instructions dudit programme et marquer ledit flux vidéo avant décodage. 31. Installation selon la revendication 30, dans laquelle l'encodeur (E) comporte un moyen pour générer dans le flux vidéo (F), une ou plusieurs 20 tranches entières de macroblocs modifiables et/ou des macroblocs I PCM modifiables destinés à être remplacés par les macroblocs codant l'information d'identification ou de personnalisation. 32. Installation selon l'une des revendications 30 ou 31, dans laquelle 25 l'encodeur (E) comporte un moyen pour générer conjointement avec le flux vidéo (F), différentes informations d'identification ou de personnalisation déjà encodées, le programme comportant des instructions permettant de choisir une desdites informations. 30 33. Installation selon l'une des revendications 30 ou 31, dans laquelle l'encodeur (E) comporte un moyen pour générer conjointement avec le flux vidéo (F), différentes informations d'identification ou de personnalisation, le 2951344 - 43 - programme comportant des instructions permettant de choisir une desdites informations et de l'encoder. 34. Récepteur de télévision numérique équipé : 5 - d'un moyen (10) pour recevoir un flux vidéo (F) généré par un encodeur et composé d'une succession d'images vidéo codées en MPEG-4 AVC, - d'un décodeur (15) configuré pour décoder le flux vidéo, - d'un port d'interface commune (P) configuré pour recevoir une carte 10 d'extension (C) par laquelle transite ledit flux vidéo avant décodage, caractérisée en ce que ladite carte comporte une zone-mémoire (13) dans laquelle est stocké un programme comportant des instructions permettant de mettre en oeuvre le procédé conforme à l'une des revendications 1 à 27 et un processeur (14) configuré pour exécuter lesdites instructions pour marquer ledit 15 flux vidéo avant décodage. 35. Récepteur selon la revendication 34, dans lequel le processeur est activé à distance par un code de commande généré par l'encodeur (E) et intégré dans le flux vidéo (F) lors de l'émission dudit flux vers ledit 20 récepteur.