PROCEDE ET DISPOSITIF DE STOCKAGE D'UNE PARTIE D'UN FLUX VIDEO.
La présente invention concerne un procédé et un dispositif de stockage d'une partie d'un flux vidéo compressé ainsi qu'un produit programme d'ordinateur pour mettre en oeuvre le procédé.
Actuellement, parmi les modes de compression de flux vidéo utilisés, le codage de compression le plus largement utilisé est celui définit par le groupe de travail MPEG plus particulièrement dans les normes ISOIIEC 13818-MPEG-2 et ISOIIEC 14496-MPEG-4. Ces deux normes sont très similaires dans les principes de compression utilisés : des images sont stockées compressées à intervalles réguliers et, pour les images intermédiaires, seules les différences sont stockées. Plus précisément, la compression MPEG utilise une estimation de mouvement. Le codage MPEG décompose chaque image en bloc appelé macro bloc, et examine pour les images voisines s'il existe des blocs similaires. Si une correspondance est trouvée, plutôt que de stocker le bloc entier, le système stocke un vecteur beaucoup plus petit décrivant comment le bloc a bougé (ou n'a pas bougé) entre les images. Les vecteurs sont encodés de telle sorte qu'ils peuvent n'utiliser qu'un seul bit dans certains cas ce qui fait que les arrières plans et autres éléments qui ne bougent pas au fil du temps sont compressés très efficacement. De même, des grands groupes de blocs qui bougent ensemble tel qu'un grand objet ou un défilement de l'image entière, sont aussi compressés efficacement. MPEG utilise trois types de méthodes de stockage d'images. Les images intra, ou images I, dans lequel l'image entière est compressée et stockée avec une quantification DCT (Discrete Cosine Transform û Transformation en cosinus discrète). Ceci crée une image de référence à partir desquelles les images suivantes sont construites. Ces images I permettent également un accès aléatoire dans le flux vidéo, et en pratique sont générées environ toutes les demi-secondes. Les images prédites, ou images P, contiennent des vecteurs de mouvements décrivant la différence à partir de l'image I ou de l'image P précédente la plus proche. Les images du troisième type sont les images bidirectionnelles ou images B. Le système regarde en avant ou en arrière pour trouver des blocs correspondants. De cette façon, si quelque chose de nouveau apparaît dans une image B il peut être mis en correspondance avec un bloc de la prochaine image I ou P. On comprend donc que, statistiquement, les images P et B sont beaucoup plus petites que les images I. Comme indiqué précédemment un flux vidéo ne peut démarrer que sur une image I servant de première image de référence à partir de laquelle les images P ou B suivantes vont être construites. Comme indiqué précédemment ces images I servent également à l'accès aléatoire au flux vidéo. Cependant, on comprend que, lorsqu'on souhaite n'enregistrer, ou stocker, qu'une partie du flux vidéo, avec un début aléatoire, donc ne correspondant pas obligatoirement avec une image I, il se pose un problème. Pour résoudre ce problème, les systèmes d'enregistrement actuels décodent au fil de l'eau le flux vidéo de telle sorte que, lorsque l'utilisateur du système décide du début d'un enregistrement, l'image décompressée correspondant à ce début d'enregistrement est codé à nouveau sous forme d'une image I. Puis les images suivantes sont recodées à partir de cette image I ou, si le codage le permet, les images codées B ou P suivantes sont gardées mais comme images différentielles de l'image I reconstruite. Pour les systèmes les plus performants, et afin de ne pas perdre en qualité par un décodage suivi d'un recodage, le système détecte en plus la première image I du flux vidéo entrant suivant le début de l'enregistrement et, à partir de cette image, stocke sans transformation le flux vidéo entrant. Cette solution a l'inconvénient d'imposer un décodage permanent du flux vidéo entrant en attendant l'ordre de début d'enregistrement. Cet inconvénient est sans importance quand l'appareil est connecté avec un dispositif de visualisation pour que l'utilisateur puisse visualiser en temps réel le flux vidéo entrant puisqu'alors le décodage doit être réalisé pour la visualisation. Par contre dans les systèmes ne nécessitant pas ce décodage pour la visualisation celui-ci devient extrêmement pénalisant en termes de ressource machine. Aussi serait-il particulièrement avantageux d'avoir un procédé et un dispositif de stockage d'une partie de flux vidéo permettant une minimisation des ressources en calcul.
Aussi, selon un aspect de l'invention, un procédé de stockage d'une partie d'un flux vidéo compressé, ledit flux vidéo compressé comportant une succession d'images clés compressées entre lesquelles sont intercalées des images intermédiaires compressées comportant au moins le codage de différences entre l'image intermédiaire non compressée et l'image clé immédiatement précédente, comporte : • l'acquisition en temps réel du flux vidéo compressé, • le stockage temporaire, sans décompression, du flux vidéo acquis, ledit stockage temporaire comportant au moins la dernière image clé reçue et les images intermédiaires suivantes, • sur réception d'un évènement de début de stockage permanent à un instant donné, o reconstruction d'une image-clé correspondant audit instant donné à partir de ladite dernière image clé reçue et des images intermédiaires suivantes, o stockage de la partie de flux vidéo commençant par l'image clé reconstruite. Selon des modes de réalisation particulières : • le stockage temporaire du flux vidéo dépasse une taille de stockage prédéterminée, une image clé est reconstruite à partir de ladite dernière image clé reçue et des images intermédiaires suivantes, puis la dernière image clé reçue est remplacée dans le stockage temporaire par l'image clé reconstruite. • le flux vidéo compressé est un flux vidéo codé suivant une des normes ISO/IEC 13818-MPEG-2, ISO/IEC 14496 û MPEG-4 et H264. Selon un deuxième aspect de l'invention, un produit programme d'ordinateur comporte des instructions de code de programme enregistrées sur un support lisible par un ordinateur, pour mettre en oeuvre les étapes du procédé lorsque ledit programme fonctionne sur un ordinateur. Selon un troisième aspect de l'invention, un dispositif de stockage d'une partie d'un flux vidéo compressé, ledit flux vidéo compressé comportant une succession d'images clés compressées entre lesquelles sont intercalées des images intermédiaires compressées comportant au moins le codage de différences entre l'image intermédiaire non compressée et l'image clé immédiatement précédente, comporte : • des moyens d'acquisition en temps réel du flux vidéo compressé, • des moyens de réception d'un évènement de début de stockage permanent à un instant donné, connectés à des moyens de déclenchement : • des moyens de stockage de la partie de flux vidéo commençant à partir de l'instant donné, caractérisé en ce qu'il comporte en outre • des moyens de stockage temporaire, sans décompression, du flux vidéo acquis, lesdits moyens de stockage temporaire comportant au moins la dernière image clé reçue et les images intermédiaires suivantes, et • des moyens de reconstruction d'une image-clé correspondant audit instant donné à partir de ladite dernière image clé reçue et des images intermédiaires suivantes de telle sorte que la partie de flux vidéo stockée commence par ladite image clé reconstruite. L'invention sera mieux comprise à la lecture de la description qui suit, faite uniquement à titre d'exemple, et en référence aux figures en annexe dans lesquelles : - la figure 1 est une vue schématique d'un exemple de procédé de stockage de flux vidéo selon l'art antérieur ; - la figure 2 est une vue schématique d'un exemple de procédé de stockage selon un mode de réalisation de l'invention ; - la figure 3 est un ordinogramme d'un procédé de stockage selon un mode de réalisation de l'invention ; et - la figure 4 est une vue schématique d'un dispositif de stockage selon un mode de réalisation de l'invention. La figure 1 représente un flux vidéo au format MPEG comportant deux images I référencées 1 et 2 selon un axe des temps AA. L'image 11 est donc antérieure à l'image 12. Entre ces images I sont intercalées des images P 11, 12, 13, 21, 22, 23 et 24.
Le flux décodé correspondant est symbolisé sur l'axe BB, sous forme d'un flux d'images décodées F 31 à 39. Ainsi, classiquement F 31 est obtenue en décompressant l'image 11 et l'image F 35 en décompressant l'image 12. L'image F 32 est obtenue par modification de l'image F 31 en fonction des vecteurs de mouvement contenus dans l'image P 11, modification symbolisée par le signe + sur la figure 1. L'image F 33 est obtenue par modification de l'image F 32 en fonction des vecteurs de mouvements contenus dans l'image P 12 et ainsi de suite pour les images décodées correspondant aux images P du flux vidéo encodé. La figure 2 représente sur sa partie supérieure le même flux vidéo encodé que celui de la figure 1 avec les mêmes références. A un instant quelconque, une demande d'enregistrement D est déclenchée par un utilisateur. A titre illustratif, la demande d'enregistrement D intervient temporellement entre les images codées P 23 et 24. La partie inférieure de la figure 2 représente le contenu d'une zone de stockage temporaire S. Les images sont stockées au fil de l'eau et le stockage S remis à zéro avec chaque arrivée d'images I.
Ainsi, le stockage contient l'image 11, puis les images 11 et P 11, puis les images Il;P11 etP12puis Il,Pl1,P12etP13.Quand l'image I2 arrive, le stockage S est vidé et seule l'image 12 reste stockée et ainsi de suite. Lors de la réception de la demande d'enregistrement D, le stockage S contient donc l'image 12 et les images P 21, P 22 et P 23. Celles-ci sont combinées pour obtenir l'image décodée F38 comme expliquée ci-dessus, celle-ci étant recodée en image 140. L'image P 24 qui contient les différences entre les images F 38 et F 39 contient donc également les vecteurs de mouvement permettant de décoder l'image F 39 à partir de l'image 140. Puis la suite du flux vidéo est enregistré sans opération de transcodage. Ainsi, le procédé de stockage consiste, figure 3, à - acquérir, étape 50, en temps réel le flux vidéo compressé et à - le stocker, étape 52, temporairement, sans décompression de telle sorte que le stockage comporte au moins la dernière image I, ou image clé, acquise et les images intermédiaires, de type P et B, suivantes.
Ainsi, quand un événement de début d'enregistrement, autrement dit, de stockage permanent, est reçu, étape 54, une image clé est reconstruite, étape 56, à partir des dernières images clés et images intermédiaires reçues pour obtenir une image clé correspondant à l'instant de début d'enregistrement, puis le flux vidéo est stocké 58 sans modification, c'est-à- dire sans opération de décodage-codage. Pour réaliser ce procédé, il est possible de réaliser une machine dédiée comportant, figure 4 : - des moyens d'acquisition 60 en temps réel du flux vidéo ; - des moyens de réception 62 de réception d'un événement de début de stockage permanent à un instant donné, connectés à des moyens de déclenchement 64 ; et - des moyens de stockage 66 de la partie de flux vidéo commençant à partir de l'instant donné. Cette machine dédiée comporte également : - des moyens de stockage temporaire 68, sans décompression, du flux vidéo acquis adaptés pour stocker au moins la dernière image clé reçue et les images intermédiaires suivantes ; et - des moyens de reconstruction 70 d'une image clé correspondant à l'instant de début de stockage à partir des images stockées dans les moyens de stockage temporaire 68, de sorte que la partie de flux vidéo stockée dans les moyens de stockage 66 commence par cette image clé. Cette machine dédiée comporte un mélange de matériel et de logiciel. Ainsi, par exemple, les moyens de stockage temporaire 68 sont composés de mémoires vives de type RAM, voire de mémoire à accès en file de type FIFO afin de permettre un accès rapide aux données stockées et les moyens de stockage 66 sont composés de disques durs, bandes magnétiques ou disques optiques offrant de grande capacité de stockage permanent.
Les moyens de reconstruction sont réalisables grâce à une combinaison d'un microprocesseur et d'un logiciel. Cependant les contraintes de rapidité peuvent également inciter l'homme du métier à utiliser un processeur de traitement de signal programmé par logiciel ou un circuit logique dans lequel les fonctionnalités seront implémentées sous forme d'un réseau de portes logiques. De façon générale, le logiciel se présente sous forme d'un produit programme d'ordinateur comportant des instructions de code programme enregistrées sur un support lisible par un ordinateur, pour mettre en oeuvre les étapes du procédé de stockage décrit. Une variante d'implémentation de ce procédé consiste, dans le cadre d'un compromis entre la taille du stockage temporaire et les moyens de calcul utilisés, à reconstruire une image clé à partir des images contenues dans le stockage temporaire dès que le stockage temporaire des images dépassent une taille de stockage prédéterminée, puis à ne garder que cette image clé reconstruite dans le stockage temporaire ainsi que les images intermédiaires suivantes. On comprend que cette opération permet de diminuer la taille du stockage temporaire au détriment d'une opération de reconstruction supplémentaire.
L'invention a été illustrée et décrite en détail dans les dessins et la description précédente. Celle-ci doit être considérée comme illustrative et donnée à titre d'exemple et non comme limitant l'invention a cette seule description. De nombreuses variantes de réalisation sont possibles. Par exemple, d'autres normes telle la norme H264 est adaptée pour utiliser la méthode décrite. De même, après la reconstruction de l'image I correspondant au début d'enregistrement, le codage des images différentielles immédiatement suivantes peut nécessiter de les recoder pour qu'elles comportent les différences avec l'image I reconstruite.
Dans les revendications, le mot comprenant n'exclue pas d'autres éléments et l'article indéfini un/une n'exclue pas une pluralité.