[go: up one dir, main page]

FR2809510A1 - METHOD FOR FORMING AND USING AN EVENT DATA BASE - Google Patents

METHOD FOR FORMING AND USING AN EVENT DATA BASE Download PDF

Info

Publication number
FR2809510A1
FR2809510A1 FR0006623A FR0006623A FR2809510A1 FR 2809510 A1 FR2809510 A1 FR 2809510A1 FR 0006623 A FR0006623 A FR 0006623A FR 0006623 A FR0006623 A FR 0006623A FR 2809510 A1 FR2809510 A1 FR 2809510A1
Authority
FR
France
Prior art keywords
events
service
event
memory
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
FR0006623A
Other languages
French (fr)
Inventor
Cyril Fenayrou
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
KCA Licensing SA
Original Assignee
Canal Plus Technologies SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canal Plus Technologies SA filed Critical Canal Plus Technologies SA
Priority to FR0006623A priority Critical patent/FR2809510A1/en
Priority to AU2001264013A priority patent/AU2001264013A1/en
Priority to PCT/FR2001/001604 priority patent/WO2001090898A2/en
Publication of FR2809510A1 publication Critical patent/FR2809510A1/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

The invention concerns a device for constituting a database including data concerning services and events transmitted on a dataflow, for example MPEG, characterised in that it consists in calculating exactly the memory workspace required for storing said data and in carrying out an exact allocation of memory workspace, thereby gaining memory workspace and facilitating consultation of the database.

Description

PROCEDE DE FORMATION ET D'UTILISATION D'UNE BASE DE DONNEES D'EVENEMENTS.  METHOD FOR FORMING AND USING AN EVENT DATA BASE.

DESCRIPTION <B>Domaine</B> technique L'invention se situe dans le domaine du recueil et de l'exploitation de données numériques relatives à des événements de chaînes ou services de télévisions. Elle concerne plus particulièrement un procédé utilisé pour conspruire urië--base de données sur...,``'c1é `:.tels événer#ents ainsi que l'emploi de la base de < J,-@dônnées ainsi'cc'nstruite. TECHNICAL FIELD The invention relates to the collection and exploitation of digital data relating to events of television channels or services. It more particularly relates to a method used to consume urië - database on ..., `` c1é `: .tels such events # and the use of the base of <J, - @ dônnés thus'cc ' nstruite.

Description de l'arrière plan technologique Les fournisseurs ou diffuseurs de service (c'est-à-dire d'émissions) de télévision ou radio diffusent des tables de données relatives aux événements qui peuvent être captées par un utilisateur d'un appareil de réception de ces événements, par exemple un récepteur de télévision muni d'un décodeur numérique ou d'un décodeur numérique alimentant un récepteur de télévision. Avant de décrire d'avantage l'art antérieur il convient de faire quelques rappels sur le vocabulaire et le genre de normes qu'il est préférable de connaître pour bien comprendre ce qui sera expliqué ensuite. Description of the technological background Television or radio service providers (or broadcasters) broadcast data tables of events that can be picked up by a user of a receiving apparatus these events, for example a television receiver equipped with a digital decoder or a digital decoder supplying a television receiver. Before describing further the prior art it is appropriate to make a few reminders about the vocabulary and the kind of norms that it is better to know to understand what will be explained next.

Les diffuseurs de services par exemple les diffuseurs d'émissions de télévision diffusent non seulement des événements qu encore programmes de télévisions, tels que des films, des matchs, des émissions de variété, mais aussi d'autres informations notamment sur les programmes prévus d'émissions, en principe selon un standard préétabli. Par exemple en Europe la norme DVB-SI ETS 300 468 et le rapport technique ETR 211, prévoient un format pour des tables d'information sur les événements, (évent information tables, EIT). Dans les explications qui vont suivre, les exemples seront, pour fixer les idées, tirés de cette norme. De même, le vocabulaire employé aura la définition prévue par cette norme et ce rapport. I1 est cependant évident que l'invention n'est pas dédiée uniquement,->à une application utilisant cette nôrmë`:. Service broadcasters, for example broadcasters, broadcast not only events, but also television programs, such as films, games, variety shows, and other information, including on the planned programs of television programs. emissions, in principle according to a pre-established standard. For example, in Europe the DVB-SI standard ETS 300 468 and the technical report ETR 211, provide a format for event information tables, (possible information tables, EITs). In the explanations which follow, the examples will be drawn from this standard. Similarly, the vocabulary used will have the definition provided by this standard and this report. It is however obvious that the invention is not dedicated solely to an application using this method.

Dans la suite de la descrip,ton _# on s'int:éréssera aux EIT dites "schedule" c'est-à-dire relatives aux programmes. Ces tables EIT programmes permettent de décrire jusqu'à 31 jours de programme pour un service. Les informations spécifiques à un programme sont par exemple son titre, la durée de celui-ci, son genre etc. In the rest of the description, your idea will be to use the so-called "schedule" ie program-related EITs. These EIT tables programs can describe up to 31 days of program for a service. The information specific to a program is for example its title, the duration of it, its genre etc.

Les données SI permettent de réaliser des applications de type Guide Electronique de Programme. La norme DVB-SI ETS 300 468 définit des informations hors descripteur, des informations facultatives associées aux descripteurs et des informations privées contenues dans des descripteurs privés. Les descripteurs sont des informations de longueur variables telles que par exemple un titre de film ou d'émission ou encore un résumé décrivant le programme. Des informations hors descripteur sont présentes pour chaque événement. Quelques exemples en sont donnés ci- dessous. Event Id : Identifiant unique d'un événement pour un service ayant une identification "service Id" donnée (une chaîne). The SI data makes it possible to implement Electronic Program Guide type applications. The DVB-SI ETS 300 468 standard defines out-of-print information, optional information associated with descriptors, and private information contained in private descriptors. The descriptors are variable length information such as, for example, a film or program title or a summary describing the program. Out of descriptor information is present for each event. Some examples are given below. Event Id: The unique identifier of an event for a service with a given "service Id" (a string).

StartTime : Instant de début de diffusion de l'événement (format UTC GMT).  StartTime: Start of broadcast instant of the event (UTC GMT format).

Duration : Durée de l'événement. Duration: Duration of the event.

FreeCaMode : Critère d'accès à l'événement.  FreeCaMode: Criterion for access to the event.

Des exemples d'informations facultatives associées aux descripteurs DVB-SI sont citées ci- dessous short_eventdéscr-iptor : Titre et résumé de 1 `-événement . @.`.. _ '-côntent descriptor : ce descripteur correspond à une classification de l'événement. Examples of optional information associated with DVB-SI descriptors are given below short_eventdéscr-iptor: Title and summary of 1 `-event. @ .` .. _ '-content descriptor: this descriptor corresponds to a classification of the event.

Enfin des informations associées aux descripteurs sont privés c'est à dire spécifiques d'un diffuseur. Finally, information associated with the descriptors is private, ie specific to a broadcaster.

A titre d'exemple, un descripteur spécifique au contrôle d'accès peut être utilisé pour décrire des événements couramment appelé PPV (pay per view), exigeant, pour être vu, un paiement de l'utilisateur Des informations plus complètes sur les descripteurs de tables EIT figurent au paragraphe 4.2.4 du rapport ETSI ETR 211. For example, an access control specific descriptor can be used to describe events commonly known as pay-per-view (PPV), requiring, in order to be seen, a payment from the user. More complete information about the descriptors of EIT tables are provided in section 4.2.4 of ETSI ETR 211.

Les informations EIT "schedule" relatives aux programmes d'un même diffuseur peuvent être envoyées par exemple, sur le flux MPEG-2 sur une ou plusieurs tables ou sous tables chacune de ces tables ou sous tables ayant un identifiant de table "table id" (Tid) en fenêtres fixes ou glissants. En fenêtre glissante les données transmises sur la première des tables identifiée par son Tid correspondent au jour courant. The EIT "schedule" information relating to the programs of the same broadcaster can be sent for example on the MPEG-2 stream on one or more tables or sub-tables each of these tables or sub tables having a table identifier "table id" (Tid) in fixed or sliding windows. In a sliding window, the data transmitted on the first of the tables identified by its Tid correspond to the current day.

En fenêtre fixe les données transmises sur la première des tables identifiée par son Tid correspondent au premier jour du mois. In fixed window the data transmitted on the first of the tables identified by its Tid correspond to the first day of the month.

La norme DVB-SI recommande que les événements soient transmis dans l'ordre chronologique. Les tables des différents diffuseurs sont diffusées périodiquement, avec des fréquences de répétition dont les minima.-'sont fixés- au-paragraphe 4.4 de lariorrmé' ETR 211.. 11e recommande également que la descriZ des événémeïts soit organisée en sections -comportant chacune un maximum de 4096 octets avec au minimum une section par période de trois heures de programme. Huit sections forment un segment. Une sous table ne comporte pas plus de 32 segments, soit 256 sections au total. The DVB-SI standard recommends that events be transmitted in chronological order. The tables of the different broadcasters are broadcast periodically, with repetition frequencies, the minimums of which are set in paragraph 4.4 of the ETR 211 schedule. It also recommends that the descriptions of the events should be organized into sections each containing one maximum of 4096 bytes with at least one section per three hour program period. Eight sections form a segment. A sub-table has no more than 32 segments, or 256 sections in total.

On entend par application un logiciel permettant d'exécuter des fonctions, par exemple de recherche et de présentation d'informations. Les applications de guide de programme (connues aussi sous le nom d'EPG pour Electronic Program Guide) sont installées sur des décodeurs qui disposent de peu de mémoire. Aussi il n'est pas possible de récupérer l'ensemble des informations d'un seul coup et de les mémoriser avant de les parcourir. La solution de saisie au vol (catch on the fly) est alors retenue. Cette solution consiste à ne récupérer sur le flux de données diffusées que l'information nécessaire pour une application donnée, en fonction de l'application et des paramètres de cette application. Par exemple si un spectateur souhaite savoir ce qui sera diffusé le jour courant sur une chaîne, à partir de 20 heures, seules ces informations seront recherchées sur le flux, mémorisées et exploitées pour être présentées de façon ordonnée et compréhensible pour le spectateur. De ce fait la quantité de mémoire utilisée est réduite. En revanche, le temps d'accès à de nouvelles informations est long puisqu'il faut attendre que les informations recherchées soient diffusées, recueillies et traitées. L'exploitation des requêtes du spectateur est alors très ralentie. Ce choix a également amené à ne _pas utiliser les tables dë#f-nies par la normes DV1=1SI, mais des.tables privées plus légères que les "EIT s.ched#le". By application is meant software for performing functions, for example search and presentation of information. Program Guide Applications (also known as EPG for Electronic Program Guide) are installed on decoders that have little memory. Also it is not possible to recover all information at once and memorize them before browsing. The catch-on-fly solution is then retained. This solution consists of recovering only the information necessary for a given application on the stream of data broadcast, depending on the application and the parameters of this application. For example if a viewer wants to know what will be broadcast on the day on a channel, from 20 hours, only this information will be searched on the stream, stored and exploited to be presented in an orderly and understandable for the viewer. As a result, the amount of memory used is reduced. On the other hand, it takes a long time to access new information since it is necessary to wait for the information sought to be disseminated, collected and processed. The exploitation of the requests of the spectator is then very slowed down. This choice also led to not using the tables defined by the DV1 = 1SI standards, but private tables lighter than the "EITs s.ched #".

_ :On voit maintenant apparaître des- décodeurs appelés aussi "set top box, STB) " dotés d'une mémoire limitée, par exemple 8 Mega-octets et il devient possible de mémoriser des données relatives aux programmes et de les exploiter pour délivrer rapidement les informations souhaitées, par exemple par un téléspectateur. _: We now see decoders also called "set top box, STB)" with a limited memory, for example 8 megabytes and it becomes possible to store program data and use them to deliver quickly the desired information, for example by a viewer.

<B>Brève description de l'invention.</B> <B> Brief description of the invention. </ B>

On constate que malgré la présence d'une capacité mémoire non négligeable, cette capacité est encore largement insuffisante pour stocker toutes les tables d'information sur les événements et que par conséquent il importe de sélectionner les informations que l'on va mémoriser, et de les organiser pour occuper au mieux la place mémoire disponible. L'invention vise donc un procédé de recueil, dans une mémoire, d'informations relatives aux programmes qui permette une utilisation optimale d'une capacité de cette mémoire de recueil. Elle vise à permettre le recueil de ces données en parallèle. Elle vise aussi à organiser cette mémoire en base de données qui soit d'un accès rapide et facile. On veut dire par là que la présentation au spectateur des données les plus couramment recherchées ne nécessite que peu d'instructions, ceci en raison de la façon dont la base est organisée. Dans un mode préféré de réalisation, le procédé selon l'invention permet d'une part de détecter très rapidement qu'une information stockée en mémoire n'est pas à jour et d'autre part de la corriger. We note that despite the presence of a significant memory capacity, this capacity is still largely insufficient to store all information tables on events and therefore it is important to select the information that we will memorize, and organize them to better occupy the available memory space. The invention therefore relates to a method of collecting, in a memory, information relating to the programs which allows an optimal use of a capacity of this collection memory. It aims to allow the collection of these data in parallel. It also aims to organize this memory into a database that is quick and easy to access. This means that the presentation of the most commonly searched data to the viewer requires little instruction, because of the way the database is organized. In a preferred embodiment, the method according to the invention makes it possible, on the one hand, to detect very quickly that information stored in memory is not up to date and, on the other hand, to correct it.

A ;toutes ces ---fins, l'invention est ré-#1âtive à un--,, pVocédé de construction d'une base de@---@ddnnées relativë --à des information d'événements- diffusées périodiquement sous forme d'un flux de données par un ou plusieurs fournisseurs de services dans lequel a) on constitue un fichier de différents services identifiés susceptibles de diffuser des informations d'événement, b) on extrait et on stocke temporairement une partie au moins d'une série d'informations sur les événements diffusés par chaque service, c) on sélectionne pour chaque événement les informations que l'on souhaite stocker pour une longue durée, d) on détermine le nombre d'ôctets contenus dans les informations sélectionnées pour chaque événement ainsi que la somme de ces quantités d'informations pour l'ensemble des événements de chaque service, e) on recherche une zone d'adresses mémoire de taille suffisante pour y stocker de façon non fragmentée toutes les informations sélectionnées relatives à tous les événements d'un premier service les uns à la suite des autres, f) on recopie dans les zones d'adresses non fragmentées trouvées à l'étape e) chacun des événements du premier service les uns à la suite des autres, g)on complète le fichier des services par l'adjonction, dans une fiche de ce fichier correspondant audit premier service d'un pointeur donnant l'adresse du premier événement de ce service, h) on recommence les étapes d) à g) pour chacun des services du fichier des services, i) on efface de la mémoire les informations extraites-<B>à</B> l'étape.b) . For all these purposes, the invention is directed to a method of constructing a database of events relating to periodic event information. form of a data stream by one or more service providers in which a) a file of different identified services is generated capable of broadcasting event information; b) extracting and temporarily storing at least a portion of a series of information on the events broadcast by each service, c) for each event, the information that is to be stored for a long duration is selected, d) the number of octets contained in the information selected for each event, and that the sum of these quantities of information for the set of the events of each service, e) one looks for a zone of addresses memory of sufficient size to store there in an unfragmented way all the selected information relating to all the events of a first service one after the other, f) is copied in the non-fragmented address areas found in step e) each of the events of the first service one after the other others, g) complete the file services by the addition, in a file of this file corresponding to the first service of a pointer giving the address of the first event of this service, h) we repeat steps d) to g) for each of the services in the services file, i) delete the extracted information- <B> at </ B> step.b).

__ De préférence, on complète l'étape d) #en_Ï#énant un conpEe du nombre d'événements pour déf finir la place mémoire nécessaire à la création d'un tableau de pointeurs donnant chacun l'adresse du début d'un événement de ce service, on complète l'étape e) en recherchant également un autre groupe d'adresses mémoire pour y loger le tableau de pointeurs dont chaque pointeur donne l'adresse du début d'un événement, et enfin lors de l'étape f) on inscrit dans le tableau des pointeurs, pour chaque événement, l'adresse du début des informations relatives à cet événement. Preferably, step d) is completed by having a count of the number of events to clear the memory space necessary for the creation of a table of pointers, each giving the address of the beginning of an event. this service, we complete step e) by also looking for another group of memory addresses to house the array of pointers where each pointer gives the address of the beginning of an event, and finally in step f) in the table of pointers, for each event, the address of the beginning of the information relating to this event is entered.

Lorsque les opérations a) à i) ci-dessus décrites sont terminées, on dispose en mémoire de l'information utile à un téléspectateur pour connaitre par service les événements auxquels il peut avoir accès, et sélectionner ceux qui l'intéressent. Il sera vu plus loin qu'il lui est possible aussi de réaliser facilement une sélection parmi des événements de plusieurs services, ces événements ayant une qualité commune identifiable au moyen des informations sur les événements, par exemple une information par genre d'événement, films, sports, variétés. When the operations a) to i) described above are completed, the information useful to a viewer is available in memory to know by service the events to which he can have access, and select those which interest him. It will be seen later that it is also possible to easily make a selection among events of several services, these events having a common quality identifiable by means of the information on the events, for example information by type of event, films , sports, varieties.

La place occupée par les informations sélectionnées est minimum puisque l'on a ôté des informations reçues toutes les informations non directement utiles au téléspectateur ou à une application pour faire des recherches ou des sélections parmi les événements. En addition aux informations propres aux événements on utilise pour l'exploitation de ces informations uniquement les pointeurs à raison de un pointeur par événëment. The place occupied by the selected information is minimal since information received has been removed from all information not directly useful to the viewer or to an application for searching or selecting among the events. In addition to the information specific to the events one uses for the exploitation of this information only the pointers with one pointer by event.

On remarque que, par exemple en envi-r-ônrèment JAVA -.on-,-à- une paire de poignées, correspondant l'une à une adresse logique et l'autre à l'adresse physique. Selon l'invention on a une seule adresse ou pointeur par service ou dans le cas où l'on a créé un tableau de pointeurs par événement, une seule adresse ou pointeur par évènement. Les avantages de ce tableau de pointeurs, consommateur d'un peu de mémoire apparaîtront plus tard, lors de la description d'un mode d'utilisation de la mémoire. On gagne donc aussi la place mémoire correspondant dans le cas le plus défavorable à une adresse par événement. It will be noted, for example, that JAVA -.on, for example, has a pair of handles, one corresponding to a logical address and the other to the physical address. According to the invention there is only one address or pointer per service or in the case where one has created a table of pointers per event, a single address or pointer per event. The advantages of this table of pointers, consumer of a little memory will appear later, when describing a mode of use of the memory. So we also gain the corresponding memory space in the worst case to one address per event.

On remarque aussi que les opérations a) à i) peuvent être exécutées de façon différente sans que le résultat final soit changé. Ainsi par exemple on peut ne recueillir que les informations sur les événements relatives à un seul service, traiter ces informations selon les étapes a) à i) à l'exception de l'étape h), puis recommencer le même traitement pour chacun des autres services. L'avantage de cette dernière solution est que le volume instantané de mémoire nécessaire est moindre, ce qui peut être utile. L'inconvénient de cette dernière façon de faire est que l'on ne dispose pas dès le départ de l'information quant à tout le volume nécessaire au stockage des informations. We also note that the operations a) to i) can be executed in a different way without the final result being changed. For example, only event information for a single service can be collected, process this information according to steps a) to i) with the exception of step h), and then repeat the same treatment for each of the others. services. The advantage of this latter solution is that the instantaneous volume of memory needed is less, which can be useful. The disadvantage of this last way of doing things is that we do not have information from the outset as to the total volume needed to store the information.

De préférence les fiches individuelles relatives à chaque service sont chaînées, cela veut dire que chaque fiche contient un pointeur donnant l'adresse d'un service suivant, une dernière fiche ayant un pointeur donnant l'adresse d'une première fiche. Dans le mode préféré de réalisation les fiches individuelles rela-tivës- à chaque serviéë :: sont doublement chaînées. Cela veut dire que cha#mLe-L`_f-iche contën't-- en outre un pointeur donnant l'adresse d'un service précédant une première fiche ayant un pointeur donnant l'adresse d'une dernière fiche. De la sorte on peut parcourir la liste des services dans un sens croissant ou décroissant. Preferably the individual records relating to each service are chained, this means that each record contains a pointer giving the address of a next service, a last record having a pointer giving the address of a first record. In the preferred embodiment the individual cards relating to each service are doubly linked. That is to say that each of the messages contains a pointer giving the address of a service preceding a first form having a pointer giving the address of a last form. In this way we can browse the list of services in an increasing or decreasing direction.

Ainsi dans le mode préféré de réalisation chaque fiche de serveur contient trois pointeurs, un pointeur donnant l'adresse du premier événement du service, un pointeur donnant l'adresse du début de la fiche du service suivant et un pointeur donnant l'adresse du début de la fiche du service précédant. Thus in the preferred embodiment each server sheet contains three pointers, a pointer giving the address of the first event of the service, a pointer giving the address of the beginning of the record of the next service and a pointer giving the address of the beginning. the previous service record.

Dans un mode avantageux de réalisation, on simplifie la mise à jour des données de la façon suivante. Tout d'abord il est nécessaire, pour ce mode de réalisation que le ou les fournisseurs de service, ou au moins certains d'entre eux, diffusent une table de mise à jour. Cette table, outre des données d'identification, contient, essentiellement des indicateurs relatifs à des numéros de version du service et de chaque événement. Pour distinguer l'un de l'autre ces numéros de version, les numéros de version du service sont appelés "compteur de version du service" ou "compteur de version" et le numéro de version de l'événement est appelé numéro de version. Evidemment, lorsque les informations sur un événement changent, le numéro de version de l'événement change et aussi en conséquence le compteur de version du service. La comparaison du compteur de version de service actuellement diffusé avec un compteur de version de service précédemment stocké permet de savoir s'il -est nécessaire,-, *ou non (le faire un nouvel enregistrement de données de ce service. Avec le numéro de ve#s.ô_n de l'événetient on sait quelle ou quelles données d'événement ont changé. On évite ainsi de repeigner systématiquement toutes les données. La table privée de mise à jour peut aussi contenir un drapeau de mise à jour générale indiquant qu'un grand nombre de données ont changé, d'où suit un réenregistrement des données de ce service. In an advantageous embodiment, the update of the data is simplified as follows. First of all, it is necessary for this embodiment that the service provider (s), or at least some of them, broadcast an update table. This table, in addition to identifying data, contains, essentially, indicators relating to version numbers of the service and of each event. To distinguish between these version numbers, the version numbers of the service are called the "service version counter" or "version counter" and the version number of the event is called the version number. Obviously, when the information about an event changes, the version number of the event changes and also the version counter of the service. The comparison of the service version counter currently broadcast with a previously stored service version counter allows to know whether it is necessary, -, * or not (make it a new data record of this service. If the event is known, or what event data has changed, it avoids repetition of all the data, and the private update table can also contain a general update flag indicating that a large amount of data has changed, which is followed by a re-registration of the data of this service.

Brève description des dessins L'invention sera maintenant décrite en regard des schémas annexés destinés à illustrer et faciliter la compréhension du procédé selon l'invention et de variantes de réalisation. Dans ces schémas la figure 1 représente une partie d'une base de données constituée selon l'invention, la figure 2 représente la constitution d'une zone compacte d'événements d'une base de données constituée selon l'invention,, la figure 3 représente une autre partie d'une base de données constituée selon l'invention, la figure 4 représente une zone compacte et un tableau associé d'une base de données constituée selon l'invention, la figure 5 illustre l'organisation d'un service dans une base de données constituée selon l'invention, les figures 6 et 7 illustrent des étapes de la constitution d'un fichier des services les figures 8 et 9 illustrent des étapes de la constitution d'une liste chaînée d'événements la @ figure 10 - illustre des étapes" `de - la constitution d'une succession de listes -- éh -nées d' événements les figures 11 à 13 illustrent des étapes de la constitution d'une zone compacte d'événements et d'un tableau de pointeurs associés et l'aspect final de cette zone et des liens associés, les figures 14 à 16 illustrent des étapes de la constitution d'une succession de zones compactes d'événements et de tableaux de pointeurs associés et l'aspect final de cette succession de zones et des liens associés, les figures 17 et 18 illustrent des étapes de la constitution d'un tableau de pointeurs pour une consultation sur critères déterminés et l'aspect final de ce tableau et de ses liens avec les événements sélectionnés. BRIEF DESCRIPTION OF THE DRAWINGS The invention will now be described with reference to the attached diagrams intended to illustrate and facilitate the understanding of the method according to the invention and variant embodiments. In these diagrams, FIG. 1 represents a part of a database constituted according to the invention, FIG. 2 represents the constitution of a compact area of events of a database constituted according to the invention, FIG. 3 represents another part of a database constituted according to the invention, FIG. 4 represents a compact zone and an associated table of a database constituted according to the invention, FIG. 5 illustrates the organization of a Service in a database constituted according to the invention, Figures 6 and 7 illustrate steps of the constitution of a services file Figures 8 and 9 illustrate steps of the constitution of a chain of events list the @ FIG. 10 illustrates steps in the constitution of a succession of lists of events. FIGS. 11 to 13 illustrate steps in the constitution of a compact event area and a table. associated pointers and the final appearance of this zone and the associated links, FIGS. 14 to 16 illustrate steps of the constitution of a succession of compact zones of events and associated pointer arrays and the final aspect of this succession of zones and associated links, figures 17 and 18 illustrate steps of the constitution of a table of pointers for a consultation on specific criteria and the final aspect of this table and its links with the selected events.

Dans les figures les mêmes éléments portent le même numéro de référence éventuellement associé avec un indice prime ou seconde s'Ll s'agit du même élément dans une phase de construction. Description d'un mode de réalisation de l'invention. In the figures the same elements carry the same reference number possibly associated with a prime index or second index if it is the same element in a construction phase. Description of an embodiment of the invention

Un exemple de système destiné à réaliser le procédé selon l'invention va être maintenant décrit. Le système qui va être décrit est composé de quatre modules distincts Un moteur d'acquisition de tables d'informations sur les événements SI (EIT schedule) - un module analyseur de tables (EIT) - un module gestionnaire de mémoire - un module de consultation de mémoire La` fonction de chacun de ces mddulès en relâtion avec les autres modules sera touE--`cTT#ibord décrite" puis chacun des modules sera décrit de façon plus détaillée. An example of a system for carrying out the method according to the invention will now be described. The system that will be described is composed of four separate modules An acquisition engine of information tables on events SI (EIT schedule) - a module analyzer tables (EIT) - a module memory manager - a consultation module The function of each of these modules in relation to the other modules will be described as described and then each of the modules will be described in more detail.

Le module moteur d'acquisition de table SI (EIT schedule). fait l'acquisition des EITs de l'ensemble des services afin que les données soient disponibles auprès des applications le plus rapidement possible. Pour ce faire le chargement en parallèle est privilégié. The SI table acquisition engine module (EIT schedule). Acquires the EITs from all services so that data is available to applications as quickly as possible. To do this parallel loading is preferred.

Le module analyseur de table est chargé de parcourir les tables EITs et d'en extraire les données pertinentes qui sont formatées pour être stockées en mémoire. The table analyzer module is responsible for traversing the EIT tables and extracting relevant data that is formatted for storage in memory.

Le module de gestion de mémoire est chargé de la gestion du stockage des unités élémentaires représentant un programme ainsi que de l'organisation de la mémoire. The memory management module is responsible for managing the storage of the elementary units representing a program as well as the organization of the memory.

Le module de consultation de mémoire est chargé de donner aux applications une 'bibliothèque de fonctions destinées à parcourir la base de données d'événements et d'établir des listes triées suivant certains critères. The memory lookup module is responsible for providing applications with a library of functions for browsing the event database and establishing lists sorted according to certain criteria.

La mise en #uvre de ces quatre éléments au sein d'un décodeur ou "set top box" permet d'avoir un outil complet garantissant l'accès à l'ensemble des informations SI d'un bouquet tout en reposant sur le standard DVB-SI. Chacun de ces quatre éléments sera examiné plus en détail ci-après. The implementation of these four elements within a decoder or "set top box" allows to have a complete tool ensuring access to all information SI of a bouquet while relying on the DVB standard -IF. Each of these four elements will be discussed in more detail below.

Le module moteur d'acquisition des tables EIT gère l'acquisition sur le flux des tables _EIT "Schedule",,# leur anâ-lysë (via l'analyseur)leur stockage .en mémoire via le gestionnaire de mémô@irë: Ce moteur.: gére également, selon une caractéristique avantageuse de l'invention, la mise à jour des informations contenues dans la mémoire lorsque des modifications à ces informations ou de nouveaux événements sont transmis sur le flux. The acquisition engine module of the EIT tables manages the acquisition on the flow of the tables _EIT "Schedule" ,, # their anâ-lysë (via the analyzer) their storage .in memory via the memo @ irë manager: This engine .: also manages, according to an advantageous characteristic of the invention, the updating of the information contained in the memory when changes to this information or new events are transmitted on the stream.

Les tables EIT "Schedule" peuvent représenter un débit important de données en fonction du nombre d'événements et du nombre de services présents. Il s'ensuit que, surveiller en permanence l'ensemble des tables EIT pour détecter des évolutions, représente un temps relativement long. EIT tables "Schedule" can represent a large data flow depending on the number of events and the number of services present. As a result, continuously monitoring all EIT tables to detect changes is a relatively long time.

Pour raccourcir le temps de détection avantageusement, l'acquisition des données des tables EIT Schedule est basée sur l'utilisation d'une table privée intitulée GUT (Guide Update Table). Cette table est établie essentiellement à partir des tables de description de service (SDT). Ces tables donnent pour chaque service présent sur ,un flux de transport des informations générales sur le service, en particulier une identification du service et un numéro de version (version number) sur 5 bits qui est augmenté de 1 chaque fois qu'il y a une modification dans une sous table représentant un service. Elle est complétée ensuite par un compteur de version (service counter) qui est modifié chaque fois qu'il est détecté que les informations relatives à un événement ont été changée. Ce compteur de version est tiré d'une table d'information sur les événements (EIT) qui comporte un numéro de version sur 5 bits (version number), qui est incrémenté de 1 lorsque les informations relatives à un événement dnt été changéés. To shorten the detection time advantageously, the data acquisition of the EIT Schedule tables is based on the use of a private table called Guide Update Table (GUT). This table is established primarily from service description tables (SDTs). These tables give for each service present on, a transport flow general information on the service, in particular a service identification and a version number (version number) on 5 bits which is increased by 1 each time there is a modification in a subtable representing a service. It is then completed by a service counter, which is modified whenever it is detected that the information relating to an event has been changed. This version counter is derived from an Event Information Table (EIT) that has a 5-bit version number, which is incremented by 1 when information about an event has been changed.

En conséquence, la table GUT contient=ia.-.lîste de tous` les services contenant des événements présents sur le flux de transport des tables de données (transport streams). Ces services contenant des événements sont identifiés par leurs identifications de service (service_id). Cette table GUT permet de surveiller les évolutions de l'ensemble des événements présents sur le flux de transport en ne surveillant que cette seule table. A chaque service présent dans la table GUT est associé, comme indiqué ci-dessus, un compteur de version du service (service counter), un numéro de version (version number), ainsi qu'un drapeau de mise à jour général (full update_counter). As a result, the GUT table contains the list of all services containing events on the transport streams. These services containing events are identified by their service identifications (service_id). This GUT table makes it possible to monitor the evolutions of all the events present on the transport stream by only monitoring this single table. Each service in the GUT table is associated, as indicated above, with a service counter, a version number, and a full update_counter flag. ).

Lorsque les événements d'un service donné sont modifiés sur le flux, il y a changement du compteur de version (service çounter) du service correspondant et du numéro de version (version number) de la table GUT. When the events of a given service are modified on the stream, there is a change of the version counter (service çounter) of the corresponding service and the version number of the GUT table.

Lorsque des services contenant des événements sont ajoutés sur le flux, cils sont ajoutés dans la table GUT et le numéro de version (version number) de la table GUT est changé. Les services retirés du flux de transport ne disparaissent de la table GUT que lors d'une mise à jour générale de cette table. (modification du drapeau de mise à jour générale "full update_counter"). When services containing events are added to the stream, eyelashes are added to the GUT table and the version number of the GUT table is changed. Services removed from the transport stream do not disappear from the GUT table until a general update of this table. (change of the general update flag "full update_counter").

Lorsque l'ensemble (ou une grande partie) des services sont modifiés, il est préférable d'indiquer ce changement par une modification de la valeur du "full update_counter" (bien qu'il soit possible de ne modifier que le numéro de version de la table (version number), ceci pour des raisons -.de performances. When the set (or a large part) of the services are modified, it is better to indicate this change by modifying the value of the "full update_counter" (although it is possible to modify only the version number of the table (version number), this for reasons-performances.

Afin d'optimiser le temps de chargemërit-` des données"'des tables d'informations sur les services (EIT) présentes sur le flux, plusieurs requêtes de tables EIT sont gérées en parallèle. On distingue le nombre de requêtes utilisées pour une acquisition complète des données présentes sur le flux lors d'un premier chargement ou après modification du drapeau de mise à jour général (full update_counter) du nombre de requêtes utilisées pour des mises à jour partielles des données de la mémoire. L'application fixera ces valeurs au moteur d'acquisition de données. In order to optimize the data loading time of the Service Information Tables (EITs) present on the flow, several EIT table requests are managed in parallel.The number of requests used for an acquisition is distinguished. complete data present on the flow during a first load or after modification of the general update flag of the number of requests used for partial updates of the data of the memory The application will set these values to the data acquisition engine.

La machine d'état du module moteur d'acquisition de données est séquencée par des pilotes de démultiplexeurs. The state machine of the data acquisition engine module is sequenced by demultiplexer drivers.

Le fonctionnement général est géré par deux drapeaux internes : un drapeau commun sur le type d'acquisition, intitulé "EngineMode" et un drapeau pour chaque instance de filtre, intitulé EngineState. The general operation is managed by two internal flags: a common flag on the type of acquisition, called "EngineMode" and a flag for each instance of filter, called EngineState.

Le drapeau commun<I>sur</I> le type d'acquisition, intitulé "EngineMode" a un état initial appelé "engineModeInit" "engineModeInit" correspond à la première acquisition après l'initialisation. Un autre état "engineModeBuild" correspond à un chargement complet de la mémoire suite à une modification complète de la diffusion des tables EITs, détectée par une nouvelle valeur du drapeau de mise à jour générale "full update çounter" dans la table privée GUT sur le flux par le fournisseur du service. Un autre état de ce drapeau intitulé "enginemodeUpdate" correspond à une mise à jour de la mémoire suite à une modification des données de certains services, cette modification étant détectée @' par un nouveau numéro de-.7' version (version number) de la table GUT alors que lje#_dr_apeau de mise, -à jour générale (full update çounter)* ne change pas de valeur et par des nouvelles valeurs de compteur de service "service counter" aux niveaux de descripteurs de service "service descriptors" contenus dans la table privée GUT transmise sur le flux. The common flag <I> on </ I> the type of acquisition, entitled "EngineMode" has an initial state called "engineModeInit" "engineModeInit" is the first acquisition after initialization. Another "engineModeBuild" state corresponds to a complete memory load after a complete modification of the EITs broadcast, detected by a new value of the "full update" general update flag in the GUT private table on the flow by the service provider. Another state of this flag entitled "enginemodeUpdate" corresponds to an update of the memory following a modification of the data of certain services, this modification being detected @ 'by a new number of-.7' version (version number) of the GUT table while the "update update" * does not change value and new "service counter" service counter values at the service descriptor levels contained in the service descriptors in the GUT private table passed on the stream.

Le drapeau pour chaque instance de filtre, intitulé "EngineState" a un état initial appelé "engineStateI-nit": "engineStateInit" correspond à un état initial précédant la pose d'une requête de filtrage. Un état "engineStateInAcq" de ce drapeau correspond à la réception d'un événement suite à une requête de filtrage. Un état "engineStateRetry" de ce drapeau correspond à un traitement de nouvel essais suite à un échec de chargement Les EIT schedule peuvent être envoyées sur le flux MPEG-2 sur plusieurs tables ou sous-tables ayant des identifications de table, table id (plusieurs tables EIT pour un même service). The flag for each filter instance, titled "EngineState", has an initial state called "engineStateI-nit": "engineStateInit" is an initial state preceding a filtering request. An "engineStateInAcq" state of this flag corresponds to the reception of an event following a filtering request. An "engineStateRetry" state of this flag corresponds to a retry processing due to a load failure. The EIT schedule can be sent to the MPEG-2 stream on multiple tables or sub-tables with table identifications, table id (multiple). EIT tables for the same service).

Les identités, tables-id, des tables à charger dépendent du nombre de jours de données à mémoriser dans la mémoire et de la table des segments (selon qu'elle est utilisée en fenêtre fixe ou glissante). The identities, tables-id, tables to load depend on the number of days of data to be stored in the memory and the segment table (depending on whether it is used as a fixed or sliding window).

Si les EIT doivent être récupérées sur plusieurs tables identifiées par leur identification de table Tid, l'ordre de chargement est "Pour le Service id courant Pour le Tid courant Chargement de l'EIT Passage au prochain TableId (Tid) du service courant FiriPour Passage service suivant dans la GUT - @FinPour" Cet ordre correspond à un chargement de toutes les tables d'un service courant avant de passer au chargement du service suivant selon l'ordre définit par la table GUT. If the EITs are to be retrieved from several tables identified by their Tid table identification, the loading order is "For the current service id For the current Tid Loading the EIT Switching to the next TableId (Tid) of the current service Firi for Passage next service in GUT - @FinPour "This order corresponds to a loading of all the tables of a current service before loading the next service according to the order defined by the GUT table.

La norme DVB-SI imposant que les événements soient transmis dans l'ordre chronologique, les événements seront mémorisés dans l'ordre chronologique dans la mémoire. Cet ordre a son importance dans la mesure où une extraction chronologique des différents événements d'une chaîne évite une étape de tri des informations. Ainsi, les événements sont dans la mémoire dans l'ordre logique de leur diffusion. Since the DVB-SI standard requires that events be transmitted in chronological order, the events will be stored in chronological order in the memory. This order is important insofar as a chronological extraction of the different events of a chain avoids a step of sorting the information. Thus, the events are in the memory in the logical order of their diffusion.

Le fonctionnement de l'ordonnanceur d'acquisition du moteur est décrit ci-dessous. Les traitements des cas d'erreur n'apparaissent pas dans cette description. The operation of the engine acquisition scheduler is described below. The processing of the error cases do not appear in this description.

0) Initialisation duimoteur d'acquisition , le drapeau commun sur le type d'acquisition est mis sur son état initial "encqineModeInit". 1- Acquisition de la table guide de l'utilisateur GUT 2- Table guide GUT acquise mémorisation du numéro de version de la table "version number" et du drapeau de mise à jour général "full update_counter" 3- Construction de la liste des services et mémorisation des valeurs de compteur de service "service counter". 0) Initialization of the acquisition engine, the common flag on the type of acquisition is set to its initial state "encqineModeInit". 1- Acquisition of the GUT user guide table 2- GUT guide table acquired memorization of the version number of the "version number" table and the general update flag "full update_counter" 3- Construction of the list of services and storing the service counter values "service counter".

Tous les services sont marqués "à acquérir. All services are marked "to acquire.

4- Acquisition des tables d'information sur -les événements-'= pour les services marqués 'à acqùérir'. Si on vient de (3), n filtres (-xé=`@ar l'application, ou 10 par défaut) sont utilisés car il s'agit d'une acquisition complète. 4- Acquisition of information tables on events - '= for marked services' to be acces- sible'. If we come from (3), n filters (-xé = `@ ar the application, or 10 by default) are used because it is a complete acquisition.

Si on vient de (7) ou (8), (qui seront décrites ci-après) n filtres (fixé par l'application, ou 3 par défaut) sont utilisés car il s'agit d'une mise à jour. If one comes from (7) or (8), (which will be described below) n filters (set by the application, or 3 by default) are used because it is an update.

Pour chaque table d'information sur les événements EIT, on fait jusqu'à 3 tentatives "retry" en cas d'échec de la première tentative. For each information table on EIT events, up to 3 retry attempts are made if the first attempt fails.

L'acquisition se termine lorsque toutes les EIT ont été acquises (ou échecs après 3 tentatives "retry") pour une EIT ayant un table-id donné. The acquisition ends when all EITs have been acquired (or failed after 3 retry attempts) for an EIT with a given table-id.

Les tables EIT d'information sur les événements EIT non acquises après 3 tentatives "retry" restent marquées "à acquérir". Elles seront donc réacquises lors d'une prochaine version de table GUT, voir ci- dessous. The EIT information tables for EIT events not acquired after 3 retry attempts remain marked "to be acquired". They will be reacquired during a next version of GUT table, see below.

Si toutes les tables à acquérir ont été acquises, on passe en (5) décrit ci-après. Sinon retour en (4)_ pour l'acquisition de la table suivante et le même filtre. 5- Acquisition de la table guide d'utilisateur GUT 6- table guide d'utilisateur GUT acquise Si la table de mise à jour du guide GUT courante a le même numéro de version "version number" et la même valeur de drapeau de mise à jour général "full update_counter" qu'une table guide d'utilisateur GUT précédente, on revient en (5) après par exemple 30 secondes (sondage de la table GUT toutes les 30 secondes.). - <I>Y</I> .e. Si-*'la table guidè d'utilisateur GUT côürânte a lé-,---même numéro de version "version number"#@ .-'une valeurs de drapeau de mise à jour général "full update_counter", différente de celui d'une table précédente on passe en (7) décrit ci-après. If all the tables to be acquired have been acquired, go to (5) described below. Otherwise return to (4) _ for acquisition of the next table and the same filter. 5- Acquiring the GUT user guide table 6- GUT user guide table acquired If the current GUT guide update table has the same version number version and the same update flag value. general day "full update_counter" than a previous GUT user guide table, one returns in (5) after for example 30 seconds (survey of the table GUT every 30 seconds.). - <I> Y </ I> .e. If - * 'the GUT user guide table has the -, --- same version number version # # @ .-' a general update flag values "full update_counter", different from the a previous table is passed to (7) described below.

Si la valeur du drapeau de mise à jour général "full update_counter" de la table guide d'utilisateur GUT courante, est différente de celle d'une table précédente, on passe en (8) décrit plus loin. If the value of the general update flag "full update_counter" of the current GUT user guide table is different from that of a previous table, go to (8) described below.

7- On met à jour les service_counter des services. 7- We update service_counter services.

On complète la liste des services si de nouveaux services apparaissent en fin de GUT. The list of services is completed if new services appear at the end of the GUT.

Si au moins un "service counter" est différent du précédent ou si un nouveau service est apparu dans la liste, les services correspondants sont marqués "à acquérir", et l'on revient en (4). Il est rappelé que les EIT précédemment non acquises après tentative sont déjà marquées 'à acquérir'. If at least one "service counter" is different from the previous one or if a new service appeared in the list, the corresponding services are marked "to acquire", and one returns in (4). It is recalled that previously unrecovered EITs are already marked 'to be acquired'.

8- Reconstruction de la liste des services et mémorisation des "service counter". 8- Reconstruction of the list of services and memorization of the "service counter".

Tous les services sont marqués "à acquérir". La mémoire EPG n'est pas réinitialisée Retour en (3). All services are marked "to acquire". The EPG memory is not reset Back to (3).

On peut résumer l'organigramme qui vient d'être décrit en disant que après une étape d'initialisation - on crée une table de suivi des mises à jour listant les services et leur associant un numéro de version de service "service counter" et un numéro de version "version number" des événements. We can summarize the flowchart just described by saying that after an initialization step - we create an update tracking table listing the services and associating them with a "service counter" service version number. version number "version number" of the events.

- on acquiert les tables d'information sur les événements. correspondant aux services figurant dans la table de mise à jour GUT---- - on renouvelle périodiquement l' acque:i:L:.Qh de la table de mise à jour GUT, et on compare la table courante à la table précédente, - si la table est inchangée et que tous les services ont été acquis précédemment on renouvelle l'acquisition de la table GUT jusqu'à ce que l'on remarque un changement avec la table GUT précédente, - si la table GUT est changée ou si des tables d'information sur les événements n'ont pas été acquises on fait les acqusitions nécessaires pour compléter les informations sur les services, - si un grand nombre de changements sont intervenus, on refait une acquisition complète de la table GUT et des tables d'information sur les événements. - we acquire the tables of information on the events. corresponding to the services appearing in the update table GUT ---- - periodically renewing the acque: i: L: .Qh of the update table GUT, and comparing the current table to the previous table, - if the table is unchanged and all the services have been acquired previously, the acquisition of the GUT table is renewed until a change is made with the previous GUT table, - if the GUT table is changed or if event information tables have not been acquired the necessary acquisitions are made to complete the information on the services, - if a large number of changes have occurred, we redo a complete acquisition of the table GUT and the tables d information on events.

Le module analyseur de table d'information sur les programmes EITs sera maintenant examiné. The EITs Information Table Analyzer module will now be examined.

Ce module permet l'analyse des descripteurs contenus dans une section EIT. Le module Engine demande l'analyse section par section dans l'ordre chronologique. This module allows the analysis of the descriptors contained in an EIT section. The Engine module requests section-by-section analysis in chronological order.

Le module moteur d'acquisition Engine passe à l'analyseur une section d'EIT et reçoit en retour les informations sur les événements contenus dans cet EIT. The engine acquisition engine module passes to the analyzer an EIT section and receives feedback on the events contained in this EIT.

Trois types d'informations sont extraites pour un événement donné, les informations DVB-SI standard hors descripteur, les informations associées aux descripteurs DVB-SI et les informations associées aux descriteurs privés. - les' informations DVB-SI standard `'hors dëbcripteur sont présentes pour chaque événeme-ft-:-ëlles sont définies par la norme DVB-SI ETS 300 468, en voici une liste pour exemple L'Event Id : Identifiant unique d'un événement pour un service Id donné (une chaîne). Three types of information are retrieved for a given event, standard DVB-SI information out of descriptor, information associated with DVB-SI descriptors and information associated with private descriptors. - the "standard DVB-SI information" out of the box are present for each event - they are defined by the DVB-SI ETS 300 468 standard, here is a list for example The Event Id: Unique identifier of an event for a given Id service (a string).

StartTime : Date de début de diffusion de l'événement (format UTC GMT).  StartTime: Event start date (UTC GMT format).

Duration : Durée de l'événement. FreeCaMode : Critère d'accès à l'événement.  Duration: Duration of the event. FreeCaMode: Criterion for access to the event.

Les informations associées aux descripteurs DVB-SI sont facultatives. Tous les descripteurs facultatifs associés à la norme DVB-SI sont supportés. On peut citer à titre d'exemple short_event descriptor : Titre et résumé de l'événement. The information associated with DVB-SI descriptors is optional. All optional descriptors associated with the DVB-SI standard are supported. For example short_event descriptor: Title and summary of the event.

content descriptor : genre de l'événement. content descriptor: genre of the event.

Les informations associées aux descripteurs privés, une fois spécifiées, n'importe quel descripteur privé peut être supporté per le module d'analyse. A titre d'exemple, un descripteur spécifique au contrôle d'accès est utilisé pour décrire des événements de .type PPV (pay per view). The information associated with the private descriptors, once specified, any private descriptor can be supported by the analysis module. For example, an access control-specific descriptor is used to describe PPV (pay per view) .type events.

Les informations extraites pour chaque événement sont regroupées dans une structure spécifique qui sert de structure d'échange avec le module chargé de la mémorisation des données. on parle alors de cellule d'échange. Chaque cellule d'échange contient l'ensemble des informations correspondant à un événement. Les cellules d'échange varient d'un projet à l'autre selon qu'elles intègrent des données associées à des descripteurs privés ou non. The information extracted for each event is grouped into a specific structure that serves as an exchange structure with the module responsible for storing the data. we then speak of exchange cell. Each exchange cell contains all the information corresponding to an event. The exchange cells vary from one project to another depending on whether they integrate data associated with private descriptors or not.

-- Voici à titre d'exemple quelques does-=`qui peuvent-,t'être associées et retenues pour figurer dans une telle cellule d'échange. - As an example, some of the can- = `who can- be associated with and retained to be included in such an exchange cell.

event_id 2 octets identité de l'événement */ start_time ; /* 5 octets heure de début de l'événement */ eventFlags ; /* 1 octet drapeau pour les événements payants/ content nibble 1 octet (obits pour un premier niveau et 4 bits pour un second niveau) descriptif de genre 1 et 2 */ duration ; /* 3 octets durée de l'événement Parental_rating ; /* 1 octet code d'information pour les parents */ title_id ; /* 2 octets identité du titre */ prise ; /* 4 octets indication de montant/ evtTitleLen ; /* 2 octets longueur du titre en octets */ Certaines information ne figurent qu'à titre conditionnel, l'une des conditions étant que cette information soit contenue dans le descriptif figurant dans la table. On peut citer à titre d'exemple non limitatif ppvSession ; /* 2 octets numéro de cession purchase win ; /* 1 octet fenêtre d'achat*/ evtSummaryLen ; /*longueur en octets du résumé de l'événement*/ - La-' description chu module mémoire de'- données (SICache) sera maintenant effectuée. -"------ La mémoire de données SI (SICache) est chargée de stocker en mémoire les informations extraites des tables d'informations sur les événements EIT. La solution la plus simple pour stocker ces informations serait de mémoriser les sections de chaque table EIT de chaque service. Une telle solution requiert comme expliqué plus haut beaucoup de mémoire, et ne peut être mise en ceuvre dans un environnement embarqué de type STB 8 Mo.  event_id 2 bytes identity of the event * / start_time; / * 5 bytes start time of event * / eventFlags; / * 1 byte flag for paid events / content nibble 1 byte (obits for a first level and 4 bits for a second level) description of genre 1 and 2 * / duration; / * 3 bytes duration of the event Parental_rating; / * 1 byte information code for parents * / title_id; / * 2 bytes title identity * / taken; / * 4 bytes amount indication / evtTitleLen; / * 2 bytes length of the title in bytes * / Some information appears only conditionally, one of the conditions being that this information is contained in the description contained in the table. By way of non-limiting example, we can cite ppvSession; / * 2 bytes transfer number purchase win; / * 1 byte purchase window * / evtSummaryLen; / * length in bytes of the summary of the event * / - The description of the data memory module (SICache) will now be carried out. - "------ The SI (SICache) data memory is responsible for storing the information extracted from the EIT event information tables in memory.The simplest way to store this information would be to store the Each EIT table of each service requires, as explained above, a lot of memory, and can not be implemented in an 8 MB STB embedded environment.

Aussi le module SICache propose une mise en mémoire de façon compacte des informations. Le principe de stockage retenu garantit la compacité des informations, donc l'allocation à l'octet près de ce qui doit être mémorisé. Afin de mettre en #uvre le principe de stockage la mise en mémoire s'effectue en trois étapes. Also the SICache module offers compact storage of information. The storage principle used guarantees the compactness of the information, therefore the allocation to the byte close to what must be memorized. In order to implement the storage principle, storage is done in three steps.

Avant d'exposer la dynamique de construction du cache, rapellons les différents types de données manipulées. La mémoire représente une base de données contenant des services (chaînes), contenant elles mêmes une suite d'événements. Ces notions ont été expliquées plus haut. Before exposing the dynamics of construction of the cache, let us recall the different types of data manipulated. The memory represents a database containing services (strings), themselves containing a sequence of events. These notions have been explained above.

L'ensemble de la base de données est donc constitué d'un nombre donné de couples, informations sur les services - informations sur les événements de ces services, ou dit d'une façon abrégée couples services/listes d'événements. Un schéma succinct de ces couples, service - liste d'événements, est représenté figure 1. -A chaque service numérotés 1p, p allant- de 1 à @ixn' nombre entier n représentant le rtô'é@_ de services, 11, 12, 1p 1n est associée une zone mémoire compacte 21, 22, 2p 2n. The entire database is therefore made up of a given number of couples, information about the services - information about the events of those services, or said in an abbreviated way services / event lists. A brief diagram of these pairs, service - list of events, is shown in FIG. 1. -A each service numbered 1p, p ranging from 1 to @ixn 'integer n representing the number of services, 11, 12, 1p 1n is associated with a compact memory zone 21, 22, 2p 2n.

Chaque élément service contient trois pointeurs, deux pointeurs dont l'un donne l'adresse d'un élément service précédent et l'autre l'adresse d'un élément service suivant, afin de définir une liste doublement chaînée entre les différents services, un troisième pointeur donne l'adresse du début d'une zone de données contenant les informations propres à la description des événements de ce service. Naturellement il serait possible de n'avoir qu'un pointeur donnant l'adresse d'un service par exemple un service suivant au lieu des deux pointeurs précédent et suivant. Il sera vu plus loin que ce choix de deux pointeurs facilite le parcours des services sans consommer beaucoup de place mémoire. outre ces trois pointeurs chaque élément service contient des informations appelées ServiceInfo". Ufi exemple d'information figurant dans ServiceInfo est donné ci-après: OnId identité initiale du réseau. du service TsId identité du flux de transport (Transport Stream Id) du service ServId identité du service (Service Id) ServNum Numéro du service ServKey Clé du service nbOfEvent Nombre d'événements que contient ce service signature Signature du service *buildEvents Pointeur vers u né-=-- --liste chaînée d'événements (lors de la construction sinon null) sizeOfBuild : Taille en octets de la totalité des événements mis bout à bout. Each service element contains three pointers, two pointers, one of which gives the address of a previous service element and the other the address of a next service element, in order to define a doubly-linked list between the different services. third pointer gives the address of the beginning of a data zone containing the information specific to the description of the events of this service. Of course it would be possible to have a pointer giving the address of a service for example a next service instead of the two previous and next pointers. It will be seen later that this choice of two pointers facilitates the journey of services without consuming a lot of memory space. in addition to these three pointers, each service element contains information called ServiceInfo. "The example of information contained in ServiceInfo is given hereafter: OnId initial identity of the service network TsId transport stream identity Transport Id (Transport Stream Id) of the ServId service Service Identity (Service Id) ServNum ServKey Service Number Service Key nbOfEvent Number of events contained in this service Signature service signature * buildEvents Pointer to u ne - = - - chain linked list of events (during build otherwise null) sizeOfBuild: Size in bytes of all events put end to end.

*eventsDataBase base de données d'événements mis bout à bout **events Tableau contenant les pointeurs vers les événements.  * eventsDataBase event database put end-to-end ** events Table containing pointers to events.

La structure de données correspondant à l'événement est composée de deux parties. Une partie contenant des données qui lorsqu'elles figurent sont de longueur (nombre d'octets) constante et une partie dont la longueur est variable d'un événement à l'autre. Certaines des données de longueur constante dites à ce stade facultatives peuvent être présentes ou non. De même, les données de longueur variable peuvent être présentes ou non. The data structure corresponding to the event is composed of two parts. A part containing data which, when present, is of constant length (number of bytes) and a part whose length varies from one event to another. Some of the so-called optional constant length data may or may not be present. Similarly, the variable length data may or may not be present.

Des exemples de données de longueur constante qui figurent dans tous les événements et qui pour cette raison sont dites communes à tous les événements .sont données ci-après event_id 2 octets identité de l'événement */ start_time ; /* 5 octets heure de début de l'événement */ eventFlags ; /* 1 octet drapeau pour les événements payants/ content nibble ; /* 1 octet (obits pour un premier niveau et 4 bits pour un second niveau) descriptif` de genre 1 et 2 */ duration ; /* 3 octets durée de l'-éitézrément Parental_rating ; /* 1 octet code d'information pour les parents */ evtTitleLen ; /* 2 octets longueur du titre en octets */ evtSummaryLen ; /*longueur en octets du résumé de l'événement. Certaines données facultatives ont une longueur constante mais ne figurent pas nécessairement. Examples of constant length data that appear in all events and for this reason are said to be common to all events are given below event_id 2 bytes event identity * / start_time; / * 5 bytes start time of event * / eventFlags; / * 1 byte flag for paid events / content nibble; / * 1 byte (obits for a first level and 4 bits for a second level) description of genre 1 and 2 * / duration; / * 3 bytes duration of the element Parental_rating; / * 1 byte information code for parents * / evtTitleLen; / * 2 bytes length of title in bytes * / evtSummaryLen; / * length in bytes of the summary of the event. Some optional data have a constant length but do not necessarily appear.

Si par exemple un événement est de type ppv (pay per view) des données supplémentaires seront associées à cet événement telles que son prix, sa référence etc. If for example an event is of type ppv (pay per view) additional data will be associated with this event such as its price, its reference etc.

title_id ; /* 2 octets identité du titre */ price ; /* 4 octets indication de montant/ ppvSession ; /* 2 octets numéro de cession */ purchase win ; /* 1 octet fenêtre d'achat. Sans surprise, on retrouve dans les exemples de données communes et de donnéés facultatives des données déjà citées plus haut lors de la description du moteur d'extraction. Les données facultatives sont celles qui ne sont présentes sur le flux que si certaines conditions sont remplies. Le moteur d'extraction n'extrait ces données du flux que si les conditions sont remplies, ce qui fait qu'au niveau de la mémoire de données, ces .données facultatives peuvent ou non être présentes.  title_id; / * 2 bytes title identity * / price; / * 4 bytes amount indication / ppvSession; / * 2 bytes number of assignment * / purchase win; / * 1 byte purchase window. Unsurprisingly, in the examples of common data and optional data, we find the data already mentioned above in the description of the extraction engine. Optional data is data that is only present on the stream if certain conditions are met. The extraction engine extracts these data from the stream only if the conditions are met, so that at the data memory level, these optional data may or may not be present.

Les données de longueur variable qui peuvent ou non être présentes sont par exemple le titre de l'événement ou son résumé qui comportent un nombre variable de caractères et sont donc représentées par ce même nombre variable d'octets. The variable length data that may or may not be present are for example the title of the event or its summary which comprise a variable number of characters and are thus represented by this same variable number of bytes.

Dans le mode préféré de réalisÉî#@-an=` de l'invention chaque zone compacte 2 comporte comme représenté en figure 2, une première sous zone compacte 3 contenant les données communes à tous les événements, cette première sous zone 3 qui groupe des données toujours présentes de longueur constante est elle même de capacité constante. Immédiatement adjacente à cette première sous zone vient une seconde sous zone 4 groupant toutes les données facultatives de longueur constante et enfin une troisième sous zone 5 immédiatement adjacente à la seconde sous zone groupant toutes les données de longueur variable. In the preferred embodiment of the invention, each compact zone 2 comprises, as represented in FIG. 2, a first compact sub-zone 3 containing the data common to all the events, this first sub-zone 3 which groups always present data of constant length is itself of constant capacity. Immediately adjacent to this first subfield is a second subfield 4 grouping all optional data of constant length and finally a third subfield 5 immediately adjacent to the second subfield grouping all data of variable length.

Afin de rendre l'utilisation de la base la plus souple possible, les données de petite taille, par exemple les services nécessitant une capacité de 20 octets environ, sont chaînées les unes aux autres et les données de plus grandes taille par exemple celles relative aux événements dont la taille est souvent supérieure à 120 octets 'sont stockées de façon compacte, c'est à dire dans une zone mémoire continue. Les éléments service sont doublements chaînés les uns aux autres. Ce double chaînage assure une navigation plus rapide entre les différents services. Une représentation schématique de ce double chaînage est représentée figure 3 pour un nombre n égal à 4. Chaque service 11, 12, 13, 1n = 14 est lié par deux pointeurs matérialisés par des flèches 6 et 7 au service suivant et au service précédent respectivement. Sur la figure 3 chaque flèche 6 est référencée par le numéro 6 suivi du numéro du service suivant, ainsi la flèche 61-2 symbolise le pointeur du sérvicë 11 désignant le service 12, et le dernier servi cé@@-4--ây-ant un pôiriteur 611 désignant le premier service 11. De même chaque flèche 7 est référencée par le numéro 7 suivi du numéro du service précédant, ainsi la flèche 713 symbolise le pointeur du service 14 désignant le service 13, et le premier service ayant un pointeur 714 désignant le dernier service 14. In order to make the use of the base as flexible as possible, the small data, for example the services requiring a capacity of approximately 20 bytes, are linked to one another and the larger data, for example those relating to events whose size is often greater than 120 bytes' are compactly stored, i.e. in a continuous memory area. The service elements are doubled chained to each other. This double chaining ensures faster navigation between the different services. A schematic representation of this double chaining is shown in FIG. 3 for a number n equal to 4. Each service 11, 12, 13, 1n = 14 is linked by two pointers represented by arrows 6 and 7 to the following service and to the preceding service respectively . In FIG. 3 each arrow 6 is referenced by the number 6 followed by the number of the following service, thus the arrow 61-2 symbolizes the servic pointer 11 denoting the service 12, and the last serving is the same. A pointer 611 denotes the first service 11. Similarly, each arrow 7 is referenced by the number 7 followed by the number of the preceding service, so the arrow 713 symbolizes the pointer of the service 14 designating the service 13, and the first service having a pointer 714 designating the last service 14.

Les éléments événement sont de grande taille (>120 octets). Aussi afin de ne pas fragmenter la mémoire, il sont chaînés ou rangés bout à bout dans une zone mémoire qui leur a, tout spécialement, été allouée. Pour garder l'information de pointage de chaque événement, des pointeurs les référençant sont également mémorisés dans un tableau adjacent. Un tel tableau 8 est représenté figure 4 avec la zone compacte mémoire événement 2 qui lui est associée. Sur la figure 4 le tableau a été référencé 8p et la zone compacte mémoire 2 a été référencé 2p pour marquer qu'il y a un tableau 8p associé à chaque' zone compacte 2p. Si la zone compacte 2p représentée figure 4 contient des informations sur 5 événements 2p1, 2p2, 2p3 2p5, le tableau 8 contient autant de pointeurs que la zone 2 contient d'événements, dans le cas représenté 5 référencés 8p1 à 8p5 pointant vers le début de chaque événement 2p1 à 2p5 du service 2p. Ce tableau de pointeurs permet l'accès direct aux différents événements du service 2p. I1 y a une correspondance bi univoque entre chaque pointeur épi du tableau 8p et l'adresse du début d'un événement. Par exemple le pointeur numéro 8p5 du tableau 8p pointe vers le cinquième .événement 2p5 du service 2p associé .à- ce tableau 8p. I1 est également créé un lien éntre's les éléments service et les éléments événement. Cëi7#'reri_est schématisé figure 5 par deux pointeurs, un pointeur 9p1 pointant du service 1p vers le début de la zone mémoire 2p et un pointeur 9p2 pointant vers le début de la zone mémoire 8p contenant le tableau de pointeurs 8p1 à 8p5. A chaque élément de type service 1p, correspond une zone mémoire compacte 2p contenant les événements 2p1 à 2p5 et un tableau 8p de pointeurs 8p1 à 8p5 pointant chacun des événements 2p1 à2p5. Il n'est pas réservé de la mémoire en prévoyant le pire. On alloue à l'octet près la mémoire dont on a besoin. De plus les structures sont suffisamment accessibles pour consultation, puisque le but du cache est de restituer les informations le plus rapidement possible. The event elements are large (> 120 bytes). Also in order not to fragment the memory, they are chained or stored end to end in a memory zone which has, especially, been allocated to them. To keep the pointing information of each event, pointers referencing them are also stored in an adjacent table. Such a table 8 is shown in FIG. 4 with the compact event memory zone 2 associated therewith. In FIG. 4 the array has been referenced 8p and the compact memory zone 2 has been referenced 2p to indicate that there is an array 8p associated with each compact zone 2p. If the compact area 2p shown in FIG. 4 contains information on 5 events 2p1, 2p2, 2p3 2p5, the table 8 contains as many pointers as the area 2 contains events, in the case represented 5 referenced 8p1 to 8p5 pointing to the beginning. of each event 2p1 to 2p5 of the service 2p. This table of pointers allows direct access to the different events of the 2p service. There is a one-to-one correspondence between each epi pointer in Table 8p and the start address of an event. For example, the pointer number 8p5 of table 8p points to the fifth event 2p5 of the service 2p associated with this table 8p. A link is also created between the service elements and the event elements. Figure 5 is represented by two pointers, a pointer 9p1 pointing from the service 1p to the beginning of the memory zone 2p and a pointer 9p2 pointing to the beginning of the memory zone 8p containing the array of pointers 8p1 to 8p5. Each service element type 1p corresponds to a compact memory area 2p containing events 2p1 to 2p5 and an array 8p of pointers 8p1 to 8p5 each pointing events 2p1 to 2p5. He is not reserved for memory by anticipating the worst. We allocate to the byte by the memory that we need. In addition the structures are sufficiently accessible for consultation, since the purpose of the cache is to restore the information as quickly as possible.

La construction s'opère donc en trois temps. Une chaîne ou un service est repéré par son triplet DVB. Ce triplet est constitué par l'identification du réseau initial sur lequel la chaîne est diffusée "network Id", l''identification du flux de transport utilisé par le service "stream Id" et l'identification du service "service Id". Une fois le cache initialisé, une chaîne peut être ajoutée dans le cache. Les paramètres à donner au moteur d'acquisition de tables sont l'original "network Id", le "transport stream Id", et le "service Id". Plusieurs chaînes peuvent être créées en même temps. Comme représenté figure 6 une première chaîne 11 est créée. Cette chaîne 11 ne contient, à ce stade, aucun événement et la taille des événements est nulle. Les pointeurs 911 et 912 sont vides. Le chargement des tables EIT sur le flux s'effectue en parallèle. Aussi le cache donne-la possibilité de construire plusieurs services en:` même temps: La construction suit alors le même modèf`ë-qûé le chargbmënt des données: le parallélisme. Comme représenté sur la figure 7 des chaînes 12, 13 peuvent être ajoutées à la première 11, chacune des chaînes 12, 13 ajoutées est dans une première phase vide et se présente donc de la même façon que la première chaîne illustrée figure 6. Lorsqu'une table EIT est reçue et que son analyse est en cours, les informations correspondant aux événements sont extraites et insérées dans le cache. L'analyse de la table EIT n'est réalisée qu'une seule fois. L'application SICache ne connaît pas à l'avance la quantité de mémoire qu'il lui faut allouer pour recevoir les informations des événements. De ce fait, une liste chaînée d'événements est réalisée. Cette liste sert uniquement pendant la phase de construction du cache. Lorsque tous les événements auront été ajoutés, son contenu sera recopié dans une zone mémoire compacte 2p comme expliqué plus haut puis la liste chaînée d'événéments disparaîtra. Des événements peuvent être ajoutés à une chaîne. A chaque ajout d'événement la taille en octets de celui-ci est calculée et un cumul des tailles d'événements permet de savoir quelle quantité de mémoire il faudra allouer lorsque le dernier événement sera inséré. L'ajout d'un événement à une chaîne est représenté figure 8. Les informations sur le premier événement par exemple du service 13 sont insérées dans un élément 2'31 d'une liste chaînée temporaire 2'3, l'élément service 13 reçoit l'information relative au nombre cumulé d'événements et à la taille de chaque événement. La liste chaînée des événements du service par exemple 13 est constituée comme représenté figure 9, par addtions successives des différents événements 2'32 e@@#-3-à- de la chaîne. Un calcul de la somme des tailles est effectué. Les mêmes opérations sont effectuées pour chacune des n chaînes comme représenté figure 10. Cette figure représente une liste chaînée de services 11 à 14. Chaque service contient des informations relatives aux nombres d'événements qui ont été ajoutés dans ce service et sur la taille de la somme des informations relatives à chaque événement. Les éléments événement par exemple 2'11, 2'12, 2'13 de la première chaîne 2'1 sont comme ceux des autres chaînes, chaînés entre eux. The construction takes place in three stages. A channel or service is marked by its DVB triplet. This triplet is constituted by the identification of the initial network on which the channel is broadcasted "network Id", the identification of the transport stream used by the "stream Id" service and the identification of the "service Id" service. Once the cache is initialized, a string can be added to the cache. The parameters to be given to the table acquisition engine are the original "network Id", the "transport stream Id", and the "service Id". Multiple channels can be created at the same time. As shown in Figure 6 a first chain 11 is created. This string 11 does not contain any event at this stage and the size of the events is zero. Pointers 911 and 912 are empty. The loading of the EIT tables on the flow is done in parallel. Also the cache gives the possibility to build several services at the same time: The construction then follows the same model as the data loader: the parallelism. As shown in Figure 7 chains 12, 13 can be added to the first 11, each of the chains 12, 13 added is in a first empty phase and is therefore the same way as the first chain shown in Figure 6. When an EIT table is received and its analysis is in progress, the information corresponding to the events is extracted and inserted into the cache. The analysis of the EIT table is done only once. The SICache application does not know in advance how much memory it needs to allocate to receive event information. As a result, a linked list of events is performed. This list is only used during the build phase of the cache. When all the events have been added, its contents will be copied to a compact 2p memory area as explained above and then the linked list of events will disappear. Events can be added to a channel. Each time an event is added, the size in bytes of this event is calculated, and an accumulation of event sizes makes it possible to know how much memory will be allocated when the last event is inserted. The addition of an event to a chain is represented in FIG. 8. The information on the first event for example of the service 13 is inserted in an element 2'31 of a temporary linked list 2'3, the service element 13 receives information on the cumulative number of events and the size of each event. The linked list of events of the service for example 13 is constituted as represented in FIG. 9, by successive additions of the various events 2'32 e @@ # - 3-to-the-chain. A calculation of the sum of the sizes is performed. The same operations are carried out for each of the n chains as represented in FIG. 10. This figure represents a linked list of services 11 to 14. Each service contains information relating to the number of events that have been added in this service and the size of the service. the sum of the information relating to each event. The event elements for example 2'11, 2'12, 2'13 of the first chain 2'1 are like those of the other chains, chained together.

Lorsque l'ensemble des événements d'une chaîne a été extrait de la table EIT correspondant à cette chaîne et simultanément inséré dans la liste chaînée servant à la construction, le cache peut alors formater les données afin de les "cacher" définitivement. Cette opération est réalisée sur appel d'une fonction de formatage des données appelée "fitChannel". When all the events of a string have been extracted from the EIT table corresponding to this string and simultaneously inserted in the linked list used for the construction, the cache can then format the data in order to "hide" them permanently. This is done by calling a data formatting function called "fitChannel".

A la fin de la phdse de construction, pour chaque service on est en possession des informations suivantes . le nombre d'événements composant le service. At the end of the construction phdse, for each service we are in possession of the following information. the number of events that make up the service.

la taille cumulée de l'ensemble des événements. Le nombre d'événements sert à calculer la taille du tableau de pointeurs référençant les événements formatés. La taille cumulée des informations sur les événements permet l'allocation nécessaire et suffisante de mémoire pour la recopie de la liste chaînée. La zone compacte de mémoire allouée contiendra alors les événements mis bout à bout. the cumulative size of all events. The number of events is used to calculate the size of the array of pointers referencing the formatted events. The cumulative size of the event information allows the necessary and sufficient allocation of memory for the copy of the linked list. The compact area of allocated memory will then contain the events put end to end.

Pour une chaîne composée de N événements. dont la taille" cumulée est T K octets on réalisera:-, les allôcàtions suivantes : --- - `N x 4 pour le tableau de pointeurs (1 pointeur = 4 octets) K octets pour la zone compacte et continue de mémoire. K est un nombre entier représentant la somme du nombre d'octets des informations relatives à chaque événement. For a chain composed of N events. whose accumulative size is TK bytes we will realize: -, the following allocations: --- - `N x 4 for the array of pointers (1 pointer = 4 bytes) K bytes for the compact and continuous memory area. an integer representing the sum of the number of bytes of information relating to each event.

Un schéma pour une chaîne par exemple 14 diffusant 4 événements est représenté figure 11. A ce stade de la création du cache i1 est réservé dans la mémoire un tableau vide 8'4 contenant juste l'espace mémoire nécessaire au stockage des quatre pointeurs et une zone vide compacte 2"4 juste assez grande pour contenir le nombre k d'octets représentant la somme des quantités d'information en octets contenues dans le descriptif des 4 événements. On procède ensuite comme représenté figure 12, par exemple pour le service 14 à la recopie des événements de la liste chaînée temporaire vers la zone 2"4' compacte et continue de mémoire. Cette zone lorsqu'elle est remplie est référencée 24. Elle comporte les informations sur les premiers à 4eme événement de la chaîne. Ces informations sont stockées dans des zones adjacentes de la zone compacte 24, 241, 242.... Le tableau 8'4 de pointeurs est rempli puisqu'on connaît l'adresse du début de chaque événement et prend la référence 84. A ce stade la liste 2'4 chaînée d'événements est , toujours présente. Cette liste chaînée, qui a servi à la construction du cache, est ensuite effacée, libérant la place mémoire correspondante, en sorte que la structure chaîne et- événements associés prend l'aspect. final rebrésenté`figure 13. Cet aspect correspond à celui de la fi"ure 5 déjà décrite. A titre d'exemple non limitatif, l'aspect matériel de la mémoire utilisée sera maintenant commenté. I1 a été utilisé une mémoire de type Mediahighway cTm>. Cette mémoire est divisée en trois parties . A diagram for a chain 14 for example broadcasting 4 events is shown in FIG. 11. At this stage of the creation of the cache i1 is reserved in the memory an empty array 8'4 containing just the memory space necessary for the storage of the four pointers and one compact empty zone 2 "4 just large enough to contain the number k of bytes representing the sum of the information quantities in bytes contained in the description of the 4 events, and then proceed as shown in FIG. the copying of the events from the temporary linked list to the compact and continuous zone 2 "4 'of memory. This zone when it is filled is referenced 24. It includes the information on the first to fourth event of the chain. This information is stored in adjacent areas of the compact zone 24, 241, 242 .... The array 8'4 of pointers is filled since we know the address of the beginning of each event and takes the reference 84. stage 2'4 chain of events is always present. This linked list, which was used to build the cache, is then erased, releasing the corresponding memory space, so that the associated string and event structure takes on the appearance. This aspect corresponds to that of FIG. 5 already described, and by way of nonlimiting example, the hardware aspect of the memory used will now be commented on.It has been used a Mediahighway cTm type memory. This memory is divided into three parts.

Une partie réservée à des poignées de manipulation, cette partie permet d'associer à chaque adresse logique une adresse physique dans la mémoire. Cette partie de la mémoire est réservée à la manipulation des objets. A part reserved for manipulation handles, this part makes it possible to associate with each logical address a physical address in the memory. This part of the memory is reserved for the manipulation of objects.

Une partie dynamique, il s'agit d'une partie de 1a mémoire dans laquelle les objets sont utilisés via les poignées. Cette partie de la mémoire est défragmentée par un logiciel fourni avec la mémoire par un processus dit de récupération des gaspillages (garbage collecting). A dynamic part, it is a part of the memory in which the objects are used via the handles. This part of the memory is defragmented by software provided with the memory by a process known as garbage collecting.

Une partie statique, cette partie est une mémoire conventionnelle que l'on utilise via des pointeurs). Le cache de données SI utilise la mémoire dynamique et statique. Cette double utilisation permet de garantir un minimum de fragmentation et une consommation réduite de mémoire. A static part, this part is a conventional memory that we use via pointers). The SI data cache uses dynamic and static memory. This double use makes it possible to guarantee a minimum of fragmentation and a reduced consumption of memory.

Par définition un pointeur dans une zone de données mémoire dynamique est une poignée, c'est à dire comme expliqué plus haut un double pointeur. Il consomme donc le double en mémoire que son équivalent constitué d'un pointeur simple, en mémoire statique (8 octets au lieu de 4). Donc plus il y a de pointeurs plus on a intérêt à utiliser de la mémoire stâtiquë_. By definition a pointer in a dynamic memory data area is a handle, ie as explained above a double pointer. It therefore consumes twice as much memory as its equivalent consisting of a simple pointer, in static memory (8 bytes instead of 4). So the more pointers you have, the more interest you have in using static memory.

De même afin de minimiser la fragment-ati@ri,- il convient que les petites données ( < 40 octets) soient stockées dans la mémoire dynamique et que les paquets importants de données (>1Ko) aillent dans la mémoire statique. Also in order to minimize the fragment-ati @ ri, - small data (<40 bytes) should be stored in the dynamic memory and large data packets (> 1Ko) should go into the static memory.

La construction du cache et la localisation des éléments dans les parties statique 100 et dynamique 10 de la mémoire sera succinctement revue ci-après en précisant à chaque fois les localisations. Sur les figures 14 à 16, les parties dynamique 10 et statique 100 de la mémoire sont séparées l'unE de l'autre par une ligne pointillée. The construction of the cache and the location of the elements in the static portions 100 and dynamic 10 of the memory will be briefly reviewed below, each time specifying the locations. In FIGS. 14 to 16, the dynamic and static portions 100 of the memory are separated from each other by a dotted line.

Comme représenté figure 14 les listes 11, à 1n chaînées des services définit plus haut se trouvent dans une zone 10 de mémoire dynamique. En effet l'élément chaîne ne consomme que peu d'octets. De plus, d'une construction du cache à une autre, le nombre de chaînes peut varier. Une utilisation de la mémoire dynamique évite la fragmentation de la partie statique de la mémoire. Les listes représentées à titre d'exemple 2'n à 2'15 et 2'n1 à 2'n7 chaînée d'événements qui, on le rappelle sont un outil intermédiaire de construction de la mémoire statique, se trouvent en zone mémoire dynamique 10. Dans la mesure où elle est temporaire, une fois effacée la récupération de gaspillage "garbage collecting" garantit une défragmentation de l'ensemble de la mémoire dynamique précédemment utilisée. As shown in FIG. 14, the lists 11, at 1n chained services defined above are in a zone 10 of dynamic memory. Indeed, the string element consumes only a few bytes. In addition, from one cache build to another, the number of strings can vary. A use of the dynamic memory avoids the fragmentation of the static part of the memory. The lists represented by way of example 2'n to 2'15 and 2'n1 to 2'n7 linked events which, it is recalled, are an intermediate tool for building the static memory, are in the dynamic memory zone 10 Since it is temporary, once erased the waste recovery "garbage collecting" guarantees defragmentation of all the previously used dynamic memory.

Après la recopie des chaînes et comme représenté figure 15 les zones 2 (21, 2n) compactes d'événements se trouvent dans une partie 100. de la mémoire correspondant à de la mémoire statique -puisque ces zones sont souvent de taille importante è-t`-pëuvent rester `stables pendant des durées de l'ordre de 48 heures. De plus dans cette partie 100 chaque événement est référencé par un pointeur et non une poignée. L'économie de 4 octets par événement est non négligeable. After copying the strings and as shown in FIG. 15, the compact areas 2 (21, 2n) of events are in a part 100 of the memory corresponding to static memory-since these areas are often large in size. - can stay stable for periods of about 48 hours. Moreover, in this part 100 each event is referenced by a pointer and not a handle. The economy of 4 bytes per event is not negligible.

Les tableaux 81 à 8n de pointeurs d'événements se trouvent également dans la partie 100 correspondant à de la mémoire statique. Dans la mesure où un tableau vide 8" de pointeurs (non représenté vide) est alloué dans le même temps qu'une zone vide 2" compacte d'événements, peu de risques de fragmentation sont à prévoir. Tables 81 to 8n of event pointers are also found in part 100 corresponding to static memory. Since an empty table 8 "of pointers (not shown empty) is allocated at the same time as an empty area 2" compact of events, there is little risk of fragmentation.

Après effacement des listes chaînées 2'1 à 2'n le cache présente l'aspect représenté figure 16 où la partie 10 de mémoire dynamique ne contient plus que la liste chaînée des services 11 à 1n. Les tableaux 8 de pointeurs et les zones compactes 2 se trouvent dans la zone 100 de mémoire statique tandis que la liste chaînée 1 des services se trouve dans la partie 10 de mémoire dynamique. Dans le mode préféré de réalisation . une protection contre la saturation mémoire est prévue. Du fait de son modèle entièrement dynamique, le cache de données SI peut, si un trop grand nombre d'informations est diffusé, saturer la mémoire du décodeur ou de la "Set Top Box". Aussi, afin d'assurer une protection contre ce phénomène, un système de bornes permet de limiter le nombre d'éléments cachés. After deletion of the linked lists 2'1 to 2'n the cache has the appearance shown in Figure 16 where the portion 10 of dynamic memory contains only the linked list of services 11 to 1n. The pointer tables 8 and the compact areas 2 are in the static memory area 100 whereas the linked list 1 of the services is in the dynamic memory part 10. In the preferred embodiment. protection against memory saturation is provided. Due to its fully dynamic model, the data cache SI can, if too much information is broadcast, saturate the memory of the decoder or the "Set Top Box". Also, to ensure protection against this phenomenon, a system of terminals can limit the number of hidden elements.

Les bornes sont configurables à l'initialisation du cache. Les bornes possibles sont les suivantes Nombre maximum de chaînes ou services. 'Nombre maximum d'événements par service. The terminals are configurable when the cache is initialized. Possible bounds are as follows Maximum number of channels or services. 'Maximum number of events per service.

Nombre maximum de caractères pour le titre de l'événement. Maximum number of characters for the title of the event.

Nombre maximum de caractères pour le résumé de l'événement. Maximum number of characters for the event summary.

Ce système de borne permet d'évaluer la taille du cache une fois qu'il est constitué. Prenons par exemple un élément chaîne donc stocké dans la partie de mémoire dynamique, dont les données ont une taille de N octets. La taille des données de cet élément chaîne est donc de N+2*8 octets (+2*8 pour les deux poignées qui assurent le double chaînage) soit N+16. Supposons que les événements aient une taille moyenne de M octets. Pour chaque événement il faut compter son pointeur associé donc on a M+4 octet par événement. This terminal system makes it possible to evaluate the size of the cache once it is constituted. For example, consider a string element stored in the dynamic memory part, whose data has a size of N bytes. The size of the data of this element chain is thus of N + 2 * 8 bytes (+ 2 * 8 for the two handles which ensure the double chaining) is N + 16. Suppose the events have an average size of M bytes. For each event we must count its associated pointer so we have M + 4 byte per event.

Le calcul de la taille de la base est Taille Cache = (NbMaxChaînes*(N+16) + NbMaxChaînes*NbMaxEvtParChaîné*(M+4))/ 1024 kilooctets. Exemple chiffré : 200 chaînes, 80 événements par chaîne, (3 jours de programme en moyenne) avec 20 octets pour les données chaînées d'une chaîne et. une moyenne de 140 octets pour un événement. The calculation of the base size is Cache Size = (NbMaxChannels * (N + 16) + NbMaxChannels * NbMaxEvtParString * (M + 4)) / 1024 kilobytes. Encrypted example: 200 strings, 80 events per string, (3 days of program averaged) with 20 bytes for chained data of a string and. an average of 140 bytes for an event.

Taille cache =(200*(20+16) + 200*80*(140+4))/1024 Taille cache = (7200 + 2.304.000)/1024 Taille cache = 2257 Ko Taille cache = 2.2 Mo on voit qu'il est important de bien définir les limites du système. Il convient aussi de noter que, 99,99 % de la base est en mémoire statique et :que La mémoire statique accueille également les cl`âsses téléchargées donc si celle-ci est satïzr'é-ë; -- le téléchargement d'applications n'est plus possible. Cache Size = (200 * (20 + 16) + 200 * 80 * (140 + 4)) / 1024 Cache Size = (7200 + 2.304.000) / 1024 Cache Size = 2257 KB Cache Size = 2.2 MB we see that it is important to define the limits of the system. It should also be noted that, 99.99% of the database is in static memory and: that Static memory also hosts the keys downloaded so if it is satire; - download of applications is no longer possible.

Le module de consultation de mémoire, "browser de données" SI (package eventbrowser) sera maintenant décrit. The memory consultation module, "data browser" IF (eventbrowser package) will now be described.

Dès que des données sont disponibles dans le cache de SI, elles peuvent être récupérées à l'aide d'un consulteur de mémoire. Le cache n'a pas besoin d'être complet, même partiellement rempli, il peut faire l'objet de consultations de la part des applications. Cependant, il faut au moins qu'une chaîne ait été formatée pour qu'il puisse y avoir une consultation. L'accès aux données s'effectue au moyen d'itérateurs. On distingue deux types d'itérateurs Un itérateur sur la base des chaînes ou services Un itérateur sur la base des événements. L'itérateur de chaînés parcourt ("browse") la liste doublement chaînée se trouvant dans la partie de mémoire dynamique décrite plus haut. Du fait de son chaînage double les mouvements arrière et avant sont simples et rapides. Les fonctions "lit et passe au suivant" (readAndGoNext) et "lit et passe au précédant" (readAndGoPrevious) permettent de récupérer des informations sur chacune des chaînes parcourues (browsées). Les informations sont incluses dans un objet de la classe chaîne. De multiples fonctionnalités sont également disponibles, telles que la recherche d'une chaîne, le positionnement d'un mode loupe. As soon as data is available in the IS cache, they can be retrieved using a memory viewer. The cache does not have to be complete, even partially filled, it can be consulted by the applications. However, at least one string has to be formatted for consultation. Access to the data is through iterators. There are two types of iterators An iterator based on strings or services An iterator based on events. The chained iterator traverses ("browse") the doubly-linked list in the dynamic memory portion described above. Due to its dual chaining the rear and front movements are simple and fast. The functions "read and go to the next" (readAndGoNext) and "read and pass to the precedent" (readAndGoPrevious) allow you to retrieve information about each of the strings browsed (browsed). The information is included in an object of the string class. Multiple features are also available, such as searching for a channel, positioning a magnifying mode.

L'itérateur d'événements permet, ,:comme l'itérateur de chaînes, de renvoyer des instances;. (des objètsJ de la classe événement DVBEvent qui côn'tlênnent chacun l'ensemble des informations se reportant à un événement. Cependant il faut distinguer deux types distincts d'itérateurs, l'itérateur d'événements associés à une chaîne et l'itérateur d'événements triés par genre.  The event iterator allows,,: as the iterator of strings, to return instances; (objects) of the DVBEvent event class, each of which relates to all the information relating to an event, but there are two distinct types of iterators, the iterator of events associated with a string, and the iterator of sorted by genre.

L'itérateur d'événements associés à une chaîne permet de parcourir ("browser") les événements associés à une chaîne. Ce type d'itérateur est notamment utilisé dans la construction des grilles de programmes.  The event iterator associated with a chain makes it possible to browse ("browser") the events associated with a chain. This type of iterator is particularly used in the construction of program grids.

L'itérateur d'événements triés par genre permet comme son nom l'indique de trier les événements sur un critère bien précis que les événements triés remplissent. De tels itérateurs sont utilisés par exemple pour construire des listes triées par genre telles que l'ensemble des films ou l'ensemble des événements sportifs etc.  The iterator of events sorted by genre allows, as its name indicates, to sort the events on a specific criterion that the sorted events fill. Such iterators are used, for example, to build genre-sorted lists such as all movies or all sports events, etc.

Lors de la construction d'un tel itérateur il y a mémorisation des pointeurs d'événements dans un tableau de pointeurs annexes. Ce tableau est construit en deux temps comme représenté schématiquement figure 17. L'ensemble des zones compactes 2 d'événements de l'ensemble des chaînes est parcouru et analysé. Si l'événement remplit la condition de filtrage, il est marqué par un drapeau ("taggé") puis un compteur est incrémenté. Le marquage de l'événement est représenté figure 17 par une première flèche f dirigée vers un événement de la zone 2. Dans l'exemple représenté figure 17 la première zone 21 d'événement comporte deux films, les zones compactes 22 , 23, 24, 25, 26, 210, 211 comportent un seul film, les zones compactes,-27, 28, 29 ne`comportent r pas l'événement recherché. 'I1 a été- trouvé 9 événements remplissant le critèrë-@è-~-tri et donc ' le compteur d'événements est à 9. Une fois que l'ensemble de la base a été parcouru, on affecte la mémoire statique nécessaire pour recopier les pointeurs des événements marqués. Dans l'exemple représenté il s'agit d'un tableau 200 vide à ce stade contenant juste la place mémoire nécessaire à l'inscription de 9 pointeurs 2001 à 2009 Enfin un deuxième parcourt de la base permet de copier les pointeurs des événements marqués dans l'espace de mémoire statique fraîchement créée et de démarquer ces événements. La recopie des pointeurs est matérialisée par une deuxième flèche g dirigée vers le pointeur d'un événement marqué. When building such an iterator, event pointers are stored in an array of related pointers. This table is constructed in two stages as shown schematically in FIG. 17. The set of compact areas 2 of events of all the chains is scanned and analyzed. If the event fulfills the filter condition, it is marked with a flag ("tagged") and then a counter is incremented. The marking of the event is represented in FIG. 17 by a first arrow f directed towards an event of zone 2. In the example shown in FIG. 17, the first event zone 21 comprises two films, the compact zones 22, 23, 24 , 25, 26, 210, 211 comprise a single film, the compact areas, -27, 28, 29 do not contain the desired event. 9 events have been found fulfilling the criterion-~ ~ ~ -tri and therefore the event counter is at 9. Once the entire database has been traversed, the static memory necessary for copy the pointers of the marked events. In the example shown it is an empty array 200 at this stage containing just the memory space necessary for the registration of 9 pointers 2001 to 2009 Finally a second runs through the base to copy the pointers of the events marked in the newly created static memory space and to demarcate these events. The mirroring of the pointers is materialized by a second arrow g directed towards the pointer of a marked event.

Une fois les pointeurs recopiés, un accès direct à tous les événements marqués est construit. Suivant les critères de construction de l'itérateur, un tri par ordre chronologique et/ou par ordre alphabétique peut ensuite être réalisé. Once the pointers are copied, direct access to all tagged events is built. According to the criteria of construction of the iterator, a sorting in chronological order and / or in alphabetical order can then be realized.

Une illustration d'un tel usage d'itérateur est donnée par la figure 18 dans laquelle le tableau 200 est représenté avec une flèche par pointeur pointant chacune sur l'un des événements triés Dans le mode préféré de réalisation de l'invention le module de consultation de mémoire comporte une fonction de vérification de la pertinence des données parcourues de façon à s'assurer que les informations sont à jour au moment où on les consulte. Cette fonction sera décrite ci-après. An illustration of such an iterator use is given in FIG. 18 in which the array 200 is represented with an arrow by pointer each pointing to one of the sorted events. In the preferred embodiment of the invention, the module of FIG. Memory consultation includes a function of verifying the relevance of the data scanned so as to ensure that the information is up-to-date at the time of viewing. This function will be described below.

Une donnée SI est dite ''pertinente'' si elle est identique dans le cache en mémoire ou dans le flot MPEG de diffusion. Le cache de données SI est pertinent s'il reflète exactement les données diffusées à#rzs -leur ensemble. Il doit donc être capable de détecter les mises à jour dynamique faite sur le flux (cf Le moteur d'acquisition des EIT) Lorsqu'une instance d'une classe chaîne ou événement est créée via le module de consultation de mémoire (browser) de données SI, celle-ci contient une copie des informations contenue dans le cache. Ces informations sont susceptibles de changer dans la mesure où le cache peut évoluer. Une chaîne peut être reprogrammée, c'est à dire effacée du cache puis rechargée. Les données java représentatives de cette chaîne avant la reprogrammation sont obsolètes. De même un itérateur spécifique d'événement est susceptible d'être mis à jour. Il convient donc de prévenir l'utilisateur. Ceci est accompli via le mécanisme des exceptions. An SI data is said to be "relevant" if it is identical in the memory cache or in the broadcast MPEG stream. The SI data cache is relevant if it exactly mirrors the data that is broadcast to their set. It must therefore be able to detect dynamic updates made on the stream (see The EIT Acquisition Engine) When an instance of a string or event class is created via the memory browser module. SI data, this contains a copy of the information contained in the cache. This information may change as the cache may change. A channel can be reprogrammed, ie erased from the cache and reloaded. The java data representative of this string before reprogramming are obsolete. Likewise, a specific event iterator can be updated. It is therefore advisable to warn the user. This is accomplished through the exception mechanism.

Dès que les données associées à une chaîne diffusée sur un flux de transport sont formatées, la chaîne mémorise une signature. Cette signature est délivrée par un serveur de signature. Ce serveur garantit de ne jamais donner deux signatures identiques après chaque construction d'une même chaîne. Chaque instance de la classe chaîne recopie cette signature au sein de ses données internes. A chaque appel de méthodes sur cet objet chaîne les signatures sont comparées. Si elles sont identiques les données de la chaîne sont pertinentes et peuvent être parcourues (browsées). Dans le cas contraire, une exception est levée indiquant à l'application que l'objet chaîne qu'elle utilise est obsolète. I1 convient donc que l'application demande une nouvelle instance dë la classe, chaîne ou qu'elle demande la mise à joûr--âëïs on objet Dès que les données d'une chaîne sont mises à jour, il faut invalider (rendre obsolète) les itérateurs spécifiques d'événements. Un itérateur contient des adresses d'événements. Il faut donc garantir à chaque opération de consultation (browsing) sur un itérateur que les adresses qu'il contient pointent bien vers des événements actuels et non vers des données obsolètes. Pour ce faire chaque itérateur est validé par un booléen. A chaque modification de la base aussi infime soit-elle, ce booléen sous forme d'un drapeau est positionné à une position d'invalidation "false" afin d'invalider l'itérateur. De la même façon que pour les données d'une chaîne, à chaque opération de consultation (browsing) sur un itérateur, une vérification est faite sur sa validité. S'il est invalide, une exception est levée. Il convient donc que l'application demande une nouvelle instance d'itérateur ou qu'elle demande une mise à jour de celui-ci. Les demandes de mise à jour sont adressées par le module de consultation au module moteur. As soon as the data associated with a channel broadcast on a transport stream is formatted, the channel stores a signature. This signature is issued by a signature server. This server guarantees to never give two identical signatures after each construction of the same chain. Each instance of the string class copies this signature into its internal data. At each method call on this string object the signatures are compared. If they are identical, the data in the chain is relevant and can be browsed. Otherwise, an exception is raised telling the application that the string object it is using is obsolete. It is therefore appropriate for the application to request a new instance of the class, string, or to request the update of the class. As soon as the data of a string are updated, it is necessary to invalidate (render obsolete) event specific iterators. An iterator contains event addresses. It is therefore necessary to guarantee each browsing operation on an iterator that the addresses it contains point to current events and not to obsolete data. To do this each iterator is validated by a boolean. With every modification of the base as small as it is, this boolean in the form of a flag is positioned at a position of invalidation "false" in order to invalidate the iterator. In the same way as for the data of a chain, with each operation of consultation (browsing) on an iterator, a check is made on its validity. If it is invalid, an exception is thrown. Therefore, the application must request a new iterator instance or request an update of it. Update requests are sent by the consultation module to the motor module.

Une autre particularité avantageuse de l'invention sera maintenant examinée. Another advantageous feature of the invention will now be examined.

Le cache selon l'invention exploite les parties statique et dynamique de la mémoire. Les données SI cohabitent avec des données liées aux fonctionnements basiques du système (fonctionnement machine virtuelle, chargement des classes ... ). Dans le cas d'un fonctionnement prolongé, la mémoire statique; se fragmente.' Ceci est inévitable car l'exploitation du cachè :_. permet l'effacement partiel voir tôt-à-r-- -des données' SI. Le gestionnaire de mémoire n'effectue aucune opération de défragmentation sur la partie statique de la mémoire. Ce problème de fragmentation de la zone statique peut conduire à l'impossibilité de charger de nouvelles chaînes en mémoire bien que la place existe physiquement. The cache according to the invention exploits the static and dynamic parts of the memory. The SI data coexists with data related to the basic functions of the system (virtual machine operation, class loading ...). In the case of prolonged operation, static memory; is fragmenting. ' This is inevitable because the exploitation of the cache: _. allows partial erasure see soon-to-r - data 'SI. The memory manager does not perform any defragmentation operation on the static part of the memory. This problem of fragmentation of the static zone can lead to the impossibility of loading new strings in memory although the place exists physically.

Pour remédier à ce problème, selon cette caractéristique de l'invention on définit une zone de mémoire spécifique pour le cache de données SI. Seul dans cet espace, le cache SI peut évaluer à tout moment son degré de fragmentation. De même il peut réordonner les blocks de données SI et défragmenter sa mémoire lorsque le système le lui permet : veille ou système non actif depuis un certain temps. Ce mécanisme est en tous points similaire à la gestion de la défragmentation d'un disque dur sur PC. To remedy this problem, according to this characteristic of the invention defines a specific memory area for the data cache SI. Only in this space, the SI cache can evaluate at any moment its degree of fragmentation. Similarly, it can reorder the data blocks IF and defragment its memory when the system allows it: standby or system not active for some time. This mechanism is in all respects similar to managing the defragmentation of a hard disk on a PC.

Les deux avantages de cette zone spécifique de mémoire sont la garantie de non-fragmentation du cache de données SI d'une part et la non-interférence avec le fonctionnement nominal du système d'autre part. On notera que l'on peut utiliser à cette fin le logiciel implanté de défragmentation de la partie de mémoire dynamique. Pour cela il convient de modifier périodiquement ou sur requête le paramétrage de la partie de mémoire dynamique et de la partie spécifique de mémoire statique, pour rendre dynamique la totalité de la mémoire statique dédiée aux applications SI, puis de fixer à nouveau une limite une fois la défragmentation faites. The two advantages of this specific area of memory are the guarantee of non-fragmentation of the data cache SI on the one hand and the non-interference with the nominal operation of the system on the other hand. Note that one can use for this purpose the implanted software defragmentation of the dynamic memory part. To do this, it is necessary to modify periodically or on request the setting of the dynamic memory part and the specific part of static memory, to make all of the static memory dedicated to the SI applications dynamic, then to set a limit once again. defragmentation done.

On peut aussi pour gérer au mieux les données <B>si</B> utiliser un disque dur. Naturellement.. le gestiônnaire de fichiers (file system) doit in-té g---r- un outil de défragmentation. It is also possible to better manage the data if you use a hard disk. Of course .. the file system manager must be a defragmentation tool.

Le procédé de construction de la base de données relative aux informations sur les programmes et le procédé de consultation de cette base, sont sous forme de logiciel implanté dans une mémoire d'un appareil, par exemple une télévision, un décodeur ou un magnétoscope. Le logiciel peut aussi être importé par exemple sous forme d'un support contenant le logiciel à introduire dans l'appareil ou encore par téléchargement.The method for constructing the program information database and the consultation method of this database are in the form of software implanted in a memory of an apparatus, for example a television, a decoder or a video recorder. The software can also be imported for example in the form of a medium containing the software to be introduced into the device or by download.

Claims (9)

REVENDICATIONS 1. Procédé de construction d'une base de données relative à des informations d'événements diffusées périodiquement sous forme de flux de données par un ou plusieurs fournisseurs de services dans lequel a) on constitue un fichier de différents services identifiés susceptibles de diffuser des informations d'événement, b) on extrait et on stocke temporairement une partzë au --moins d'une série d'informations sur les événements diffûsés par chaque service, c) on sélectionne pour chaque événement les informations que l'on souhaite stocker pour une longue durée, d) on détermine le nombre d'octets contenus dans les informations sélectionnées pour chaque événement ainsi que la somme de ces quantités d'informations pour l'ensemble des événements de chaque service, e) on recherche une zone d'adresses mémoire de taille suffisante pour y stocker de façon non fragmentée toutes les informations sélectionnées relatives à tous les événements d'un premier service les uns à la suite des autres, f) on recopie dans les zones d'adresses non fragmentées trouvées à l'étape e) chacun des événements du premier service les uns à la suite des autres, g)on complète le fichier des services par l'adjonction, dans une fiche de ce fichier correspondant audit premier service d'un pointeur donnant l'adresse du pointeur, du premier événement de ce service, h) on recommence les étapes d) à g) pour chacun des services du fichier des services, i) on efface de la mémoire les informations extraites à l'étape b).A method of constructing a database of periodically broadcasted event information in the form of a data stream by one or more service providers in which a) a file of different identified services is made capable of broadcasting information. b) extract and store a part of the information for each event, c) select for each event the information that is to be stored for a given event. long duration, d) we determine the number of bytes contained in the information selected for each event as well as the sum of these amounts of information for all the events of each service, e) we search a memory address area large enough to store in an unfragmented manner all the selected information relating to all the events of a first service one after the other, f) copy in the unfragmented address areas found in step e) each of the events of the first service one after the other, g) complete the file of the services by adding, in a file of this file corresponding to the first service of a pointer giving the address of the pointer, the first event of this service, h) repeating steps d) to g) for each of the services of the service. service file, i) the information extracted in step b) is erased from the memory. 2. Procédé de construction selon la revendication 1, caractérisé en ce qu'à l'étape d) on tient en outre un compte du nombre d'événements pour définir la place mémoire nécessaire à la création d'un tableau de pointeurs donnant chacun l'adresse du début d'un événement et en ce qu'à l'étape e) on constitue en outre une zone mémoire compacte de taille ;juste suffisante pour y loger ledit tableau de poin-tëùrs,-et enfin en ce qu'à l'étape f) on inscrit dans le tableau des pointeurs, pour chaque événement, l'adresse du début des informations relatives à cet évènement.2. Construction method according to claim 1, characterized in that in step d) an account is also kept of the number of events to define the memory space necessary for the creation of a table of pointers each giving the the address of the beginning of an event and in that in step e) there is furthermore a compact memory area of a size just sufficient to accommodate said table of pointers, and finally that step f) is entered in the table pointers, for each event, the address of the beginning of the information relating to this event. 3. Procédé de construction selon la revendication 1, caractérisé en ce que les éléments services du fichier des services sont chaînées.3. Construction method according to claim 1, characterized in that the service elements of the services file are chained. 4. Procédé de construction selon l'une quelconque des revendications 1 ou 2, caractérisé en ce que les éléments services du fichier des services sont doublement chaînés.4. Construction method according to any one of claims 1 or 2, characterized in that the service elements of the services file are doubly linked. 5. Procédé selon l'une quelconque des revendications 1 à 3, caractérisé en ce que pour exécuter les étapes d) à e) à partir des informations extraites à l'étape b) . on commence par créer, pour chaque service, un ensemble temporaire d'éléments (2'1,....2'n) événements chaînés, chaque élément événement contenant les informations sélectionnées (2'11 ....2'n1 ....2'n4) relatives à un événement, cet ensemble d'éléments événements chaînés, étant créé par ajouts successifs d'événements (2'41-2'44) à la chaîne (2'4) au fur et à mesure de la réception des informations relatives à chacun de ces événements, jusqu'à réception d'un dernier événement (2'44) relatif à ce service, en ce qu'un compte du nombre d'événements est incrémenté de 1 à chaque ajout d'événement, en ce que le nombre d'octets contenus dans les informations sélectionnées est incrémenté du nombre d'octets décrivant l'événement, pour chacun des événements ajoutés, le compte du nombre d'événements étant la valeur; de ce compte après ajout du dernier événement, la valeur du nombrè_.d'octets nécessaire au stockage des inf-ormâtions relatives aux événements de ce service étant ladite valeur après ajout du dernier événement du service.5. Method according to any one of claims 1 to 3, characterized in that for performing steps d) to e) from the information extracted in step b). we start by creating, for each service, a temporary set of elements (2'1, .... 2'n) chained events, each event element containing the selected information (2'11 .... 2'n1. ... 2'n4) relating to an event, this set of chain events elements being created by successive additions of events (2'41-2'44) to the chain (2'4) as and when receiving information relating to each of these events, until a last event (2'44) related to this service is received, in that an account of the number of events is incremented by 1 each time the event, in that the number of bytes contained in the selected information is incremented by the number of bytes describing the event, for each of the added events, the count of the number of events being the value; of this account after adding the last event, the value of the number of octets necessary for the storage of information relating to the events of this service being said value after adding the last event of the service. 6. Procédé selon la revendication 5, caractérisé en ce que les informations effacées à l'étape i) sont celles (2'11-2'44) qui -constituent l'ensemble temporaire chaîné.6. Method according to claim 5, characterized in that the information erased in step i) are those (2'11-2'44) which -constituent the temporary set chained. 7. Procédé selon l'une des revendications 3 ou 4, caractérisé en ce que la base de données est construite sur une mémoire comportant un logiciel de gestion de la mémoire, ce logiciel réservant - une première partie (10) de la mémoire dans laquelle est effectuée une gestion dynamique des éléments qui y sont contenus, au moyen de deux poignées par élément, l'une donnant une adresse logique du début de l'élément et l'autre une adresse physique, cette gestion dynamique comportant une fonction de défragmentation par récupération des gaspillages ; - une seconde partie (100) de la mémoire dans laquelle est effectuée une gestion statique, et en ce que - la liste chaînée des services (11-1n) est stockée dans la partie dynamique (10) de la mémoire et en ce que les zones (21-2n) compactes d'événements et éventuellement leurs tableaux de pointeurs (81-8n) associés sont stockés dans la partie statique (100) de la mémoire.7. Method according to one of claims 3 or 4, characterized in that the database is built on a memory with a memory management software, the software reserving - a first part (10) of the memory in which a dynamic management of the elements contained therein, by means of two handles per element, one giving a logical address of the beginning of the element and the other a physical address, this dynamic management including a defragmentation function by recovery of wastes; a second part (100) of the memory in which static management is performed, and in that the linked list of services (11-1n) is stored in the dynamic part (10) of the memory and in that the compact areas (21-2n) of events and possibly their associated pointer arrays (81-8n) are stored in the static part (100) of the memory. 8. Procédé de construction d'une base de données selon l'une des revendications précédentes caractérisé en ce que on définit préalablement, à la constitution de la base, une ou plusieurs, bornes portârit sur le nombre de services ou sur ré.- nombre d'événements par service ou encore sur d'autres données et en ce que les données dont la quantité excède la borne fixée pour cette donnée ne sont pas chargées dans la zone compacte (21_2n).8. A method of constructing a database according to one of the preceding claims, characterized in that before defining the constitution of the base, one or more terminals portârit on the number of services or re-number events by service or on other data and in that the data whose quantity exceeds the limit fixed for this datum are not loaded in the compact zone (21_2n). 9. Procédé selon l'une des revendications précédentes caractérisé en ce qu'on stocke des données diffusées par les fournisseurs de service, et donnant un compteur de service et un numéro de version d'événement, on compare périodiquement ces données aux données de même nature actuellement diffusées, on utilise les résultats de la comparaison pour déterminer les services pour lesquels une nouvelle acquisition de données doit être effectuée ou les services qui n'ont pas été enregistrés auparavant. Procédé de consultation d'une base de données constituée selon l'une des revendications précédentes comportant une liste chaînée de service et autant de zones compacte d'événements que de services, ces zones compactes étant associées à un tableau de pointeurs dont chaque pointeur désigne le début de l'adresse d'un événement contenu dans la zone compacte, caractérisé en ce que il comporte une fonction de parcours service par service dans laquelle on extrait et présente des données relatives aux événements d'un service sélectionné. 11. Procédé selon la revendication 10, caractérisé en ce que il comporte en outre une fonction de présentation de données sur des événements sélectionnés en fonction de un ou plusieurs critères identifiables dans les données contenues dans- les événements répertoriés dans l'ensemble des. .zones compactes de stockage de données relativës aux événements des différents services, la sélection étant faite selon les étapes ci-après on fait un premier parcours de repérage et marquage des événements répondant au critère de sélection et on incrémente un compteur initialisé à zéro de 1 chaque fois qu'un événement répondant au critère ou aux critères est marqué, on constitue un tableau vide de pointeurs pouvant contenir un nombre de pointeurs égal à la valeur du compteur après parcours de toutes les zones compactes, on effectue un deuxième parcours pour recopier dans le tableau vide les adresses des événements marqués et effacer les marquages, on parcours les données sélectionnées par déplacement dans le tableau de pointeurs. 12. Appareil, notamment décodeur ou récepteur r de télévision ou magnétoscope contenant au moins une mémoire et un logiciel résidant ou importable permettant de mettre en #uvre un procédé de construction d'une base de données et/ou de consultation de cette base selon l'une des revendications 1 à 11.9. Method according to one of the preceding claims characterized in that stores data broadcast by the service providers, and giving a service counter and an event version number, periodically comparing these data to the data of the same currently being disseminated, the results of the comparison are used to determine the services for which a new data acquisition is to be performed or the services that were not previously recorded. A method of consulting a database constituted according to one of the preceding claims comprising a linked service list and as many compact areas of events as services, these compact areas being associated with a table of pointers whose pointer each designates the beginning of the address of an event contained in the compact zone, characterized in that it comprises a service-by-service browse function in which data relating to the events of a selected service are extracted and presented. 11. Method according to claim 10, characterized in that it further comprises a function of presenting data on selected events according to one or more identifiable criteria in the data contained in the events listed in the set of. Compact data storage areas relative to the events of the various services, the selection being made according to the following steps is a first course of marking and marking events meeting the selection criterion and increments an initialized counter to zero of 1 Whenever an event meeting the criterion or criteria is marked, an empty table of pointers is created which can contain a number of pointers equal to the value of the counter after all the compact zones have been run, a second run is made to copy in the table empties the addresses of the marked events and erases the markings, the selected data is traversed by moving in the table of pointers. 12. Apparatus, especially a decoder or television receiver or video recorder containing at least one memory and a resident or importable software for implementing a method of constructing a database and / or consulting this database according to the invention. one of claims 1 to 11.
FR0006623A 2000-05-24 2000-05-24 METHOD FOR FORMING AND USING AN EVENT DATA BASE Pending FR2809510A1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
FR0006623A FR2809510A1 (en) 2000-05-24 2000-05-24 METHOD FOR FORMING AND USING AN EVENT DATA BASE
AU2001264013A AU2001264013A1 (en) 2000-05-24 2001-05-23 Method for constituting and using an event database
PCT/FR2001/001604 WO2001090898A2 (en) 2000-05-24 2001-05-23 Method for constituting and using an event database

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0006623A FR2809510A1 (en) 2000-05-24 2000-05-24 METHOD FOR FORMING AND USING AN EVENT DATA BASE

Publications (1)

Publication Number Publication Date
FR2809510A1 true FR2809510A1 (en) 2001-11-30

Family

ID=8850559

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0006623A Pending FR2809510A1 (en) 2000-05-24 2000-05-24 METHOD FOR FORMING AND USING AN EVENT DATA BASE

Country Status (3)

Country Link
AU (1) AU2001264013A1 (en)
FR (1) FR2809510A1 (en)
WO (1) WO2001090898A2 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0597198A2 (en) * 1992-11-12 1994-05-18 Siemens Aktiengesellschaft Teletext data aquisition method
EP0706130A1 (en) * 1994-10-07 1996-04-10 International Business Machines Corporation Contiguous memory allocation process
WO1998006219A1 (en) * 1996-08-06 1998-02-12 Starsight Telecast, Incorporated Electronic program guide with interactive areas

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0597198A2 (en) * 1992-11-12 1994-05-18 Siemens Aktiengesellschaft Teletext data aquisition method
EP0706130A1 (en) * 1994-10-07 1996-04-10 International Business Machines Corporation Contiguous memory allocation process
WO1998006219A1 (en) * 1996-08-06 1998-02-12 Starsight Telecast, Incorporated Electronic program guide with interactive areas

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ROSENGREN J: "Electronic programme guides and service information", PHILIPS JOURNAL OF RESEARCH,NL,ELSEVIER, AMSTERDAM, vol. 50, no. 1, 1996, pages 253 - 265, XP004008215, ISSN: 0165-5817 *

Also Published As

Publication number Publication date
WO2001090898A3 (en) 2002-02-28
AU2001264013A1 (en) 2001-12-03
WO2001090898A2 (en) 2001-11-29

Similar Documents

Publication Publication Date Title
CN100559851C (en) The system that is used for remotely controlling client recording and storage behavior
CA2337144C (en) Process for receiving downloaded files
CN100440956C (en) Broadcast program recording overrun and underrun scheduling system
FR2809268A1 (en) METHOD FOR DYNAMIC NAVIGATION AMONG MULTIMEDIA DOCUMENTS
US8271456B2 (en) Efficient backup data retrieval
FR2752350A1 (en) METHOD FOR EXTRACTING DATA IN A CYCLIC TRANSMISSION SYSTEM AND DEVICE FOR IMPLEMENTING SAID METHOD
FR2806573A1 (en) METHOD FOR VIEWING BROADCASTED AND RECORDED BROADCASTS HAVING A COMMON CHARACTERISTIC AND ASSOCIATED DEVICE
CN102446118A (en) Contextual and task focused computing
JP2004534335A (en) Receiver apparatus and method
FR2842057A1 (en) METHOD AND DEVICE FOR PROCESSING DATA IN A COMMUNICATION NETWORK
US20010054178A1 (en) User history information generation of multimedia data and management method thereof
CN106528851A (en) Intelligent recommendation method and device
FR2860935A1 (en) Digital data processing method for peer-to-peer computer network, involves storing data structure establishing link between each usable part of signal and single identifier of signal in communication apparatus
EP3021594A1 (en) Method for classifying content and content recommendation in an electronic program guide
EP0878758B1 (en) Device for sorting data elements in a binary tree and ATM spacer including such a device
FR2771884A1 (en) METHOD FOR MANAGING SERVICE INFORMATION IN A DIGITAL TELEVISION SYSTEM AND RECEIVER IMPLEMENTING SAID METHOD
EP1433322B1 (en) Method for transmitting audio-visual programmes proposed by users, terminal and server therefor
FR2809510A1 (en) METHOD FOR FORMING AND USING AN EVENT DATA BASE
EP2006783A1 (en) Method for cooperative description of media objects
WO2001091344A2 (en) Method for transmitting multimedia information elements
EP1182878A1 (en) Communication system, transmitter, receiver, method using a data storage descriptor
EP2109979A2 (en) Method and device for connection management in a telecommunication network
FR2752351A1 (en) METHOD FOR INDEXING DATA IN A DIGITAL TELEVISION TRANSMISSION SYSTEM
FR2898707A1 (en) METHOD, DEVICE AND SYSTEM FOR MANAGING STRUCTURED INFORMATION IN A GRAPHICAL SCENE
FR2952204A1 (en) METHOD FOR GENERATING A WEB STREAM AND ASSOCIATED SYSTEM