FR 2826471 A1 20021227 FR 0108398 A 20010626 EXTENSION D'UN LOGICIEL DANS UN RÉCEPTEUR/DÉCODEUR DE TÉLÉVISION NUMÉRIQUE DESCRIPTION Domaine Technique La présente invention concerne un procédé d'extension d'un logiciel par une extension de logiciel. Plus précisément le logiciel peut être un logiciel de navigation dans un récepteur/décodeur de télévision numérique. La présente invention concerne également un récepteur/décodeur de télévision numérique comprenant un logiciel de navigation et une extension de ce logiciel. Etat de la Technique Un logiciel peut en général être défini comme étant une suite d'instructions susceptibles d'être exécutées par une machine à microprocesseur afin d'exploiter des ressources de cette machine. Un logiciel peut être étendu au moyen d'une extension de logiciel qui coopère avec le logiciel en échangeant des données et en traitant ces données. L'extension de logiciel est aussi connue sous la dénomination anglaise de"Plug-In". Un logiciel de navigation, aussi connu sous le nom anglais de"browser", permet d'utiliser un ordinateur pour consulter des données stockées sur un serveur distant relié à l'ordinateur par un réseau. Ces données sont dans un format reconnu par le navigateur, comme par exemple le format largement répandu HTML (de l'anglais HyperText Markup Language). Les données HTML sont contenues dans un fichier et permettent, une fois chargées sur l'ordinateur, au navigateur de générer une page HTML sur un écran de l'ordinateur. Cette page HTML peut comprendre du texte mis en page, des références vers d'autres pages HTML, des images ou des séquences d'images, des sons... Le logiciel de navigation peut être étendu par un ou plusieurs plug-ins. Le plug-in permet de traiter des données d'un type déterminé fournies avec une page HTML ou référencées dans celle-ci. Ainsi les fonctionnalités du logiciel de navigation sont accrues par le plug-in qui permet le traitement de données de type déterminé qui ne peuvent être traitées par le logiciel de navigation seul. Ceci permet notamment de faire évoluer le logiciel de navigation pour s'adapter à des nouvelles formes de données diffusées. Afin de fonctionner ensemble, le logiciel de navigation et le plug-in échangent des données. Les données plug-in à traiter par le plug-in peuvent par exemple être chargées par le biais du logiciel de navigation et transiter vers le plug-in dans un flux de transition. Dans un mode normal le flux de transition peut contenir les données sous forme séquentielle ce qui permet de faire transiter les données au fur et à mesure de leur disponibilité. Dans un autre mode dit d'accès aléatoire le flux de transition contiendra les données dans un ordre défini par le plug-in. Le mode d'accès aléatoire suppose toutefois que le serveur distant puisse fournir les données dans l'ordre défini et sur demande. Les logiciels de navigation et leurs plug-ins deviennent de plus en plus répandus sur des récepteurs/décodeurs de télévision numérique. Le récepteur/décodeur est un dispositif permettant notamment de recevoir un flux de données numériques correspondant à des signaux audio et vidéo mais aussi à des informations et à des logiciels, notamment des pages HTML. Le récepteur/décodeur comprend des moyens pour décoder les données audio et vidéo et une sortie pour transmettre l'audio et la vidéo vers un téléviseur. Le récepteur/décodeur permet également d'exécuter des logiciels comme le logiciel de navigation et le plug-in, ces derniers exploitant par exemple des pages HTML reçues dans le flux de données numériques. Le logiciel de navigation et le plug-in sont intégrés dans une couche médiane de logiciels nommée middleware. Le middleware intègre également d'autres logiciels permettant de mettre à disposition de l'utilisateur des services comme par exemple un guide de programme électronique ou l'affichage d'une émission de télévision. Le middleware est exécuté au-dessus d'une couche de logiciel basse dite système d'exploitation. Un objectif de l'invention est de proposer une solution de plug-in particulièrement adaptée à un environnement embarqué comme par exemple celui d'un décodeur/récepteur de télévision numérique. Exposé de l'invention La présente invention a pour objet un procédé d'extension d'un logiciel par une extension de logiciel, l'extension de logiciel permettant de traiter des données d'un type déterminé, le procédé comprenant au moins les étapes suivantes : - l'exécution d'un gestionnaire d'extensions de logiciel permettant de sélectionner et initier l'exécution d'une extension de logiciel, - l'envoi d'une requête de traitement vers le gestionnaire d'extensions de logiciel lorsque des données du type déterminé sont identifiées par le logiciel, - l'identification d'une référence de stockage des données du type déterminé, - la sélection et l'exécution de l'extension de logiciel par le gestionnaire d'extensions de logiciels pour traiter les données du type déterminé à partir de ladite référence de stockage. Une variante de l'invention prévoit un procédé d'extension d'un logiciel par une extension dudit logiciel dans un récepteur/décodeur de télévision numérique, l'extension permettant de traiter des données d'un type déterminé, le logiciel étant intégré dans un logiciel noyau en code natif et l'extension étant codée dans un langage pouvant être interprété par une machine virtuelle du récepteur/décodeur, le procédé comprenant : - l'exécution d'un gestionnaire d'extensions permettant de sélectionner et initier l'exécution d'une extension, - l'envoi d'une requête de traitement vers le gestionnaire d'extensions lorsque le logiciel identifie le type déterminé de données, - l'identification d'une référence de stockage des données du type déterminé, - la sélection et l'exécution de l'extension par le gestionnaire d'extensions pour traiter les données du type déterminé à partir de ladite référence de stockage. Dans un mode de réalisation préférentiel le procédé inventif comprend le chargement et stockage des données du type déterminé dans une mémoire du récepteur/décodeur à partir d'une référence de stockage. Dans un autre mode de réalisation préférentiel le procédé inventif comprend la destruction par le gestionnaire d'extensions de l'extension une fois que les données de type déterminé ont été traitées pour libérer la mémoire. L'invention a également pour objet un récepteur/décodeur de télévision numérique comprenant : - des moyens de réception de données numériques, - un logiciel noyau codé en natif et permettant de traiter les données numériques, - un logiciel de navigation intégré au logiciel noyau et permettant de traiter notamment une page HTML, - une machine virtuelle intégrée au logiciel noyau, - un gestionnaire d'extensions, le gestionnaire d'extensions causant l'exécution d'une extension en langage interprété par la machine virtuelle afin de traiter des données d'un type déterminé référencées dans la page HTML. Brève description des figures L'invention sera expliquée dans la suite de la description au moyen d'exemples de réalisation en faisant référence à la Figure 1 qui contient une représentation schématique de couches logicielles dans un récepteur/décodeur de télévision numérique. Exposé Détaillé de Modes de Réalisation Particuliers Couches logicielles dans un récepteur/décodeur La Figure 1 contient une représentation schématique de couches logicielles présentes dans un décodeur/récepteur de télévision numérique. Un logiciel noyau 1 intègre un logiciel de navigation 2 permettant de traiter des pages d'information codées par exemple en HTML et reçues à une entrée du décodeur/récepteur (non représenté). Le logiciel noyau 1 intègre également un logiciel de machine virtuelle 3 qui permet d'interpréter du code d'applications 4 faisant partie d'une couche logicielle supérieure. Le logiciel noyau 1 et les logiciels intégrés de navigation 2 et de machine virtuelle 3 sont typiquement développés dans un langage de programmation avancé tel que par exemple le langage C, puis compilés dans un langage dit natif qui peut directement être exécuté au-dessus du système d'exploitation (non représenté) du récepteur/décodeur. La compilation en code natif confère une vitesse d'exécution maximale. Toutefois elle contraint à figer la sélection de logiciels intégrés du logiciel noyau 1 avant compilation. Une application 4 est écrite dans un langage qui peut directement être interprété par la machine virtuelle 3. Parmi les langages interprétés on trouve par exemple le Pantalk et le JAVA. Une application 4 peut par exemple être téléchargée dans un flux de données à l'entrée du récepteur/décodeur (non représenté), puis stockée dans une mémoire volatile pour être exécutée au besoin. Ainsi il existe une grande flexibilité quant aux évolutions de logiciels dans le récepteur/décodeur puisqu'un logiciel nouveau peut être téléchargé et exécuté à tout moment selon les besoins. En revanche, l'interprétation d'une application 4 par la machine virtuelle 3 peut donner lieu à une vitesse d'exécution plus lente que si l'application avait été en code natif comme c'est le cas pour le logiciel noyau 1. Des logiciels de dispositifs 5 peuvent être adressés par le logiciel noyau 1 afin d'accéder aux dispositifs physiques (non représentés) mis à disposition dans le récepteur/décodeur, comme par exemple un modem, un dispositif d'affichage ou un dispositif de chargement des données reçues à l'entrée du récepteur/décodeur. Les logiciels de dispositifs 5 sont en général stockés dans une mémoire non volatile et livrés par les fabricants de récepteurs/décodeurs. Une couche d'interface programmes/applications 6 permet de définir un environnement déterminé pour les applications 4 afin que ces dernières puissent communiquer avec le logiciel noyau 1 et ou les logiciels intégrés à celui-ci. La couche d'interface 6 est souvent désignée sous le nom API provenant de l'Anglais Application Programmer Interface. Dans une réalisation préférentielle la couche d'interface 6 est exécutée en code natif, c'est-à-dire qu'elle est développée à l'origine dans un langage de programmation avancé tel que le langage C, puis compilée en code natif pour une vitesse d'exécution maximale. La couche d'interface 6 peut dans ce cas être compilée ensemble avec le code du logiciel noyau 1 et des logiciels intégrés. Dans une autre réalisation la couche d'interface 6 est écrite en code interprétable afin de pouvoir être exécutée par la machine virtuelle 3. La couche d'interface 6 peut alors facilement être modifiée, par exemple en téléchargeant du nouveau code dans un flux de données à l'entrée du récepteur/décodeur. Ainsi un opérateur de télévision numérique garde la possibilité d'offrir une interface programmes/applications 6 évolutive en fonction de ses besoins. Dans une autre réalisation la couche d'interface 6 est composée d'une part de code natif, c'est-à-dire d'un code compilé à exécution rapide, et d'autre part de code en langage interprétable pouvant aisément être mis à jour. L'ensemble comprenant le logiciel noyau 1, les logiciels intégrés dont le logiciel de navigation 2 et la machine virtuelle 3, et la couche d'interface 6 est souvent regroupé sous le nom de Middleware (qui signifie en Anglais"logiciel du milieu") étant donné que ces logiciels s'intercalent de façon logique entre les couches basses de logiciels proches des ressources physiques du récepteur/décodeur, dont les logiciels de dispositifs 5, et les couches supérieures de logiciels dont les applications 4. Plug-in Il a été décrit plus haut que le plug-in 7 est un logiciel permettant de traiter des données de type déterminé fournies avec une page HTML. Le plug-in 7 peut de ce fait être considéré comme une extension du logiciel de navigation 2. Les données à traiter par le plug-in (données plug-in) ne sont pas forcément envoyées en même temps que la page HTML. Les données plug-in sont soit contenues dans le fichier de la page HTML, soit référencées par une adresse dans la page HTML. Cette adresse est communément appelée URL de l'anglais Universal Ressource Locator (qui signifie identifiant universel de ressources) et elle est précédée par une marque propre au langage HTML telle que , ou . Ces marques peuvent être accompagnées de paramètres et d'options plug-in définissant par exemple l'apparence dans la page HTML affichée de l'affichage éventuel que va générer le plug-in 7. En effet il est possible que le plug-in 7 produise un résultat graphique qui est alors affiché dans une fenêtre à l'écran. Un exemple générique de paramètres et d'options plug-in accompagnant une marque précédant une adresse URL est le suivant : - URL location : adresse des données/du fichier contenant les données - Type MIME : le type des données à traiter par le plug-in - Alignment : le type d'alignement de l'affichage à l'écran (gauche, droite, haut, bas) - Border : largeur de marge - Width : largeur de la fenêtre d'affichage du plug-in - Height : hauteur de la fenêtre d'affichage du plug-in - HSPACE : marge horizontale - VSPACE : marge verticale - Hidden : option permettant ou non de faire apparaître une fenêtre D'autres paramètres plug-in sont définis dans les spécifications du langage HTML. Un plug-in 7 peut donner lieu ou non à la création d'une fenêtre dans laquelle le résultat du traitement des données plug-in sera affiché. La création de la fenêtre dépend des valeurs attribuées aux paramètres et options plug-in. Ainsi par exemple si le traitement des données plug-in résulte en une séquence vidéo, celle-ci peut être affichée dans une fenêtre indépendante ayant un cadre et une épaisseur définis. Une autre possibilité consisterait à afficher la séquence vidéo directement dans la fenêtre dans laquelle le logiciel de navigation affiche la page HTML contenant la marque et l'adresse URL des données plug- in. Il existe donc plusieurs types d'affichage de plug-in et notamment les trois suivants : intégré (ou embedded en Anglais), dissimulé (ou hidden en Anglais), ou pleine page (ou full-page en Anglais). Le type intégré prévoit l'affichage du plug-in dans la même fenêtre que la page HTML. Dans ce cas l'affichage du plug-in est en fait effectué dans une sous-fenêtre de la fenêtre affichant la page HTML. La taille de la sous-fenêtre peut être ajustée avec les paramètres plug-in. Le type dissimulé ne prévoit pas d'affichage du plug-in. Ce type est utilisé lorsque le traitement des données plug-in ne produit pas de graphismes. Le type pleine-page prévoit l'affichage dans une nouvelle fenêtre indépendante de la fenêtre affichant la page HTML. Un plug-in 7 peut être codé aussi bien dans un langage de programmation avancé et compilé en code natif, que dans un langage qui sera interprété par la machine virtuelle 3. L'implémentation du plug-in 7 selon l'invention se fait dans un langage interprétable par la machine virtuelle 3. Le plug-in 7 fait partie des applications 4 et peut par exemple être codé en JAVA lorsque la machine virtuelle interprète du JAVA. De ce fait le plug-in 7 peut être considéré comme une extension applicative de logiciel. L'implémentation du plug-in 7 est faite dans le respect de l'environnement défini dans la couche d'interface programmes/applications 6. Gestionnaire d'extensions applicatives de logiciel Une extension applicative de logiciel, telle que par exemple un plug-in 7 peut de par sa nature être téléchargée dans une mémoire volatile du récepteur/décodeur, exécutée par la machine virtuelle 3 puis détruite afin de libérer la mémoire volatile. Un gestionnaire d'extensions applicatives 8 permet de sélectionner un plug-in 7, de le télécharger ou charger en mémoire afin de l'exécuter pour traiter des données plug-in. Une fois l'exécution du plug-in 7 terminée, le gestionnaire d'extensions applicatives 8 prend en charge la destruction du plug-in afin que la mémoire volatile soit libérée pour d'autres extensions applicatives ou applications 4. Le gestionnaire d'extensions applicatives 8 reçoit une requête de traitement d'un type de données déterminé avant de sélectionner l'extension applicative appropriée pour le traitement de ce type de données déterminé. La requête peut par exemple provenir du logiciel de navigation 2 traitant une page HTML et identifiant une URL précédée d'une marque spécifique d'un plug-in. Le gestionnaire d'extensions applicatives 8 utilise la requête pour initier le chargement et l'exécution du plug-in 7 correspondant. Le gestionnaire d'extensions applicatives 8 indique au plug-in 7 un moyen d'accéder aux données plug-in. Au cas où le plug-in 7 serait déjà en cours d'exécution le gestionnaire d'extensions applicatives 8 se contente de lui indiquer un moyen d'accès aux données plug-in. Le moyen d'accéder aux données plug-in correspond généralement à une référence de stockage. Cette dernière référence l'endroit où sont stockées les données plug-in. Les données plug-in peuvent par exemple avoir été téléchargées et être stockées à une adresse dans une mémoire volatile ou une mémoire de masse du récepteur/décodeur. Les données plug-in peuvent également correspondre au contenu d'un fichier dont le nom est répertorié dans un répertoire de fichiers utilisé par le récepteur décodeur. Les données plug-in peuvent aussi être disponibles sur un serveur distant. Le gestionnaire d'extensions applicatives 8 s'interface logiquement entre une extension applicative telle que le plug-in 7 et un logiciel intégré tel que logiciel de navigation 2 ou encore une application 4. Il peut être codé entièrement dans un langage qui sera interprété par la machine virtuelle 3 lorsqu'il est interfacé avec une application 4 ou encore être partiellement codé dans un langage compilable pour être partiellement intégré au logiciel noyau 1 en code natif lorsqu'il est interfacé avec un logiciel intégré tel que le logiciel de navigation 2. Dans une autre réalisation le gestionnaire d'extensions applicatives 8 est implémenté entièrement en code compilable et son code natif intégré au logiciel noyau 1. Echange de données plug-in L'échange de données plug-in vers un plug-in peut se faire dans au moins deux modes nommés Normal ou Accès aléatoire, les données pouvant être obtenues à partir d'un flux de données à l'entrée du récepteur/décodeur ou à partir d'une mémoire du récepteur/décodeur : - Mode normal : les données plug-in parviennent au plug-in 7 dans un ordre séquentiel au fur et à mesure de la disponibilité des données. - Mode Accès Aléatoire : les données plug-in à faire parvenir au plug-in 7 sont spécifiées par les plug- in. Ainsi les données plug-in sont transmises dans un ordre particulier selon les spécifications du plug- in. Ce mode permet notamment d'implémenter des fonctions d'arrêt, retour et/ou avance rapide lors de l'affichage d'une séquence vidéo. Ce mode nécessite une intervention du coté serveur à la diffusion des données plug-in, dans la mesure où le serveur doit pouvoir recevoir et interpréter des instructions en provenance du plug-in 7. Le logiciel de navigation 2 transmet au plug-in 7 par le biais du gestionnaire d'extensions applicatives 8 un événement indiquant une référence de stockage. Les données peuvent alors sur instruction du plug-in être accédées au lieu indiqué par la référence de stockage. Si la référence de stockage indique un serveur externe au récepteur/décodeur alors les données plug-in sont téléchargées à partir de ce serveur ou lues à partir d'une mémoire du récepteur/décodeur si les données avaient déjà été téléchargées au préalable. Si la référence de stockage indique une adresse de mémoire propre au récepteur/décodeur, alors les données sont accédées à partir de cette adresse de mémoire. Cette adresse peut, par exemple, correspondre aux nom et emplacement d'un fichier, l'emplacement étant décrit par rapport à un répertoire de fichiers accessible dans le récepteur/décodeur. Le plug-in 7 peut ainsi directement accéder à ce fichier. Lorsque les données plug-in ont été lues et traitées par le plug-in dans n'importe lequel des modes normal ou accès aléatoire, le plug-in peut prévoir d'effacer les données plug-in à leur emplacement afin de libérer la capacité de stockage. Les modes de réalisation de l'invention décrits ci-dessus peuvent être modifiés par un homme du métier et ne sont pas limitatifs pour la portée de l'invention. En particulier les logiciels intégrés et les extensions applicatives ne sont pas limités aux exemples de logiciels de navigation 2 et aux plug-ins 7. REVENDICATIONS 1. Procédé d'extension d'un logiciel par une extension de logiciel, l'extension de logiciel permettant de traiter des données d'un type déterminé, le procédé comprenant au moins les étapes suivantes : - l'exécution d'un gestionnaire d'extensions de logiciel permettant de sélectionner et initier l'exécution d'une extension de logiciel, - l'envoi d'une requête de traitement vers le gestionnaire d'extensions de logiciel lorsque des données du type déterminé sont identifiées par le logiciel, - l'identification d'une référence de stockage des données du type déterminé, - la sélection et l'exécution de l'extension de logiciel par le gestionnaire d'extensions de logiciels pour traiter les données du type déterminé à partir de ladite référence de stockage. 2. Procédé d'extension d'un logiciel par une extension dudit logiciel dans un récepteur/décodeur de télévision numérique, l'extension permettant de traiter des données d'un type déterminé, le logiciel étant intégré dans un logiciel noyau en code natif et l'extension étant codé dans un langage pouvant être interprété par une machine virtuelle, le procédé comprenant : - l'exécution d'un gestionnaire d'extensions permettant de sélectionner et initier l'exécution d'une extension, - l'envoi d'une requête de traitement vers le gestionnaire d'extensions lorsque le logiciel identifie le type déterminé de données, - l'identification d'une référence de stockage des données du type déterminé, - la sélection et l'exécution de l'extension par le gestionnaire d'extensions pour traiter les données du type déterminé à partir de ladite référence de stockage. 3. Procédé d'extension d'un logiciel selon la revendication 1 ou 2, comprenant en outre les étapes suivantes : - chargement et stockage des données du type déterminé dans une mémoire du récepteur/décodeur à partir d'une référence de stockage. 4. Procédé d'extension d'un logiciel selon l'une quelconque des revendications 1 à 3, comprenant en outre les étapes suivantes : - destruction par le gestionnaire d'extensions de l'extension une fois que les données de type déterminé ont été traitées afin de libérer la mémoire. 5. Récepteur/décodeur de télévision numérique comprenant : - des moyens de réception de données numériques, - un logiciel noyau codé en natif et permettant de traiter les données numériques, - un logiciel de navigation intégré au logiciel noyau et permettant de traiter notamment une page HTML, - une machine virtuelle intégrée au logiciel noyau, - un gestionnaire d'extensions, le gestionnaire d'extensions causant l'exécution d'une extension en langage interprété par la machine virtuelle afin de traiter des données d'un type déterminé référencées dans la page HTML.