FR 2813742 A1 20020308 FR 0011308 A 20000905 Méthode de conversion de flux binaires. DESCRIPTION La présente invention concerne une méthode de conversion d'un flux binaire d'entrée de données codées selon un premier format d'une technique de codage par blocs en un flux binaire de sortie de données codées selon un second format de la technique de codage. Cette méthode de conversion peut s'appliquer, par exemple, à des flux binaires de données codées selon la technique de codage MPEG (abréviation du mot anglais "Moving Pictures Expert Group"), pour convertir un flux binaire de données codées selon un premier format de la norme MPEG en un flux binaire de données codées selon un second format de ladite norme. II existe à ce jour plusieurs formats MPEG à avoir été normalisés. Il s'agit des normes: - MPEG-1 (référencée sous le numéro ISO/CEI 11172) qui vise les applications de stockage numérique des données audiovisuelles, - MPEG-2 (référencée sous le numéro ISO/CEI 13818) destinée plus particulièrement à la diffusion des programmes de télévision, et - MPEG-4 (référencée sous le numéro ISO/CEI 14496) consacrée aux applications interactives gérant des données multimédia. Bien que la finalité de ces normes soit différente, elles reposent toutes sur une technique de codage par blocs utilisant les redondances temporelles et spatiales existant à l'intérieur d'une séquence d'images. Afin de supprimer les redondances spatiales, une transformation en cosinus discrète DCT est appliquée sur des blocs de 8 lignes de 8 échantillons du signal vidéo. En ce qui concerne les redondances temporelles, trois types d'images utilisant des méthodes de codage différentes sont définies dans les normes MPEG - les images I à codage intra sont codées au moyen d'informations ne provenant que d'elle-mêmes; elles ont pour objet de faciliter l'accès aléatoire à la séquence; - les images P à codage prédictif sont codées par prédiction à compensation de mouvement à partir d'une image de référence I ou P antérieure dans l'ordre d'affichage à l'écran; - les images B à codage prédictif bidirectionnel sont codées par prédiction à compensation de mouvement à partir d'une image de référence I ou P antérieure et/ou postérieure. Les normes MPEG comprennent un processus de compensation de mouvement basé sur la recherche du déplacement de l'image à coder jusqu'à minimiser l'erreur avec une image précédente. Si l'unité de codage permettant de réduire les redondances spatiales est le bloc, la compensation de mouvement utilise des macroblocs, un macrobloc étant un ensemble de 4 blocs de luminance et de 2, 4 ou 8 blocs de chrominance selon respectivement les formats de chrominance 4:2:0, 4:2:2, ou 4:4:4, les blocs étant issus d'une section de 16x16 éléments de la composante de luminance de l'image. Un processus d'estimation de mouvement, décrit à la Fig. 1, cherche d'abord à faire côincider un macrobloc (12) de l'image courante (11) avec un macrobloc de l'image précédente. Une fois trouvée la position dans l'image précédente (13) du macrobloc le plus vraisemblable (14), un vecteur de déplacement (15) associé au macrobloc de l'image courante est déterminé. Le macrobloc prédit, correspondant à la différence entre le macrobloc courant et le macrobloc le plus vraisemblable, et le vecteur de mouvement qui lui est associé sont ensuite codés. Différents modes de prédiction sont possibles, le type d'image définissant le mode de prédiction pouvant être utilisé pour coder chaque macrobloc. Par exemple, un macrobloc peut être prédit de façon anticipée (en Anglais "forward predicted") à partir d'un macrobloc de référence appartenant à une image passée; il peut également être prédit de façon différée (en Anglais "backward predicted") à partir d'un macrobloc de référence appartenant à une image future dans l'ordre d'affichage. Une autre option est de ne pas faire de prédiction de sorte que les blocs du macrobloc de l'image courante sont directement codés. Ces macroblocs sont appelés macroblocs intra. La présente invention a pour but de proposer une méthode de conversion d'un flux binaire d'entrée de données codées selon un premier format d'une technique de codage par blocs en un flux binaire de sortie de données qui soit compatible avec un second format de ladite technique. L'invention prend en compte les considérations suivantes. Le second format de la technique de codage par blocs peut contenir des paramètres de codage différents de ceux existant dans le premier format de ladite technique. Dans le cas du format MPEG-4, il diffère, par exemple, des formats MPEG-1 et 2 en ce qu'il n'autorise pas les macroblocs intra dans une image B à codage prédictif bidirectionnel. Si aucune modification n'est faite, un flux binaire de données codées selon les normes MPEG-1 ou MPEG-2 contenant de tels macroblocs ne sera pas un flux binaire compatible avec la norme MPEG-4 et ne pourra donc être décodé par un décodeur MPEG-4. Pour pallier cet inconvénient, la méthode de conversion selon la présente invention est remarquable en ce qu'elle comprend une étape de remplacement de macroblocs infra d'une image B par des macroblocs prédits, Ainsi, la méthode assure une conversion correcte du flux binaire d'entrée et le flux binaire de sortie obtenu comprend des informations identifiables par un décodeur MPEG-4. Le remplacement d'un macrobloc intra d'une image B par un macrobloc prédit peut être réalisé de plusieurs manières différentes. Selon un premier mode de réalisation, l'étape de substitution comprend: - une sous-étape de mémorisation d'un ensemble de macroblocs intra pour une image image I à codage intra ou P à codage prédictif, - une sous étape de détermination, pour un macrobloc intra appartenant à une image B, d'un macrobloc de référence parmi l'ensemble des macroblocs ainsi mémorisés pour l'image I ou P précédant ou suivant l'image B dans l'ordre d'affichage, et - une sous-étape de calcul du macrobloc prédit à partir des macroblocs intra et de référence. Une telle méthode de conversion utilise des macroblocs intra des images I ou P précédant ou suivant l'image B dans l'ordre d'affichage, de tels macroblocs ne nécessitant pas, au contraire des autres types de macroblocs, un procédé de reconstruction car ils sont codés sans référence à d'autres macroblocs. Cette méthode autorise ainsi une détermination simple et efficace d'un macrobloc prédit à partir du macrobloc infra et du macrobloc de référence. Selon un autre mode de réalisation, l'étape de substitution comprend: - une sous-étape d'addition d'un ensemble de macroblocs supplémentaires pour une image, - une sous étape de détermination, pour un macrobloc infra d'une image B, d'un macrobloc de référence parmi l'ensemble des macroblocs supplémentaires pour l'image I à codage intra ou P à codage prédictif précédant ou suivant l'image B dans l'ordre d'affichage, et - une sous-étape de calcul du macrobloc prédit à partir des macroblocs intra et de référence. Ce deuxième mode de réalisation permet de déterminer un macrobloc de référence lorsque aucun macrobloc intra n'est présent dans les images P précédant ou suivant l'image B tout en minimisant la quantité d'information additionnelle à coder. Ces aspects de l'invention ainsi que d'autres aspects plus détaillés apparaîtront plus clairement grâce à la description suivante de plusieurs modes de réalisation de l'invention, donnés à titre d'exemples non limitatifs et en regard des dessins annexés dans lesquels - la Fig. 1 est une représentation du processus d'estimation de mouvement selon l'art antérieur, - la Fig. 2 est un diagramme illustrant un premier mode de fonctionnement de la méthode de conversion selon l'invention, - la Fig. 3 est un diagramme illustrant un second mode de fonctionnement de la méthode de conversion selon l'invention, et - la Fig. 4 est un diagramme illustrant un troisième mode de fonctionnement de la méthode de conversion selon l'invention. La présente invention concerne une méthode de conversion d'un flux binaire d'entrée de données codées selon un premier format d'une technique de codage par blocs en un flux binaire de sortie de données codées selon un second format de la technique de codage. Elle a été développée plus particulièrement dans le cadre de la conversion d'un flux binaire d'entrée codé selon la norme MPEG-1 en un flux binaire de sortie codé selon la norme MPEG-4 mais reste néanmoins applicable en tout ou partie à la conversion d'autres normes de codage vidéo faisant appel à une technique de codage par blocs tels que MPEG- 2, H.261 ou H.263 par exemple, si les conditions de conversion sont similaires. La présente solution présente l'avantage d'éviter un décodage complet, c'est à dire avec une reconstruction de l'image décodée, selon le premier format d'une technique de codage par blocs suivi d'un ré-encodage selon le second format de ladite technique. Elle a pour but de limiter autant que possible les opérations liées au décodage et au ré-encodage même partiels desdits flux telles que la re-quantification des données codées par exemple. Cette méthode peut permettre à un utilisateur de réutiliser de façon simple des images codées selon le format MPEG-1 dans une application MPEG-1 comme la vidéo téléphonie par exemple. Les Fig. 2 à 4 illustrent trois modes de fonctionnement (200, 300 et 400) de la méthode de conversion, à savoir une simple transcription du flux d'entrée, une conversion avec re-quantification du flux d'entrée et une conversion avec un décodage partiel de certains macroblocs dudit flux. La Fig. 2 est un diagramme illustrant le premier mode de fonctionnement de la méthode de conversion selon l'invention. Ladite méthode comprend les étapes de - décodage à longueur variable VLD (21) du flux binaire d'entrée (S1) pour fournir des données décodées comprenant par exemple, pour chaque macrobloc, des coefficients DCT quantifiés acq, le pas (ou échelle) de quantification q correspondant, un mode de prédiction et un vecteur de mouvement, - correction COR (22) des données décodées, et - codage à longueur variable VLC (23) des données décodées corrigées afin de fournir le flux binaire de sortie (S2). L'étape de correction s'avère nécessaire, par exemple, dans les cas suivants. La norme MPEG-4 ne connaît pas ou n'autorise pas toutes les fonctionnalités permises par les normes MPEG-1 voire MPEG-2. Elle ne traite pas, par exemple, les images selon leur numéro d'affichage NUMi à l'écran mais selon leur temps d'affichage Ti. A cet effet, l'étape de correction transforme le numéro d'affichage à l'écran d'une image du flux binaire d'entrée MPEG-1 en un temps d'affichage pour le flux binaire de sortie MPEG-4, ceci à partir du débit R connu du flux binaire d'entrée : Ti = NUMi x R. Cette opération est une simple opération de transcription ne nécessitant aucune re-quantification des coefficients DCT quantifiés. Les normes MPEG-1 et MPEG-2 permettent de fixer le pas de quantification Qslice pour une tranche de macroblocs consécutifs appartenant à une ligne de macroblocs de l'image, Qslice étant indiqué une fois pour toutes au début de la tranche. La norme MPEG-4 ne connaît pas cette notion de tranche. Cest pourquoi l'étape de correction selon la présente invention attribue un pas de quantification Qslice à tous les macroblocs appartenant à la tranche. En fait, la norme MPEG-4 transmet des différences de pas de quantification : le pas de quantification Qslice est donc attribué au premier macrobloc appartenant à la tranche et la valeur 0 est affectée aux macroblocs suivants afin de former le flux binaire de sortie. La Fig. 3 est un diagramme illustrant le second mode de fonctionnement de la méthode de conversion selon l'invention. Ladite méthode comprend les étapes de - décodage à longueur variable VLD (21) du flux binaire d'entrée (S1) pour fournir des données décodées comprenant par exemple, pour chaque macrobloc, des coefficients DCT quantifiés acq, le pas de quantification q correspondant, un mode de prédiction et un vecteur de mouvement, - re-quantification RQ (24) des coefficients DCT quantifiés aç, avec un pas de quantification modifié q', fournissant des coefficients DCT modifiés acq', - codage à longueur variable VLC (23) des données après re-quantification afin de fournir le flux binaire de sortie (S2), - stockage BUF (25) dans une mémoire tampon (en anglais "buffer") des données ainsi codées, et - régulation REG (26) permettant de contrôler le remplissage et le vidage de la mémoire tampon en agissant sur la valeur du pas de quantification modifié q'. L'étape de re-quantification s'avère notamment nécessaire dans les cas suivants. Les normes MPEG-1 et MPEG-2 donnent la possibilité de faire varier le pas de quantification d'un macrobloc au macrobloc suivant dans une gamme de valeurs déterminées sans limiter la variation du pas de quantification à l'intérieur de cette gamme. La norme MPEG-4 quant à elle, limite la variation du pas de quantification à +/-2. Si la variation du pas de quantification d'un macrobloc au macrobloc suivant est supérieure à 2, en valeur absolue, pour le flux binaire d'entrée, l'étape de re-quantification limite cette variation à 2. (étape de re-quantification peut être raffinée en stockant à l'avance les pas de quantification correspondant à un ensemble de macroblocs du flux binaire d'entrée, à une ligne de l'image par exemple, et en déterminant au mieux les variations du pas de quantification sur cet ensemble de macroblocs. Dans le mode de réalisation préféré, la courbe des pas de quantification modifiés q' est déterminée par minimisation quadratique à partir des pas de quantification q stockés pour une ligne en tenant compte des variations du pas de quantification modifiée q' limitées à +/- 2. Les coefficients DC (c'est à dire les coefficients DCT pour lesquels la fréquence est nulle dans les deux dimensions) des blocs à codage intra doivent subir une quantification inverse selon une méthode différente de tous les autres coefficients. Dans la norme MPEG-1, le résultat de la quantification inverse est le coefficient DC multiplié par un facteur multiplicatif égal à 8. Dans la norme MPEG-4, le facteur multiplicatif, appelé dç scaler, est variable et est fonction du pas de quantification selon un tableau établi par ladite norme. Par conséquent, l'étape de re-quantification remplace le facteur multiplicatif égal à 8 du flux binaire d'entrée par la valeur dç scaler déterminée dans le tableau à partir du pas de quantification initial q ou modifié q' selon le cas. Cette étape de re-quantification risque de modifier sensiblement le débit du flux binaire de sortie. Dans le cas d'un flux de débit variable, cette modification sera sans incidence. En revanche, dans le cas d'un débit constant ou variant dans une plage de valeurs déterminées, une étape de régulation agissant sur la valeur du pas de quantification modifié q' est nécessaire afin d'éviter tout débordement de la mémoire tampon. Ainsi qu'il en a été fait mention précédemment, la norme MPEG-4 n'autorise pas les macroblocs intra dans une image B (p. 337-338 de la norme ISO/CEI 14496-2, 1999). C'est pourquoi la méthode de conversion selon l'invention comprend également une étape de remplacement des macroblocs intra d'une image B par des macroblocs prédits. La Fig. 4 est un diagramme illustrant ce mode de fonctionnement de la méthode de conversion. Selon une première mise en oeuvre, ladite méthode comprend en plus des étapes qui ont été décrites dans le paragraphe précédent les étapes suivantes de - quantification inverse IQ (27) des coefficients DCT quantifiés acBq pour un macrobloc intra appartenant à une image B et acIq(i) pour un ensemble de i macroblocs intra appartenant à une image I, ou acPq(j) pour un ensemble de j macroblocs intra appartenant à une image P, - mémorisation MEM (28) des macroblocs inversement quantifiés contenant respectivement les coefficients acB, acI(i) et acP(j) pour les images B, I et P, - calcul CAL (29), pour lie macrobloc intra d'une image B, d'un macrobloc de référence dans une image I ou P précédant ou suivant dans l'ordre d'affichage l'image B, puis d'un macrobloc prédit à partir du macrobloc intra et du macrobloc de référence. L'ensemble de macroblocs parmi lequel le macrobloc de référence est recherché, est constitué par tous les macroblocs intra présents dans une image I ou P. Suivant les ressources mémoires disponibles, l'ensemble de macroblocs peut se limiter à certains macroblocs intra présents dans une image I ou P et répartis à l'intérieur de ladite image. L'ensemble de macroblocs est stocké dans la mémoire MEM tant qu'un macrobloc de l'image I ou P peut servir de référence au macrobloc intra de l'image B courante. L'étape de calcul du macrobloc de référence est effectuée en prenant en compte les paramètres suivants - la valeur d'une erreur de prédiction calculée à partir du macrobloc intra courant de l'image B et d'un macrobloc mémorisé; dans ce cas, un minimum de l'erreur de prédiction est recherché. L'erreur de prédiction pour un macrobloc k de l'ensemble de macroblocs est égale, par exemple, à la somme sur un macrobloc de la valeur absolue de la différence entre les coefficients acB et acP(k) pour une image P ou acI(k) pour une image I. Selon un autre exemple, elle est égale à la somme sur un macrobloc du carré de la différence desdits coefficients. - la position d'un macrobloc mémorisé dans l'image P relativement à celle du macrobloc intra de l'image B. En effet, si le macrobloc mémorisé est très éloigné du macroblioc intra de l'image B, le nombre de bits nécessaires pour coder le vecteur de mouvement correspondant peut être important ce qui réduit par conséquent l'efficacité de codage. Un macro@bloc mémorisé associé à un vecteur de mouvement dont la valeur est comprise hors d'une gamme de valeurs déterminées, [-128,127] par exemple, se trouve ainsi exclu du champ de recherche du macrobloc de référence. Dans ce cas, lie macrobloc de référence ne sera donc pas forcément celui dont l'erreur de prédiction sera la plus faible parmi tous les macroblocs mémorisés mais celui qui aura l'erreur de prédiction la plus faible pour les macrobiocs mémorisés appartenant à une fenêtre de recherche. Le macrobloc prédit est alors déterminé à partir de la différence entre le macrobloc intra courant de l'image B, et le macrobloc de référence déterminé, tandis que le vecteur de mouvement qui lui est associé est déterminé à partir de la position respective desdits macroblocs dans l'image. Dans le mode de réalisation préféré, le calcul de l'erreur de prédiction se fait à partir des macroblocs inversement quantifiés. II est également possible de les convertir en macroblocs de pixels en utilisant une transformation en cosinus discrète inverse IDCT. On se retrouve alors dans le cas d'une estimation de mouvement classique. Cependant, une transformation IDCT peut être coûteuse en temps de calcul, c'est pourquoi la solution précédente est préférable. De plus, la conservation de l'énergie dans le domaine DCT fait que la somme des carrés des erreurs dans le domaine DCT et la somme des carrés des erreurs dans le domaine des pixels sont identiques, rendant les deux méthodes équivalentes dans ce cas précis. Un problème se pose cependant pour déterminer un macrobloc de référence lorsque aucun macrobloc intra n'est présent dans les images P précédant ou suivant l'image B. C'est pourquoi, la méthode comprend en outre une étape d'addition (30) d'un ensemble de macroblocs supplémentaires (S+) aux images de la séquence. Pour cela, il est possible de modifier la taille des images en le spécifiant dans les champs d'en-tête de ladite image. Dans le mode de réalisation préféré, la méthode de conversion rajoute une ligne de macroblocs en bas de l'image. II est également possible de rajouter cette ligne en haut de l'image ou de rajouter une colonne à droite ou à gauche de l'image. Comme la taille de l'image est modifiée, ces macroblocs supplémentaires sont ajoutés pour toutes les images de la séquence. L'étape de calcul détermine alors pour un macrobloc intra d'une image B - un macrobloc de référence parmi l'ensemble des macroblocs supplémentaires pour l'image I ou P précédant ou suivant l'image B dans l'ordre d'affichage, et - un macrobloc prédit à partir des macroblocs intra et de référence selon le même principe que précédemment. L'ensemble de macroblocs supplémentaires contient, par exemple, un logo ou mieux encore, des données de valeurs identiques. Dans ce dernier cas, les informations supplémentaires sont codées avec le minimum de bits. Pour les images I, ces macroblocs sont codées en intra; pour les images P et B, les macroblocs supplémentaires sont prédits de façon anticipée, en leur associant une erreur de prédiction nulle et un vecteur de mouvement nul. Afin de minimiser le vecteur de mouvement, le macrobloc de référence est choisi dans la même colonne que le macrobloc courant de l'image B. Ce macrobloc de référence ne correspond pas a un macrobloc intra dans l'image P, mais les données qu'il contient n'étant pas changées dans l'image P, il correspond a celui de l'image I précédente. Le macrobloc prédit est alors calculé à partir de l'erreur entre le macrobloc intra courant de l'image B et le macrobloc infra de l'image I. Si les macroblocs supplémentaires des images I contiennent des données égales à zéro, les coefficients DCT du macrobloc prédit sont ceux du macrobloc intra courant acBq. Selon une variante de la méthode précédente, le macrobloc intra de l'image B est remplacé par un macrobloc prédit contenant des coefficients DCT nuls associés à un vecteur de mouvement nul. Cette méthode ne nécessite qu'une étape de correction (22) telle que celle décrite en Fig. 2. Elle a pour conséquence de geler le macrobloc de l'image P précédant ou suivant l'image B. Cependant, le résultat peut parfois être visuellement gênant pour l'utilisateur. Comme dans le mode de fonctionnement illustré en Fig. 3, des étapes de re- quantification et de régulation peuvent s'avérer nécessaires, respectivement pour respecter les variations de pas de quantification imposées par la norme MPEG-4 et pour contrôler le débit du flux binaire de sortie. La description ci-dessus en référence aux Fig. 2 à 4 illustre l'invention plutôt qu'elle ne la limite. II est évident qu'il existe d'autres alternatives qui rentrent dans la portée des revendications ci-jointes. II existe de nombreuses manières pour implémenter les fonctions décrites au moyen de logiciel (en anglais "software"). A cet égard, les Fig. 2 à 4 sont très schématiques, chaque figure représentant un mode de réalisation seulement. Donc, bien qu'une figure montre différentes fonctions sous forme de blocs séparés, ceci n'exclut pas qu'un seul logiciel effectue plusieurs fonctions. Ceci n'exclut pas non plus qu'une fonction puisse être effectuée par un ensemble de logiciels. II est possible d'implémenter ces fonctions au moyen d'un circuit d'ordinateur ou de récepteur numérique pour téléviseur (en anglais "set top box") convenablement programmé. Un jeu d'instructions contenu dans une mémoire de programmation peut provoquer le circuit à effectuer différentes opérations décrites précédemment en référence aux Fig. 2 à 4. Le jeu d'instructions peut être chargé dans la mémoire de programmation par la lecture d'un support de données comme, par exemple un disque qui contient le jeu d'instructions. La lecture peut également s'effectuer par l'intermédiaire d'un réseau de communication comme, par exemple, le réseau internet. Dans ce cas, un fournisseur de service mettra le jeu d'instructions à la disposition des intéressés. Aucun signe de référence entre parenthèses dans une revendication ne doit être interprété de façon limitative. Le mot "comprenant" n'exclut pas la présence d'autres éléments ou étapes listés dans une revendication. Le mot "un" ou "une" précédant un élément ou une étape n'exclut pas la présence d'une pluralité de ces éléments ou ces étapes. REVENDICATIONS I. Procédé de conversion d'un flux binaire d'entrée de données codées selon un premier format d'une technique de codage par blocs en un flux binaire de sortie de données codées selon un second format de la technique de codage, ledit procédé comprenant une étape de remplacement de macroblocs intra d'une image B à codage prédictif bidirectionnel par des macroblocs prédits. 2. Procédé de conversion selon la revendication 1, où l'étape de substitution comprend - une sous-étape de mémorisation d'un ensemble de macroblocs intra pour une image I à codage intra ou P à codage prédictif, - une sous-étape de détermination, pour un macrobloc infra appartenant à une image B, d'un macrobloc de référence parmi l'ensemble des macroblocs ainsi mémorisés pour l'image I ou P précédant ou suivant l'image B dans l'ordre d'affichage, et - une sous-étape de calcul du macrobloc prédit à partir des macroblocs infra et de référence. 3. Procédé de conversion selon la revendication 2, où la sous étape de détermination est destinée à déterminer le macrobloc de référence en fonction de la valeur d'une erreur de prédiction calculée à partir du macrobloc intra de l'image B et d'un macrobloc mémorisé. 4. Procédé de conversion selon la revendication 1, où l'étape de substitution comprend - une sous-étape d'addition d'un ensemble de macroblocs supplémentaires à une image, - une sous étape de détermination, pour un macrobloc intra d'une image B, d'un macrobloc de référence parmi l'ensemble des macrob@locs supplémentaires pour l'image I à codage intra ou P à codage prédictif précédant ou suivant l'image B dans l'ordre d'affichage, et - une sous-étape de calcul du macrobloc prédit à partir des macroblocs infra et de référence. 5. Procédé de conversion selon la revendication 4, où l'ensemble de macroblocs supplémentaires contient des données de valeurs identiques. 6. Procédé de conversion selon la revendication 2 ou 4, où la sous étape de détermination est destinée à déterminer le macrobloc de référence en fonction de sa position dans l'image P relativement à celle du macrobloc intra de l'image B. 7. Procédé de conversion selon la revendication 1, où l'étape de remplacement est destinée à remplacer le macrobloc infra par un macrobloc prédit contenant des coefficients DCT nuls associés à un vecteur de mouvement nul. 8. Circuit de récepteur numérique pour téléviseur comprenant un jeu d'instructions qui, lorsqu'elles sont chargées dans le récepteur numérique, amène celui-ci à effectuer le procédé de conversion selon l'une des revendications 1 à 7.