WO2007110550A2 - Procede de generation d'un fichier de description d'un flux binaire, dispositif et produit programme d'ordinateur correspondants - Google Patents

Procede de generation d'un fichier de description d'un flux binaire, dispositif et produit programme d'ordinateur correspondants Download PDF

Info

Publication number
WO2007110550A2
WO2007110550A2 PCT/FR2007/051026 FR2007051026W WO2007110550A2 WO 2007110550 A2 WO2007110550 A2 WO 2007110550A2 FR 2007051026 W FR2007051026 W FR 2007051026W WO 2007110550 A2 WO2007110550 A2 WO 2007110550A2
Authority
WO
WIPO (PCT)
Prior art keywords
field
description file
bit stream
generating
description
Prior art date
Application number
PCT/FR2007/051026
Other languages
English (en)
Other versions
WO2007110550A3 (fr
Inventor
Sylvain Devillers
Original Assignee
France Telecom
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 France Telecom filed Critical France Telecom
Priority to US12/294,755 priority Critical patent/US8583815B2/en
Priority to EP07731834.3A priority patent/EP1999649B1/fr
Priority to JP2009502169A priority patent/JP5357747B2/ja
Publication of WO2007110550A2 publication Critical patent/WO2007110550A2/fr
Publication of WO2007110550A3 publication Critical patent/WO2007110550A3/fr

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9577Optimising the visualization of content, e.g. distillation of HTML documents

Definitions

  • a method of generating a description file of a corresponding bitstream, device and computer program product is a method of generating a description file of a corresponding bitstream, device and computer program product.
  • the field of the invention is that of digital communications, including communications over the Internet.
  • the invention relates to the instantiation of parameters during the parsing of a binary stream, composed of a plurality of fields, and more precisely the instantiation of a description of this bitstream.
  • the invention applies in particular, but not exclusively, to the parsing of a multimedia bitstream, and finds particular applications in the field of scalable multimedia content adaptation (or
  • multimedia content is understood to mean a binary stream of audio, video, images, etc. type.
  • the invention applies in particular to the BSDL language (in English "Bitstream Syntax Description Language"), as described in the ISO / IEC 21000-7 (MPEG-21) standard. Part 7: Digital Item Adaptation).
  • BDSL is an extension of XML
  • bit stream also called a "bitstream”.
  • BSD Bitstream Syntax Description
  • the description file of the source bit stream 11, denoted BSD source 14, is obtained by using a first processor 13, called BintoBSD, making it possible to read (“parse”) the source bitstream 11 and to instantiate its description.
  • the XML description file of the source bit stream is then transformed into another XML description file, denoted transformed BSD 17, using the XSLT 16 language (in English "Extensible Stylesheet Language").
  • the adapted bit stream 12 is then obtained by using a second processor 18, called BSDtoBin, making it possible to read the transformed BSD description 17 and generate the corresponding adapted bitstream 12.
  • BSDtoBin a second processor 18, called BSDtoBin
  • BintoBSD 13 and BSDtoBin 18 use an XML document, named "Bitstream Syntax Schema” or "BS Schema” 15, which defines the structure of the given format and the types of fields defined by this format.
  • the type, the number of occurrences and / or the size of a field of the bitstream, among others, it is common for the type, the number of occurrences and / or the size of a field of the bitstream, among others, to be determined (s) by the value of another field present downstream or upstream in the bit stream.
  • the BSDL language defines two ways of referencing such a field depending on whether it is situated downstream or upstream of the current position in the bit stream.
  • the BSDL language therefore makes it possible to reference an XML element corresponding to this field.
  • BSDL uses the language
  • XML Path Language Version 1.0, W3C Recommendation 16, available on the website http://www.w3.org/TR/xpath
  • XPath language is an expression language, making it possible to specify an expression involving arithmetic and logical operators, functions, constants, variables, and location paths.
  • a location path denoted "LocationPath”, thus makes it possible to locate a set of nodes such as elements and attributes in an XML document.
  • BSDL uses the XPath location paths to reference an element in the partially instantiated BSD. 2.
  • the BSDL language then makes it possible to specify several types of use of a field depending on whether it is located upstream or downstream of the current position of the reading of the bit stream.
  • the BSDL language makes it possible to use the value of a field present downstream to specify in particular: the number of occurrences of an element corresponding to a field to be read, which corresponds to the number of times this field must be read in the bitstream; the size of a field to read; - the type of a field to read; etc.
  • BSDL uses the XPath expression that can include a reference to one or more fields downstream via their localization path.
  • This XPath expression is evaluated with respect to the elements created in the partial BSD, and its evaluation can, depending on the case, give a boolean value (true or false), or an integer.
  • the BSDL language relies on the use of the XPath location path to reference these fields, as previously described. But to be able to evaluate this path of location
  • the BintoBSD processor 13 must store in memory the partially instantiated BSD description file. However, it should be noted that the size of this description file increases during the reading of the bitstream.
  • the high consumption of memory resources can in particular degrade the performance of the instancing technique, or even fail.
  • the BSDL language limits the use of these fields to a test on the instantiation of the element.
  • a major disadvantage of this technique of the prior art, for the fields located upstream, is that it does not allow to take into account characteristics of the field to read, such as its size for example, determined by an upstream field. It is indeed not possible to specify these characteristics with the BSDL language according to this technique of the prior art.
  • downstream fields are always referenced by an XPath location path, whose evaluation consumes computing resources.
  • the invention proposes a solution which does not have all these drawbacks of the prior art, in the form of a method for generating a description file of a bit stream from a description scheme describing a structure and content conforming to a predetermined format and comprising a set of attributes and elements, said bit stream being composed of a plurality of fields.
  • such a method comprises: a step of assigning at least one value of at least one identified field of said stream to at least one variable defined by an attribute of said description scheme, called assignment attribute; a step of storing said at least one variable; a step of determining at least one characteristic of at least one element of said description file, based on an evaluation of a conditional expression on said at least one value; a step of generating a portion of said description file according to the one or more characteristics determined during said determining step.
  • the invention is based on a completely new and inventive approach to the generation of a description file according to which at least one variable carrying the value of a field identified in the bit stream is defined in the description scheme. means of an attribute of the description scheme.
  • This identified field may in particular correspond to a field located downstream or upstream of a field to be read from the bit stream, with respect to the reading direction of the bit stream.
  • this variable is memorized so as to then be able to determine characteristics of the field to be read, that is to say characteristics of the element of the description file corresponding to the field to be read.
  • This optimizes the memory resource consumption and processing time of a processor implementing the generation method according to the invention, by referencing the values of certain fields located upstream and downstream of a field to be read in variables, and using the values stored in these variables to determine certain characteristics of the field to be read.
  • the proposed technique is generic, since it is independent of the coding format used: it is the description scheme which defines the structure and the content of the binary signal, according to a predetermined format.
  • the assignment attribute comprises at least one parameter comprising at least said variable.
  • Each parameter thus comprises at least one variable, in which is memorized the value of an identified field of the bitstream.
  • the value of an identified field is thus memorized and referenced by the name of this variable.
  • a parameter of an assignment attribute includes only the variable in which the value of an identified field is stored, when the identified field is located downstream of a field to be read, and a parameter of an assignment attribute comprises the variable in which the value of an identified field and at least one location information of an upstream field, when the identified field is located upstream of a field to be read.
  • At least one parameter of an assignment attribute comprises for example a triplet comprising said variable and at least two identification information belonging to the group comprising at least: a start of field position in said bit stream, an end of field position in said bit stream, a field length in said stream binary, said identification information for identifying said identified field.
  • Each parameter therefore comprises a triplet bearing two values making it possible in particular to identify the address of the upstream field in the bitstream, and a variable making it possible to store the value of this field.
  • the upstream field is read and its value is stored in a storage memory referenced by the name of the variable.
  • the identified field corresponds to a field starting at said start position and having said field length, or to a field starting at said starting position and ending at said ending position, etc.
  • an identified field corresponds to a field situated downstream of a field to be read from the bit stream with respect to the reading direction of the bit stream, said identified field corresponds to a field being read in said bit stream.
  • the value of the downstream field is thus memorized immediately after its reading, and referenced by the name of the variable.
  • the evaluation step refers to said variable in the description scheme.
  • This variable is therefore directly called by its name to retrieve the value of an identified field and use this value to test a conditional expression determining certain characteristics of at least one element of the description file.
  • said at least one characteristic belongs to the group comprising at least: a type of an element; a length of an element; an instance number of an element. It can notably be noted that the number of occurrences of an element can be equal to 0. It is thus possible to test the presence or the absence of an element.
  • the bit stream is a scalable multimedia stream.
  • the invention thus applies for example to the adaptation of scalable multimedia content.
  • the description file is of the Bitstream Syntax Description type and the description scheme is of the Bitstream Syntax Scheme type according to the MPEG-21 Part 7 standard.
  • the BSDL language is used to describe the syntax of a bit stream.
  • the invention in another embodiment, relates to a device for generating a description file of a bit stream, based on a description scheme describing a structure and content conforming to a predetermined format and comprising a set attributes and elements, said bit stream being composed of a plurality of fields.
  • This device comprises: means for assigning at least one value of at least one identified field of said stream to at least one variable defined by an attribute of said description scheme, called assignment attribute; means for storing said at least one variable; means for determining at least one characteristic of at least one element of said description file, based on an evaluation of a conditional expression on said at least one value; means for generating a portion of said description file according to the one or more characteristics determined during said determining step.
  • a device is particularly adapted to implement the method of generating a description file of a bit stream as described above.
  • Another aspect of the invention also relates to a computer program product downloadable from a communication network and / or recorded on a computer readable medium and / or executable by a processor comprising program code instructions for executing the programs. steps of the method of generating a description file as described above, when said program is executed on a computer.
  • FIG. 1 presents an example of use of the BSDL language to generate a suitable bitstream from a source bitstream
  • Figures 2 and 3 each illustrate a bit stream and the representation of the associated BSD description file, in the form of a subtree
  • FIG. 4 shows the structure of a device for generating a description file implementing a technique for instantiating the description of a bit stream according to a particular embodiment of the invention.
  • the invention allows the generation of a description file of a bit stream from the parsing of the bit stream and a schema of description.
  • the general principle of the invention is based on the use, in the description scheme, of at least one assignment attribute comprising one or more parameter (s) each comprising at least one variable, in which is stored the value of an identified field of the bitstream.
  • the value of this identified field makes it possible in particular to determine a characteristic of an element of the description file corresponding to a field to be read from the bit stream.
  • Such an assignment attribute is denoted "AssignPost” when at least one characteristic of a field to be read is determined by the value of another field present downstream in the bit stream, said downstream field, and " AssignePre"when at least one characteristic of a field to be read is determined by the value of another field present upstream in the bit stream, said upstream field.
  • characteristic refers to the type, the number of occurrences, the size, etc. of an element corresponding to a field.
  • the downstream field of the bitstream is read according to the information carried by a description scheme specifying the format of the digital stream, the value read is assigned to a variable
  • the identified upstream field or fields of the stream are read (for example by their position in the bitstream). assigns the read value (s) to one or more variables (referenced by a name), and uses that value (s) to test a minus a characteristic of an element of the description file corresponding to the field to be read.
  • the invention thus makes it possible, according to at least one particular embodiment, to overcome certain disadvantages of the prior art, and in particular to limit the memory consumption required by the parsing of the bit stream and the instantiation of the XML description of this flow.
  • the invention proposes a solution making it possible to reference fields situated upstream and downstream by optimizing the consumption of the memory and the processing time, and to use the value of these fields during the reading of the bitstream. , to determine at least one characteristic of a field to be read, according to at least one particular embodiment.
  • the described embodiment of the invention relates to the part of the language called BSDL-2, corresponding to the BintoBSD processor as presented in relation with the prior art, which makes it possible to read a bit stream and instantiating its description.
  • the prefix bs2 is thus used to qualify a syntax element defined by BSDL-2 ; the prefix bsl: to qualify a syntax element defined by BSDL-I; and - the prefix xs: to qualify a syntax element defined by XML Diagram.
  • the general principle of the invention is based on the use, in the description scheme, of at least one assignment attribute comprising one or more parameters.
  • These parameters are declared in the Schema BS and instantiated in two different ways, depending on whether the characteristics of an element corresponding to a field to be read are determined in a field situated upstream or downstream of the field to be read.
  • the parameter is associated with a field of the bitstream located downstream of the field to be read, denoted "downstream field".
  • This parameter comprises at least one variable, in particular for storing the value of this downstream field.
  • the value of the downstream field is thus memorized immediately after its reading, and referenced by the name of the variable. It is therefore not necessary, according to this particular embodiment of the invention, to save all the subtree representative of the partially instantiated BSD description file in order to be able to reference the value of this downstream field via an XPath location path, as necessary according to the prior art.
  • the parameter is associated with a field of the bitstream located upstream of the field to be read, denoted "upstream field".
  • a description scheme assignment attribute includes one or more parameters, each carrying a variable and at least two identifying information, grouped together in the form of a triplet.
  • Each parameter therefore comprises a triplet bearing two values making it possible in particular to identify the address of the upstream field in the bitstream, and a variable making it possible to store the value of this field.
  • the upstream field is read and its value is stored in a storage memory referenced by the name of the variable.
  • FIG. 2 illustrates an exemplary bit stream 21 and the representation of the associated partial BSD description file, in the form of a subtree 22.
  • the bitstream 21 successively carries the values OxO1, 0x02, 0x03, etc.
  • the arrow 23 indicates the position of the reading of the bit stream at a given instant t.
  • the fields 24 therefore correspond to the part of the stream already read, qualified as downstream, and the fields 25 correspond to the part of the stream not yet read, described as upstream.
  • this stream indicates that this stream contains two fields of one byte of length 24 j and 242, e * optionally a third field 251 which is present if and only if the value of the first field 24 ⁇ is equal to 1.
  • the BintoBSD processor therefore reads the bit stream according to the information provided by the BS Scheme as presented in Appendix 1, part A: it reads the two fields 241 and 242 with a length of a byte and instantiates the corresponding elements ell and el2 in the description file
  • BintoBSD processor must store partially instantiated BSD in memory.
  • a characteristic of the field of the bit stream to be read 251 is determined by the value of at least one field present downstream in the bit stream, said downstream field, for example the field 2A ⁇ .
  • the assignment attribute assignPost includes a single parameter, making it possible to assign a variable named bet to the element ell of the description schema, and to store in this variable bet the value of the downstream field after the have read.
  • the attribute bs2: assignPost thus comprises a parameter including the name of the variable which will be referenced later.
  • BintoBSD processor no longer needs to store the partial BSD represented, but only the value of the field 24 ⁇ under the reference $ parl.
  • FIG. 3 illustrates an exemplary bit stream 31 and the representation of the associated partial BSD description file, in the form of a subtree 32.
  • the arrow 33 indicates the reading position of the bit stream at a time t given.
  • the field 34 corresponds to a part of the stream already read, described as downstream, and the fields 35 (35 ⁇ , 352, 353, 354) correspond to to a part of the stream not yet read, qualified upstream.
  • the assignment attribute assignPre comprises two parameters ("par2 0 32" and "par3 32 32"), each comprising a triple indicating respectively the name by which the variable carrying the value of the upstream field is referenced, the position in number of bits with respect to the current point and the length of the upstream field carrying information on the field to be read (name, beginning, length).
  • each triplet for assigning a variable named by 2 (respectively 3) to an element of the description scheme, to identify an upstream field located 0 bits (respectively 32 bits) upstream of the arrow 33, and length 32 bits (respectively 32 bits), and store in this variable by 2
  • the BintoBSD processor first reads the two fields of the bitstream identified by the attribute bs2: assignPre when it tries to instantiate the element ell. , and stores the values of these fields in variables by 2 and by 3.
  • the processor evaluates the XPath expression contained in the attribute bs2: if to check whether to instantiate the element ell.
  • the attribute bs2 if specifies a condition for the ell element to be instantiated.
  • This condition relates to the value of an upstream field which is 32 bits after the current point (arrow 33) and has a length of 32 bits.
  • This field must be equal to the sequence of bytes represented by the sequence of four characters 'f typ'. So we test the value of the variable by 3.
  • the processor instantiates the ell element, and then evaluates the XPath expression included in the bs2: layerLength attribute.
  • the bs2: layerLength attribute present in the type definition (xs: complexType), defines the cumulative size of the subelements of the ell element. Specifically, it uses the variable by 2 to determine the cumulative size of the subelements of the ell element. It can then instantiate the subelements el2, el3 and as many subelements el4 that the cumulative size of ell allows it.
  • the element ell is of complex type because it comprises sub-elements (it is a node of the tree), whereas the elements el2, el3 and el4 are of simple type (they are leaves of the 'tree).
  • the element ell comprises as many elements el4 as its cumulative size specified by b2: layerLength allows it.
  • the reading of the bitstream is done in several layers, a first layer making it possible to read the whole stream, then a second layer for the element ell, etc.
  • the value of the cumulative size is specified by a 32-bit field immediately upstream.
  • Such a generation device comprises a memory 41, a processing unit 42, equipped for example with a microprocessor ⁇ P, and driven by the computer program 43, implementing the method of generating a description file according to the invention.
  • the code instructions of the computer program 43 are for example loaded into a RAM memory before being executed by the processor of the processing unit 42.
  • the processing unit 42 receives as input a stream binary (21, 31) and a description scheme 45.
  • the microprocessor of the processing unit 42 implements the steps of the method of generating a description file described above, to determine a BSD description file 46, according to the instructions of the computer program 43.

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Maintenance And Management Of Digital Transmission (AREA)
  • Stored Programmes (AREA)

Abstract

Procédé de génération d'un fichier de description d'un flux binaire, dispositif et produit programme d'ordinateur correspondants. L'invention concerne un procédé de génération d'un fichier de description (14) d'un flux binaire (11), à partir d'un schéma de description (15) décrivant une structure et un contenu conformes à un format prédéterminé et comprenant un ensemble d'attributs et d'éléments, le flux binaire (11) étant composé d'une pluralité de champs. Selon l'invention, un tel procédé comprend : une étape d'assignation d'au moins une valeur d'au moins un champ identifié du flux à au moins une variable définie par un attribut du schéma de description, dit attribut d'assignation ; une étape de stockage de ladite variable ; une étape de détermination d'au moins une caractéristique d'au moins un élément du fichier de description, à partir d'une évaluation d'une expression conditionnelle portant sur ladite valeur ; une étape de génération d'une portion du fichier de description en fonction des caractéristiques déterminées lors de l'étape de détermination.

Description

Procédé de génération d'un fichier de description d'un flux binaire, dispositif et produit programme d'ordinateur correspondants.
1. Domaine de l'invention
Le domaine de l'invention est celui des communications numériques, et notamment des communications à travers l'Internet.
L'invention concerne l'instanciation de paramètres lors de l'analyse syntaxique d'un flux binaire, composé d'une pluralité de champs, et plus précisément l'instanciation d'une description de ce flux binaire.
L'invention s'applique notamment, mais non exclusivement, à l'analyse syntaxique d'un flux binaire multimédia, et trouve notamment des applications dans le domaine de l'adaptation de contenus multimédia échelonnables (ou
« scalables »), à transmettre à un destinataire en fonction du profil de l'utilisateur
(écran, capacité de calcul, capacité de stockage, liaison utilisée pour la transmission, etc). Une telle adaptation permet notamment d'éviter de transmettre inutilement des données qui ne pourront pas être utilisées par le destinataire, et donc d'économiser de la bande passante.
On précise notamment que, dans toute la suite du document, on entend par « contenu multimédia » un flux binaire de type audio, vidéo, images, etc.
L'invention s'applique notamment au langage BSDL (en anglais « Bitstream Syntax Description Language », en français « langage de description de syntaxe de flux binaire »), tel que décrit dans la norme ISO/IEC 21000-7 (MPEG-21 Partie 7 : Digital Item Adaptation).
Plus précisément, le langage BDSL est une extension du langage XML
Schéma (en anglais « extensible Markup Language Schéma», en français « schéma pour langage de balisage extensible »), spécifié par le consortium W3C
(en anglais « World Wide Web consortium »). La recommandation XML Schéma d'octobre 2004 est notamment disponible sur le site Internet http://www.w3.org/TR/xmlschema-l/ et xmlschema-2/. Ainsi, BSDL définit une syntaxe XML pour décrire la syntaxe d'un flux binaire conforme à un format donné. 2. Art antérieur
2.1 Le langage BSDL
Dans un souci de simplification et de clarté, on détaille ci-après uniquement l'art antérieur relatif à l'utilisation du langage BSDL pour décrire la syntaxe d'un flux binaire, encore appelé « bitstream ».
On rappelle, en relation avec la figure 1, un exemple d'utilisation du langage BSDL pour générer un flux binaire adapté 12 à partir d'un flux binaire source 11.
Pour ce faire, comme indiqué précédemment, BSDL définit une syntaxe XML pour décrire la syntaxe d'un flux binaire conforme à un format donné. Cette description est appelée « Bitstream Syntax Description » BSD.
Plus précisément, le fichier de description du flux binaire source 11, noté BSD source 14, est obtenu en utilisant un premier processeur 13, nommé BintoBSD, permettant de lire (« parser ») le flux binaire source 11 et d'instancier sa description.
Le fichier description XML du flux binaire source est alors transformé en un autre fichier de description XML, noté BSD transformée 17, en utilisant le langage XSLT 16 (en anglais « extensible Stylesheet Language
Transformations », en français « transformation en langage extensible de feuille de style »).
Le flux binaire adapté 12 est alors obtenu en utilisant un deuxième processeur 18, nommé BSDtoBin, permettant de lire la description BSD transformée 17 et générer le flux binaire adapté 12 correspondant.
Pour cela, ces deux processeurs BintoBSD 13 et BSDtoBin 18 utilisent un document XML, nommé « Bitstream Syntax Schéma » ou « BS Schéma » 15, qui définit la structure du format donné et les types des champs définis par ce format.
On décrit ci-après plus précisément le fonctionnement du premier processeur BintoBSD 13, permettant de lire un flux binaire et de générer son fichier de description BSD. On rappelle notamment que ce processus est progressif, ce qui signifie qu'à un point courant du « bitstream » (autrement dit à un instant t lors de la lecture du flux binaire), tous les champs déjà lus sont décrits par le fichier de description BSD partiellement instanciée.
Dans la suite du document, on qualifie d'« aval » la partie du flux binaire déjà lue (et donc déjà décrite par la description BSD partiellement instanciée) et d'« amont » la partie non encore lue.
Plus précisément, lors du processus de lecture du flux binaire, il est courant que le type, le nombre d'occurrences et/ou la taille d'un champ du flux binaire, entre autres, soi(en)t déterminé(s) par la valeur d'un autre champ présent en aval ou amont dans le flux binaire.
Selon les techniques de l'art antérieur, le langage BSDL définit deux façons de référencer un tel champ selon qu'il soit situé en aval ou en amont de la position courante dans le flux binaire.
1. Lorsqu'un tel champ se situe en aval du champ courant, il a déjà été lu, et la valeur de ce champ « aval » est donc présente dans le fichier de description
BSD partiellement instanciée. Le langage BSDL permet donc de référencer un élément XML correspondant à ce champ. Pour cela, BSDL utilise le langage
XPath, tel que décrit dans une recommandation du W3C de novembre 1999
(« XML Path Language », Version 1.0, W3C Recommendation 16, disponible sur le site Internet http://www.w3.org/TR/xpath), et plus précisément le chemin de localisation de l'élément XML correspondant à ce champ. On rappelle que le langage XPath est un langage d'expression, permettant de spécifier une expression mettant en jeu des opérateurs arithmétiques et logiques, des fonctions, des constantes, des variables, et des chemins de localisation. Un chemin de localisation, noté « LocationPath », permet ainsi de localiser un ensemble de nœuds tels que des éléments et des attributs dans un document XML. Ainsi, lorsqu'un tel champ se situe en aval du champ courant, BSDL utilise les chemins de localisation XPath pour référencer un élément dans la BSD partiellement instanciée. 2. Lorsqu'un tel champ se situe en amont du champ courant, il n'est pas encore présent dans le fichier de description BSD partiellement instanciée. Le champ est alors référencé par sa localisation dans le flux binaire. On rappelle que, dans ce cas, le champ présent en amont est généralement situé à proximité de la position courante dans le flux binaire, et est donc présent dans le tampon de lecture.
Le langage BSDL permet ensuite de spécifier plusieurs types d'utilisation d'un champ selon qu'il soit situé en amont ou en aval de la position courante de la lecture du flux binaire.
Par exemple, le langage BSDL permet d'utiliser la valeur d'un champ présent en aval pour spécifier notamment : le nombre d'occurrences d'un élément correspondant à un champ à lire, ce qui correspond au nombre de fois que ce champ doit être lu dans le flux binaire ; la taille d'un champ à lire ; - le type d'un champ à lire ; etc.
Pour cela, BSDL utilise l'expression XPath pouvant inclure une référence à un ou plusieurs champs situés en aval via leur chemin de localisation. Cette expression XPath est évaluée par rapport aux éléments crées dans la BSD partielle, et son évaluation peut, selon les cas, donner une valeur boolénne (vrai ou faux), ou un entier.
Lorsque le champ est en amont, les possibilités d'utilisation sont en revanche plus réduites, selon ces techniques de l'art antérieur. En l'occurrence, BSDL n'utilise le champ amont que pour décider de l'instanciation ou non d'un élément. Ainsi, l'attribut bs2 : ifNext appliqué à la déclaration d'un élément dans le document XML « BS Schéma » (15), éventuellement combiné aux attributs bs2 : lookAhead et bs2 : iNextMask, spécifie que l'élément auquel se réfère l'attribut est instancié si et seulement si le champ en amont a une valeur prédéterminée. 2.2 Inconvénients de l'art antérieur Malheureusement, la technique mise en œuvre actuellement pour l'instanciation d'un fichier de description d'un flux binaire souffre de deux principaux inconvénients.
Ainsi, pour l'utilisation de champs du flux binaire situés en aval par rapport à une position courante lors de la lecture du flux, le langage BSDL repose sur l'utilisation du chemin de localisation XPath pour référencer ces champs, comme décrit précédemment. Or pour pouvoir évaluer ce chemin de localisation
XPath, le processeur BintoBSD 13 doit stocker en mémoire le fichier de description BSD partiellement instanciée. Or il est à noter que la taille de ce fichier de description augmente au cours de la lecture du flux binaire.
Un inconvénient majeur de cette technique de l'art antérieur, pour les champs situés en aval, provient donc de la consommation mémoire, qui peut devenir prohibitive lorsque le flux binaire a une taille importante, et a fortiori lorsque le flux binaire est généré en continu, ce qui est par exemple le cas pour une vidéo encodée en continu (encodage à la volée).
En effet, la forte consommation de ressources mémoire peut notamment dégrader les performances de la technique d'instanciation, voire la faire échouer.
Par ailleurs, pour l'utilisation de champs du flux binaire situés en amont par rapport à une position courante lors de la lecture du flux, le langage BSDL limite l'utilisation de ces champs à un test sur l'instanciation de l'élément.
Un inconvénient majeur de cette technique de l'art antérieur, pour les champs situés en amont, est qu'elle ne permet pas de tenir compte de caractéristiques du champ à lire, comme sa taille par exemple, déterminées par un champ en amont. Il n'est en effet pas possible de spécifier ces caractéristiques avec le langage BSDL selon cette technique de l'art antérieur.
2.3 Solutions alternatives de l'art antérieur
Pour pallier l'inconvénient lié à la forte consommation mémoire lors du stockage de la BSD partielle, pour les champs situés en aval, une solution alternative a été proposée par l'Université de Ghent dans la contribution MPEG M12217 (ISO/IEC JTC1/SC29/WG11 MPEG2005/M12217, "Context-related attributes for MPEG-21 BSDL", Davy De Schrijver , Wesley De Neve, et Rik Van de Walle, Juillet 2005, Poznan, Pologne).
Cette solution permet notamment de sauvegarder en mémoire uniquement une partie du fichier de description BSD nécessaire pour l'évaluation des expressions XPath.
Cette solution présente toutefois de nombreux inconvénients.
Ainsi, cette solution de l'art antérieur requiert toujours de sauvegarder une partie de la BSD (en pratique, classiquement un sous-arbre), ce qui consomme de la mémoire inutilement, alors que seules les valeurs de quelques éléments de ce sous-arbre sont utilisées par l'expression XPath.
De plus, les champs situés en aval sont toujours référencés par un chemin de localisation XPath, dont l'évaluation consomme des ressources de calcul.
Finalement, cette technique de l'art antérieur ne permet pas de pallier aux inconvénients liés à la limitation de l'utilisation des champs situés en amont à un test sur l'instanciation de l'élément.
3. Exposé de l'invention
L'invention propose une solution qui ne présente pas tous ces inconvénients de l'art antérieur, sous la forme d'un procédé de génération d'un fichier de description d'un flux binaire à partir d'un schéma de description décrivant une structure et un contenu conformes à un format prédéterminé et comprenant un ensemble d'attributs et d'éléments, ledit flux binaire étant composé d'une pluralité de champs.
Selon l'invention, un tel procédé comprend : une étape d'assignation d'au moins une valeur d'au moins un champ identifié dudit flux à au moins une variable définie par un attribut dudit schéma de description, dit attribut d'assignation ; une étape de stockage de ladite au moins une variable ; une étape de détermination d'au moins une caractéristique d'au moins un élément dudit fichier de description, à partir d'une évaluation d'une expression conditionnelle portant sur ladite au moins une valeur ; une étape de génération d'une portion dudit fichier de description en fonction de la ou desdites caractéristiques déterminées lors de ladite étape de détermination.
Ainsi, l'invention repose sur une approche tout à fait nouvelle et inventive de la génération d'un fichier de description selon laquelle on définit dans le schéma de description au moins une variable portant la valeur d'un champ identifié dans le flux binaire au moyen d'un attribut du schéma de description.
Ce champ identifié peut notamment correspondre à un champ situé en aval ou en amont d'un champ à lire du flux binaire, par rapport au sens de lecture du flux binaire.
Ainsi, selon l'invention, on mémorise cette variable pour pouvoir ensuite déterminer des caractéristiques du champ à lire, soit autrement dit des caractéristiques de l'élément du fichier de description correspondant au champ à lire. On optimise ainsi la consommation en ressource mémoire et en temps de traitement d'un processeur mettant en œuvre le procédé de génération selon l'invention, en référençant les valeurs de certains champs situés en amont et en aval d'un champ à lire dans des variables, et en utilisant les valeurs stockées dans ces variables pour déterminer certaines caractéristiques du champ à lire. On peut notamment remarquer que la technique proposée est générique, puisqu'elle est indépendante du format de codage utilisé : c'est le schéma de description qui définit la structure et le contenu du signal binaire, conformément à un format prédéterminé.
Selon une caractéristique particulière, l'attribut d'assignation comprend au moins un paramètre comprenant au moins ladite variable.
Chaque paramètre comprend ainsi au moins une variable, dans laquelle est mémorisée la valeur d'un champ identifié du flux binaire. La valeur d'un champ identifié est donc mémorisée et référencée par le nom de cette variable.
Selon un mode de réalisation particulier, on considère notamment : - qu'un paramètre d'un attribut d'assignation comprend uniquement la variable dans laquelle est mémorisée la valeur d'un champ identifié, lorsque le champ identifié est situé en aval d'un champ à lire, et qu'un paramètre d'un attribut d'assignation comprend la variable dans laquelle est mémorisée la valeur d'un champ identifié et au moins une information de localisation d'un champ amont, lorsque le champ identifié est situé en amont d'un champ à lire.
Selon ce mode de réalisation, lorsqu'un champ identifié correspond à un champ situé en amont d'un champ à lire du flux binaire par rapport au sens de lecture du flux binaire, au moins un paramètre d'un attribut d'assignation comprend par exemple un triplet comprenant ladite variable et au moins deux informations d'identification appartenant au groupe comprenant au moins : une position de début de champ dans ledit flux binaire, une position de fin de champ dans ledit flux binaire, une longueur de champ dans ledit flux binaire, lesdites informations d'identification permettant d'identifier ledit champ identifié.
Chaque paramètre comprend donc un triplet portant deux valeurs permettant notamment d'identifier l'adresse du champ amont dans le bitstream, et une variable permettant de stocker la valeur de ce champ. Le champ amont est donc lu et sa valeur est stockée dans une mémoire de stockage référencée par le nom de la variable.
Par exemple, le champ identifié correspond à un champ débutant à ladite position de début et présentant ladite longueur de champ, ou à un champ débutant à ladite position de début et finissant à ladite position de fin, etc.
Lorsqu'un champ identifié correspond à un champ situé en aval d'un champ à lire du flux binaire par rapport au sens de lecture du flux binaire, ledit champ identifié correspond à un champ en cours de lecture dans ledit flux binaire.
La valeur du champ aval est donc mémorisée immédiatement après sa lecture, et référencée par le nom de la variable.
En particulier, l'étape d'évaluation fait référence à ladite variable, dans le schéma de description. On appelle donc directement ladite variable par son nom pour récupérer la valeur d'un champ identifié et utiliser cette valeur pour tester une expression conditionnelle déterminant certaines caractéristiques d'au moins un élément du fichier de description. Par exemple, ladite au moins une caractéristique appartient au groupe comprenant au moins : un type d'un élément ; une longueur d'un élément ; un nombre d'occurrence d'un élément. On peut notamment remarquer que le nombre d'occurrence d'un élément peut être égal à 0. On peut ainsi tester la présence ou l'absence d'un élément.
Selon un aspect particulier de l'invention, le flux binaire est un flux multimédia scalable. L'invention s'applique ainsi par exemple à l'adaptation de contenus multimédia scalables. Selon un mode de réalisation particulier, le fichier de description est de type Bitstream Syntax Description et le schéma de description est de type Bitstream Syntax Schéma selon la norme MPEG-21 Partie 7. On utilise ainsi le langage BSDL pour décrire la syntaxe d'un flux binaire.
Dans un autre mode de réalisation, l'invention concerne un dispositif de génération d'un fichier de description d'un flux binaire, à partir d'un schéma de description décrivant une structure et un contenu conformes à un format prédéterminé et comprenant un ensemble d'attributs et d'éléments, ledit flux binaire étant composé d'une pluralité de champs.
Ce dispositif comprend : - des moyens d'assignation d'au moins une valeur d'au moins un champ identifié dudit flux à au moins une variable définie par un attribut dudit schéma de description, dit attribut d'assignation ; des moyens de stockage de ladite au moins une variable ; des moyens de détermination d'au moins une caractéristique d'au moins un élément dudit fichier de description, à partir d'une évaluation d'une expression conditionnelle portant sur ladite au moins une valeur ; des moyens de génération d'une portion dudit fichier de description en fonction de la ou desdites caractéristiques déterminées lors de ladite étape de détermination. Un tel dispositif est notamment adapté à mettre en œuvre le procédé de génération d'un fichier de description d'un flux binaire tel décrit précédemment.
Un autre aspect de l'invention concerne également un produit programme d'ordinateur téléchargeable depuis un réseau de communication et/ou enregistré sur un support lisible par ordinateur et/ou exécutable par un processeur comprenant des instructions de code de programme pour l'exécution des étapes du procédé de génération d'un fichier de description tel que décrit précédemment, lorsque ledit programme est exécuté sur un ordinateur.
4. Liste des figures
D'autres caractéristiques et avantages de l'invention apparaîtront plus clairement à la lecture de la description suivante d'un mode de réalisation particulier, donné à titre de simple exemple illustratif et non limitatif, et des dessins annexés, parmi lesquels : la figure 1, commentée en relation avec l'art antérieur, présente un exemple d'utilisation du langage BSDL pour générer un flux binaire adapté à partir d'un flux binaire source ; les figures 2 et 3 illustrent chacune un flux binaire et la représentation du fichier de description BSD associé, sous la forme d'un sous-arbre ; la figure 4 présente la structure d'un dispositif de génération d'un fichier de description mettant en œuvre une technique d'instanciation de la description d'un flux binaire selon un mode de réalisation particulier de l'invention.
5. Description d'un mode de réalisation de l'invention 5.1 Principe général
L'invention permet la génération d'un fichier de description d'un flux binaire à partir de l'analyse syntaxique du flux binaire et d'un schéma de description.
On rappelle notamment qu'un tel schéma permet de définir la structure d'un format donné et les types des champs définis par ce format. La solution proposée est donc indépendante du format de codage, puisque celui-ci est donné par le schéma de description.
Le principe général de l'invention repose sur l'utilisation, dans le schéma de description, d'au moins un attribut d'assignation comprenant un ou plusieurs paramètre(s) comprenant chacun au moins une variable, dans laquelle est mémorisée la valeur d'un champ identifié du flux binaire. La valeur de ce champ identifié permet notamment de déterminer une caractéristique d'un élément du fichier de description correspond à un champ à lire du flux binaire.
Par exemple, un tel attribut d'assignation est noté « AssignPost » lorsqu'au moins une caractéristique d'un champ à lire est déterminée par la valeur d'un autre champ présent en aval dans le flux binaire, dit champ aval, et « AssignePre » lorsqu'au moins une caractéristique d'un champ à lire est déterminée par la valeur d'un autre champ présent en amont dans le flux binaire, dit champ amont.
On rappelle qu'on entend ici par « caractéristique » le type, le nombre d'occurrences, la taille, etc, d'un élément correspondant à un champ.
Ainsi, lorsqu'une caractéristique d'un élément correspondant à un champ du flux binaire à lire est déterminée par la valeur d'un champ aval, on lit le champ aval du bitstream d'après les informations portée par un schéma de description spécifiant le format du flux numérique, on attribue la valeur lue à une variable
(référencé par un nom), et on utilise cette valeur pour tester une expression déterminant au moins une caractéristique d'un élément du fichier de description correspondant au champ à lire.
Lorsqu'une caractéristique d'un élément correspondant à un champ du flux binaire à lire est déterminée par la valeur d'un champ amont, on lit le ou les champs amont du flux identifiés (par exemple par leur position dans le bitstream), on attribue la ou les valeurs lues à une ou plusieurs variables (référencées par un nom), et on utilise cette ou ces valeur(s) pour tester une expression déterminant au moins une caractéristique d'un élément du fichier de description correspondant au champ à lire.
L'invention permet ainsi, selon au moins un mode particulier de réalisation, de pallier certains inconvénients de l'art antérieur, et notamment de limiter la consommation mémoire requise par l'analyse syntaxique du flux binaire et l'instanciation de la description XML de ce flux.
Autrement dit, l'invention propose une solution permettant de référencer des champs situés en amont et en aval en optimisant la consommation de la mémoire et du temps de traitement, et d'utiliser la valeur de ces champs au cours de la lecture du flux binaire, pour déterminer au moins une caractéristique d'un champ à lire, selon au moins un mode particulier de réalisation.
5.2 Utilisation du langage BSDL
On décrit dans toute la suite de la description un mode de réalisation particulier de l'invention, relatif à l'utilisation du langage BSDL pour décrire la syntaxe d'un flux binaire multimédia (« bitstream »).
Bien entendu, cet exemple n'est pas limitatif, et les principes de l'invention décrits ci-après en détail peuvent être mis en œuvre en utilisant d'autres langages.
Dans le cadre de l'utilisation du langage BSDL, le mode de réalisation décrit de l'invention porte sur la partie du langage appelée BSDL-2, correspondant au processeur BintoBSD tel que présenté en relation avec l'art antérieur, qui permet de lire un flux binaire et d'instancier sa description.
Ainsi, par souci de clarté, on utilise dans la suite une notation comportant un préfixe pour référencer un élément de syntaxe XML spécifié dans un espace de noms donné : le préfixe bs2 : est ainsi utilisé pour qualifier un élément de syntaxe défini par BSDL-2 ; le préfixe bsl : pour qualifier un élément de syntaxe défini par BSDL-I ; et - le préfixe xs : pour qualifier un élément de syntaxe défini par XML Schéma.
Comme indiqué précédemment, le principe général de l'invention repose sur l'utilisation, dans le schéma de description, d'au moins un attribut d'assignation comprenant un ou plusieurs paramètres. Ces paramètres sont déclarés dans le BS Schéma et instanciés de deux façons différentes, selon que les caractéristiques d'un élément correspondant à un champ à lire sont déterminées dans un champ situé en amont ou en aval du champ à lire.
Ainsi, dans un premier cas, le paramètre est associé à un champ du bitstream situé en aval du champ à lire, noté « champ aval ». Ce paramètre comprend au moins une variable, permettant notamment de stocker la valeur de ce champ aval. La valeur du champ aval est donc mémorisée immédiatement après sa lecture, et référencée par le nom de la variable. Il n'est donc pas nécessaire, selon ce mode de réalisation particulier de l'invention, de sauvegarder tout le sous-arbre représentatif du fichier de description BSD partiellement instanciée pour pouvoir référencer la valeur de ce champ aval via un chemin de localisation XPath, comme nécessaire selon l'art antérieur.
Dans un deuxième cas, le paramètre est associé à un champ du bitstream situé en amont du champ à lire, noté « champ amont ». Dans ce cas, un attribut d'assignation du schéma de description comprend un ou plusieurs paramètres, portant chacun une variable et au moins deux informations d'identification, regroupées sous la forme d'un triplet. Chaque paramètre comprend donc un triplet portant deux valeurs permettant notamment d'identifier l'adresse du champ amont dans le bitstream, et une variable permettant de stocker la valeur de ce champ. Le champ amont est donc lu et sa valeur est stockée dans une mémoire de stockage référencée par le nom de la variable.
Dans les deux cas, une fois le champ aval ou amont lu, la variable stockant la valeur du champ peut ensuite être utilisée dans une expression XPath spécifiant les caractéristiques (nombre d'occurrences, type, taille, ...) d'un élément correspondant au champ à lire. A) Cas « aval » selon l'art antérieur On présente ci-après, en relation avec la figure 2 et l'annexe 1, qui fait partie intégrante de la description, une technique d'analyse syntaxique d'un flux binaire multimédia et de génération d'un fichier de description (BSD) selon l'art antérieur. On précise notamment que dans les annexes 1, 2 et 3 présentant des exemples de documents XML (schémas de description et fichier de description BSD), les commentaires sont en italique et encadrés par les caractères "< ! — " et " — >".
Plus précisément, la figure 2 illustre un exemple de flux binaire 21 et la représentation du fichier de description BSD partielle associée, sous la forme d'un sous-arbre 22.
Selon cet exemple, le bitstream 21 porte successivement les valeurs OxOl, 0x02, 0x03, etc.
La flèche 23 indique la position de la lecture du flux binaire à un instant t donné.
Ainsi, comme indiqué précédemment, les champs 24 correspondent donc à la partie du flux déjà lue, qualifiée d'aval, et les champs 25 correspondent à la partie du flux non encore lue, qualifiée d'amont.
Plus précisément, le format de ce flux indique que ce flux contient deux champs d'un octet de long 24 j et 242, e* optionnellement un troisième champ 251 qui est présent si et seulement si la valeur du premier champ 24 \ est égale à 1.
Ainsi, le schéma de description (Bitstream Syntax Schéma ou BS Schéma) présenté en annexe 1, partie A, spécifie ce format en BSDL, en déclarant trois éléments ell, el2 et el3 de type xs : unsignedByte, l'élément el3 étant optionnel (son nombre d'occurrence pouvant être égal à 0) :
<xs:element name="ell" tγpe="xs : unsignedByte" /> <xs : élément name="el2" tγpe="xs : unsignedByte" /> <xs:element name="el3" tγpe="xs : unsignedByte" minθccurs=" 0 " bs2:if="/elθ/ell = l"/> L'attribut b2 : if contenu dans la déclaration de l'élément e!3 spécifie la condition de l'occurrence de cet élément par l'expression XPath " /elO /ell = 1 " . Cette expression XPath utilise notamment le chemin de localisation " /elO /ell " qui référence l' élément e 11.
Selon cette technique de l'art antérieur, le processeur BintoBSD lit donc le flux binaire selon l'information fournie par le BS Schéma tel que présenté en annexe 1, partie A : il lit les deux champs 241 et 242 d'une longueur d'un octet et instancie les éléments correspondants ell et el2 dans le fichier de description
BSD.
On rappelle notamment que le contenu texte de ces éléments est égal aux valeurs des champs.
L'annexe 1 présente également, en partie B, le fichier de description partielle BSD du flux binaire tel qu'instancié après que le processeur BintoBSD ait lu les deux premiers champs 24χ et 242 selon cet exemple. Pour savoir s'il doit lire le troisième champ correspondant à el3, le processeur BintoBSD doit alors évaluer l'expression XPath " /elO /ell = 1 " vis-à-vis de cette description partielle.
On constate donc que pour réaliser ce test, le processeur BintoBSD doit stocker en mémoire la BSD partiellement instanciée.
B) Cas « aval » selon l'invention On présente désormais, en relation avec la figure 2 et l'annexe 2, qui fait partie intégrante de la description, une technique d'analyse syntaxique d'un flux binaire multimédia, avantageusement scalable, et de génération d'un fichier de description (BSD) selon un mode de réalisation particulier de l'invention.
On considère notamment dans ce cas qu'une caractéristique du champ du flux binaire à lire 251 (spécification de l'occurrence d'un élément par exemple) est déterminée par la valeur d'au moins un champ présent en aval dans le flux binaire, dit champ aval, par exemple le champ 2A\.
Plus précisément, selon ce mode de réalisation particulier de l'invention, lors de la déclaration des trois éléments ell, el2 et el3 dans le schéma de description présenté en annexe 2, partie A (qui est équivalent au schéma de description selon l'art antérieur, présenté en annexe 1, partie A), une information est ajoutée à la déclaration de l'élément ell sous la forme d'un attribut d'assignation bs2 : assignPost, qui indique au processeur BintoBSD qu'il doit stocker la valeur du champ aval après l'avoir lue, et la stocker sous la variable pari.
Ainsi, la déclaration des trois éléments ell, el2 et el3 est réalisée de la façon suivante :
<xs:element name="ell" tγpe="xs : unsignedByte" bs2 : assignPost="parl" /> <xs : élément name="el2" tγpe="xs : unsignedByte" /> <xs:element name="el3" tγpe="xs : unsignedByte" minθccurs=" 0 " bs2:if="$parl = l"/>
Ainsi, selon cet exemple, l'attribut d'assignation assignPost comprend un seul paramètre, permettant d'assigner une variable nommée pari à l'élément ell du schéma de description, et de stocker dans cette variable pari la valeur du champ aval après l'avoir lue.
Selon ce mode de réalisation, l'attribut bs2 : assignPost comprend donc un paramètre comprenant le nom de la variable qui sera référencée par la suite.
L'expression XPath utilisée par l'attribut bs2 : if dans la déclaration de l'élément el3 est alors remplacée par l'expression : " $parl = 1 ".
On rappelle en effet que la syntaxe $parl en langage XPath référence la variable nommée pari. En effet, XPath définit une syntaxe pour référencer une variable, sous la forme $nom. L'expression utilisée pour spécifier la condition d'occurrence de l'élément el3 est donc toujours conforme au langage XPath, ce qui permet à un processeur conforme à XPath de l'évaluer.
On voit ainsi que pour évaluer cette expression XPath, le processeur BintoBSD n'a plus besoin de stocker la BSD partielle représentée, mais seulement la valeur du champ 24 \ sous la référence $parl.
On présente également en annexe 2, partie B, un autre exemple de schéma de description où l'expression XPath spécifie une contrainte sur le nombre d'occurrences d'un élément.
La déclaration des éléments est la même que décrite précédemment, mais le schéma de description indique que le processeur BintoBSD doit instancier l'élément el3 un nombre de fois égal à la valeur de la variable pari plus un : <xs:element name="ell" tγpe="xs : unsignedByte" bs2 : assignPost="parl" /> <xs : élément name="el2" tγpe="xs : unsignedByte" /> <xs:element name="el3" tγpe="xs : unsignedByte" minθccurs=" 0 " bs2 :nθccurs="$parl + 1" maxOccurs="unbounded" />
On présente finalement en annexe 2, partie C, un autre exemple de schéma de description où l'expression XPath spécifie une contrainte sur le type d'un élément.
De nouveau, la déclaration des éléments ell, el2 et el3 est la même que décrite précédemment, mais le schéma de description indique que le type de l'élément el3 (à savoir hexadécimal) doit avoir une longueur égale à la valeur de la variable pari plus un. Le processeur BintoBSD lira donc un nombre d'octets pour l'élément el3 spécifié par l'expression : bs2 : length value=" $parl + 1 " C) Cas « amont » selon l'invention
On présente finalement, en relation avec la figure 3 et l'annexe 3, qui fait partie intégrante de la description, une technique d'analyse syntaxique d'un flux binaire multimédia, avantageusement scalable, et de génération d'un fichier de description (BSD) selon un mode de réalisation particulier de l'invention, en considérant qu'une caractéristique du champ du flux binaire à lire est déterminée par la valeur d'au moins un champ présent en amont dans le flux binaire. Plus précisément, la figure 3 illustre un exemple de flux binaire 31 et la représentation du fichier de description BSD partielle associée, sous la forme d'un sous-arbre 32. La flèche 33 indique la position de lecture du flux binaire à un instant t donné.
Comme indiqué précédemment, le champ 34 correspond à une partie du flux déjà lue, qualifiée d'aval, et les champs 35 (35χ, 352, 353, 354) correspondent à une partie du flux non encore lue, qualifiée d'amont.
L'annexe 3 donne un exemple de schéma de description dans lequel deux champs situés en amont définissent une condition sur l'instanciation et le type de l'élément ell : <xs:element name="ell" bs2 : assignPre="par2 0 32 par3 32 32" bs2 :if="$par3 = 'ftyp'" minθccurs=" 0 "> <xs : complexType bs2 : laγerLength=" $par2 ">
Plus précisément, selon cet exemple, l'attribut d'assignation assignPre comprend deux paramètres (« par2 0 32 » et « par3 32 32 »), comprenant chacun un triplet indiquant respectivement le nom par lequel la variable portant la valeur du champ amont est référencée, la position en nombre de bits par rapport au point courant et la longueur du champ amont portant des informations sur le champ à lire (nom, début, longueur).
Ainsi, chaque triplet permettant d'assigner une variable nommée par 2 (respectivement par 3) à un élément du schéma de description, d'identifier un champ amont situé 0 bits (respectivement 32 bits) en amont de la flèche 33, et de longueur 32 bits (respectivement 32 bits), et de stocker dans cette variable par 2
(respectivement par 3) la valeur du champ amont après l'avoir lue.
Autrement dit, selon ce mode de réalisation de l'invention, le processeur BintoBSD commence par lire, dans un premier temps, les deux champs du flux binaire identifiés par l'attribut bs2 : assignPre lorsqu'il essaie d'instancier l'élément ell, et stocke les valeurs de ces champs dans des variables par 2 et par3.
Dans un deuxième temps, le processeur évalue l'expression XPath contenue dans l'attribut bs2 : if pour vérifier s'il doit instancier l'élément ell. L'attribut bs2 : if spécifie donc une condition pour que l'élément ell soit instancié.
Cette condition porte sur la valeur d'un champ amont qui se situe 32 bits après le point courant (flèche 33) et a une longueur de 32 bits. Ce champ doit être égal à la séquence d'octets représentée par la séquence de quatre caractères ' f typ ' . On teste donc la valeur de la variable par 3.
Si la condition est remplie, alors le processeur instancie l'élément ell, puis évalue l'expression XPath comprise dans l'attribut bs2 : layerLength. L'attribut bs2 : layerLength, présent dans la définition du type (xs : complexType), définit la taille cumulée des sous-éléments de l'élément ell. Plus précisément, il utilise la variable par 2 pour déterminer la taille cumulée des sous-éléments de l'élément ell. Il peut ensuite instancier les sous- éléments el2, el3 et autant de sous-élément el4 que la taille cumulée de ell le permet. On rappelle que l'élément ell est de type complexe car il comprend des sous-éléments (c'est un nœud de l'arbre), tandis que les éléments el2, el3 et el4 sont de type simple (ce sont des feuilles de l'arbre).
Un tel mécanisme est nécessaire dans cet exemple puisque le nombre d'occurrences de l'élément el4 n'est, a priori, pas spécifié dans le schéma de description : l'élément ell comprend autant d'éléments el4 que sa taille cumulée spécifiée par b2 : layerLength le permet.
Dans cet exemple, la lecture du flux binaire se fait en plusieurs couches, une première couche permettant de lire tout le flux, puis une deuxième couche pour l'élément ell, etc. La valeur de la taille cumulée est spécifiée par un champ de 32 bits situé immédiatement en amont.
On constate finalement que la connaissance des valeurs des champs identifiés par les deux paramètres est nécessaire au moment de l'instanciation de l'élément ell, alors que les éléments correspondants n'ont pas encore été lus dans le fichier de description BSD. 5.3 Structure du dispositif de génération d'un fichier de description
On présente désormais, en relation avec la figure 4, la structure simplifiée d'un dispositif de génération d'un fichier de description mettant en œuvre une technique d'instanciation selon le mode de réalisation particulier décrit ci-dessus.
Un tel dispositif de génération comprend une mémoire 41, une unité de traitement 42, équipée par exemple d'un microprocesseur μP, et pilotée par le programme d'ordinateur 43, mettant en œuvre le procédé de génération d'un fichier de description selon l'invention.
A l'initialisation, les instructions de code du programme d'ordinateur 43 sont par exemple chargées dans une mémoire RAM avant d'être exécutées par le processeur de l'unité de traitement 42. L'unité de traitement 42 reçoit en entrée un flux binaire (21, 31) et un schéma de description 45. Le microprocesseur de l'unité de traitement 42 met en œuvre les étapes du procédé de génération d'un fichier de description décrit précédemment, pour déterminer un fichier de description BSD 46, selon les instructions du programme d'ordinateur 43.
ANNEXE 1 : ART ANTÉRIEUR
A. Exemple de schéma de description « Bitstream Syntax Schéma » selon l'art antérieur :
<?xml version="l.0" encoding="UTF-8 " ?> <xs : schéma xmlns :xs="http: //www.w3. org/2001/XMLSchema" xmlns :bsl="urn:mpeg:mpeg21 : 2003 : 01-DIA-BSDL1-NS" xmlns :bs2="urn:mpeg:mpeg21 : 2003 : 01-DIA-BSDL2-NS" elementFormDefault="qualifîed" bs2 : rootElement="ell">
<xs : import namespace="urn :mpeg:mpeg21 : 2003 : 01-DIA-BSDL1-NS" schemaLocation=" .. /SchemasFDIS/BSDL-l-SoPDAM2. xsd" />
< ' — La ligne ci-dessous déclare l 'élément elO — > <xs : élément name="elθ">
<< — La ligne ci-dessous définit le type de l 'élément elO comme étant un type complexe, c ' est-a-dire contenant des sous-éléments—> <xs : complexType>
<< — La ligne ci-dessous définit le modèle de contenu comme étant une séquence ordonnée de sous-éléments . —> <xs : sequence>
<xs:element name="ell" type="xs :unsignedByte" /> <xs:element name="el2" type="xs :unsignedByte" /> << — La ligne ci-dessous déclare l 'élément el3 et spécifie une condition a son occurrence --> <xs:element name="el3" type="xs :unsignedByte" minθccurs=" 0"
Figure imgf000023_0001
</xs : sequence> </xs : complexType> </xs : element> </xs : schema>
B. Exemple fichier de description partielle « Bitstream Syntax Description » associé :
<?xml version="l .0" encoding="UTF-8 " ?>
<elθ xmlns : xsi="http: //www. w3. org/2001/XMLSchema-instance"
XSi : noNamespaceSchemaLocation=" schemal . xsd" >
<ell>K/ell>
<el2>2</el2> </el0> ANNEXE 2 : COMMANDE ASSIGNPOST
A. Exemple de schéma de description « Bitstream Syntax Schéma » spécifiant une contrainte sur l'occurrence d'un élément selon un mode de réalisation de l'invention :
<?xml version="l.0" encoding="UTF-8 " ?> <xs : schéma xmlns :xs="http: //www.w3. org/2001/XMLSchema" xmlns :bsl="urn:mpeg:mpeg21 : 2003 : 01-DIA-BSDL1-NS" xmlns :bs2="urn:mpeg:mpeg21 : 2003 : 01-DIA-BSDL2-NS" élémentFormDefault="qualifîed" bs2 : rootElement="ell">
<xs : import namespace="urn :mpeg:mpeg21 : 2003 : 01-DIA-BSDL1-NS" schemaLocation=" .. /SchemasFDIS/BSDL-l-SoPDAM2. xsd" />
<xs : élément name="elθ"> <xs : complexType> <xs : sequence>
< ' — La ligne ci-dessous déclare l'élément ell et indique au processeur BmtoBSD de stocker la valeur de 1 'élément une fois lu sous la référence pari —>
<xs:element name="ell" type="xs :unsignedByte" bs2 : assignPost="parl" /> <xs:element name="el2" type="xs :unsignedByte" />
< ' — La ligne ci -dessous déclare l ' él ément e! 3 et spéci fi e une condi tion a son occurrence : il doi t être mstancié si et seul ement si la valeur du paramètre pari est égale a 1 — > <xs : element name="el3 " type=" xs : unsignedByte" minθccurs=" 0 " bs2:if="$parl = l"/> </xs : sequence> </xs : complexType> </xs : element> </xs : schema>
B. Exemple de schéma de description « Bitstream Syntax Schéma » spécifiant une contrainte sur le nombre d'occurrences d'un élément selon un mode de réalisation de l'invention :
<?xml version="l .0" encoding="UTF-8 " ?> <xs : schéma xmlns :xs="http: //www. w3. org/2001/XMLSchema" xmlns :bsl="urn:mpeg:mpeg21 : 2003 : 01-DIA-BSDL1-NS" xmlns :bs2="urn:mpeg:mpeg21 : 2003 : 01-DIA-BSDL2-NS" elementFormDefault="qualifîed" bs2 :rootElement="ell">
<xs : import namespace="urn :mpeg:mpeg21 : 2003 : 01-DIA-BSDL1-NS" schemaLocation=" .. /SchemasFDIS/BSDL-l-SoPDAM2. xsd" />
<xs : élément name="elθ"> <xs : complexType> <xs : sequence>
<xs:element name="ell" type="xs :unsignedByte" bs2 : assignPost="parl" /> <xs:element name="el2" type="xs :unsignedByte" /> <! — La ligne ci — dessous déclare 1 ' él ément el 3 et spéci fi e son nombre d ' occurrences comme étant égal à la valeur du paramètre pari pl us 1 — >
<xs:element name="el3" type="xs :unsignedByte" minθccurs=" 0" bs2 :nθccurs="$parl + 1" maxOccurs="unbounded" /> </xs : sequence> </xs : complexType> </xs : element> </xs : schema>
C. Exemple de schéma de description « Bitstream Syntax Schéma » spécifiant une contrainte sur le type d'un élément selon un mode de réalisation de l'invention :
<?xml version="l.0" encoding="UTF-8 " ?> <xs : schéma xmlns :xs="http: //www.w3. org/2001/XMLSchema" xmlns :bsl="urn:mpeg:mpeg21 : 2003 : 01-DIA-BSDL1-NS" xmlns :bs2="urn:mpeg:mpeg21 : 2003 : 01-DIA-BSDL2-NS" elementFormDefault="qualifîed" bs2 : rootElement="ell">
<xs : import namespace="urn :mpeg:mpeg21 : 2003 : 01-DIA-BSDL1-NS" schemaLocation=" .. /SchemasFDIS/BSDL-l-SoPDAM2.xsd"/> <xs : élément name="elθ"> <xs : complexType> <xs : sequence>
<xs:element name="ell" type="xs :unsignedByte" bs2 : assignPost="parl" /> <xs:element name="el2" type="xs :unsignedByte" />
<! — Les li gnes ci -dessous déclarent 1 ' él ément el 3 et contrai gnent son type à avoir une l ongueur égal e à à la val eur du paramètre pari pl us 1 — > <xs : élément name="el3 " > <xs : simpleType>
<xs : restriction base="xΞ : hexBinary"> <xs : annotation> <xs :appinfo>
<bs2:length value="$parl + l"/> </xs : appinfo> </xs : annotation> </xs:reΞtπction> </xs : simpleType> </xs : element> </xs : sequence> </xs : complexType> </xs : element> </xs : schema> ANNEXE 3 : COMMANDE ASSIGNPRE
Exemple de schéma de description « Bitstream Syntax Schéma » spécifiant une contrainte sur la taille cumulée des sous-éléments d'un élément selon un mode de réalisation de l'invention :
<?xml version="l.0" encoding="UTF-8 " ?>
<xs : schéma xmlns :xs="http: //www. w3. org/2001/XMLSchema" xmlns :bsl="urn:mpeg:mpeg21 : 2003 : 01-DIA-BSDL1-NS" xmlns :bs2="urn:mpeg:mpeg21 : 2003 : 01-DIA-BSDL2-NS" élémentFormDefault="qualifîed" bs2 :rootElement="ell">
<xs : import namespace="urn :mpeg:mpeg21 : 2003 : 01-DIA-BSDL1-NS" schemaLocation=" .. /SchemasFDIS/BSDL-l-SoPDAM2.xsd"/>
<xs : élément name="elθ"> <xs : complexType> <xs : sequence>
<< — La ligne ci-dessous déclare l'élément ell et indique au processeur BmtoBSD de lire deux champs dans le bitstream situés respectivemet 0 et 32 bits en amont, de longueur 32 bits, et d 'attribuer les valeurs lues aux paramètres par2 et par3. De plus, elle spécifie une contrainte sur l'occurrence de ell: pour être mstancié, la valeur du paramètre par3 doit être égale a la chaîne de caractères 'ftyp'. —> <xs:element name="ell" bs2 : asΞignPre="par2 0 32 par3 32 32" bs2:if="$par3 = 'ftyp1" minOccurs="0 ">
< < — La ligne ci -dessous spécifie la taille cumul ée des sous- él éments de el l, qui doi t être égale a la valeur du paramètre par2 — >
<xs : complexType bs2 : layerLength=" $par2 " > <xs : sequence>
<xs:element name="el2" type="xs :unsignedlnt "/> <xs:element name="el3" type="xs :unsignedlnt "/> <xs:element name="el4" type="xs :unsignedByte" maxOccurs="unbounded" /> </xs : sequence> </xs : complexType> </xs : element> </xs : sequence> </xs : complexType> </xs : element> </xs : schema>

Claims

REVENDICATIONS
1. Procédé de génération d'un fichier de description (14) d'un flux binaire (11), à partir d'un schéma de description (15) décrivant une structure et un contenu conformes à un format prédéterminé et comprenant un ensemble d'attributs et d'éléments, ledit flux binaire (11) étant composé d'une pluralité de champs, caractérisé en ce que ledit procédé comprend : une étape d'assignation d'au moins une valeur d'au moins un champ identifié dudit flux à au moins une variable définie par un attribut dudit schéma de description, dit attribut d'assignation ; une étape de stockage de ladite au moins une variable ; une étape de détermination d'au moins une caractéristique d'au moins un élément dudit fichier de description, à partir d'une évaluation d'une expression conditionnelle portant sur ladite au moins une valeur ; - une étape de génération d'une portion dudit fichier de description en fonction de la ou desdites caractéristiques déterminées lors de ladite étape de détermination.
2. Procédé de génération d'un fichier de description selon la revendication 1, caractérisé en ce que ledit attribut d'assignation comprend au moins un paramètre comprenant au moins ladite variable.
3. Procédé de génération d'un fichier de description selon l'une quelconque des revendications 1 et 2, caractérisé en ce que ledit champ identifié correspond à un champ en cours de lecture dans ledit flux binaire.
4. Procédé de génération d'un fichier de description selon l'une quelconque des revendications 1 et 2, caractérisé en ce qu'au moins un desdits paramètres comprend un triplet comprenant ladite variable et au moins deux informations d'identification appartenant au groupe comprenant au moins : une position de début de champ dans ledit flux binaire, une position de fin de champ dans ledit flux binaire, - une longueur de champ dans ledit flux binaire, lesdites informations d'identification permettant d'identifier ledit champ identifié.
5. Procédé de génération d'un fichier de description selon l'une quelconque des revendications 1 à 4, caractérisé en ce que ladite étape d'évaluation fait référence à ladite variable.
6. Procédé de génération d'un fichier de description selon l'une quelconque des revendications 1 à 5, caractérisé en ce que ladite au moins une caractéristique appartient au groupe comprenant au moins : un type d'un élément ; une longueur d'un élément ; - un nombre d'occurrence d'un élément.
7. Procédé de génération d'un fichier de description selon l'une quelconque des revendications 1 à 6, caractérisé en ce que ledit flux binaire est un flux multimédia scalable.
8. Procédé de génération d'un fichier de description selon l'une quelconque des revendications 1 à 7, caractérisé en ce que ledit fichier de description est de type Bitstream Syntax Description et ledit schéma de description est de type Bitstream Syntax Schéma selon la norme MPEG-21 Partie 7.
9. Dispositif de génération d'un fichier de description d'un flux binaire, à partir d'un schéma de description décrivant une structure et un contenu conformes à un format prédéterminé et comprenant un ensemble d'attributs et d'éléments, ledit flux binaire étant composé d'une pluralité de champs, caractérisé en ce que ledit dispositif comprend : des moyens d'assignation d'au moins une valeur d'au moins un champ identifié dudit flux à au moins une variable définie par un attribut dudit schéma de description, dit attribut d'assignation ; des moyens de stockage de ladite au moins une variable ; des moyens de détermination d'au moins une caractéristique d'au moins un élément dudit fichier de description, à partir d'une évaluation d'une expression conditionnelle portant sur ladite au moins une valeur ; - des moyens de génération d'une portion dudit fichier de description en fonction de la ou desdites caractéristiques déterminées lors de ladite étape de détermination.
10. Produit programme d'ordinateur téléchargeable depuis un réseau de communication et/ou enregistré sur un support lisible par ordinateur et/ou exécutable par un processeur caractérisé en ce qu'il comprend des instructions de code de programme pour l'exécution des étapes du procédé de génération d'un fichier de description d'au moins une des revendications 1 à 8, lorsque ledit programme est exécuté sur un ordinateur.
PCT/FR2007/051026 2006-03-28 2007-03-27 Procede de generation d'un fichier de description d'un flux binaire, dispositif et produit programme d'ordinateur correspondants WO2007110550A2 (fr)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US12/294,755 US8583815B2 (en) 2006-03-28 2007-03-27 Method of generating a file describing a bitstream, corresponding device and computer program product
EP07731834.3A EP1999649B1 (fr) 2006-03-28 2007-03-27 Procede de generation d'un fichier de description d'un flux binaire, dispositif et produit programme d'ordinateur correspondants
JP2009502169A JP5357747B2 (ja) 2006-03-28 2007-03-27 ビットストリームを記述するファイルを生成する方法、対応する装置及びコンピュータプログラムプロダクト

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0602689 2006-03-28
FR0602689 2006-03-28

Publications (2)

Publication Number Publication Date
WO2007110550A2 true WO2007110550A2 (fr) 2007-10-04
WO2007110550A3 WO2007110550A3 (fr) 2008-01-03

Family

ID=37405764

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2007/051026 WO2007110550A2 (fr) 2006-03-28 2007-03-27 Procede de generation d'un fichier de description d'un flux binaire, dispositif et produit programme d'ordinateur correspondants

Country Status (4)

Country Link
US (1) US8583815B2 (fr)
EP (1) EP1999649B1 (fr)
JP (1) JP5357747B2 (fr)
WO (1) WO2007110550A2 (fr)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9460232B2 (en) * 2010-04-07 2016-10-04 Oracle International Corporation Searching document object model elements by attribute order priority
CN110333870B (zh) * 2019-06-28 2023-04-18 潍柴动力股份有限公司 Simulink模型变量分配的处理方法、装置及设备

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100486713B1 (ko) * 2002-09-17 2005-05-03 삼성전자주식회사 멀티미디어 스트리밍 장치 및 방법
US7162533B2 (en) * 2004-04-30 2007-01-09 Microsoft Corporation Session description message extensions
US7870125B1 (en) * 2005-12-27 2011-01-11 Charter Communications Holding Company Integrated media content server system and method for the customization of metadata that is associated therewith

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
DE SCHRIJVER D ET AL: "MPEG-21 bitstream syntax descriptions for scalable video codecs" MULTIMEDIA SYSTEMS, [Online] vol. 11, no. 5, 8 février 2006 (2006-02-08), pages 403-421, XP002409151 ISSN: 1432-1882 Extrait de l'Internet: URL:http://dx.doi.org/10.1007/s00530-006-0021-5> [extrait le 2006-11-27] *
DEVILLERS S ET AL: "Bitstream Syntax Description-Based Adaptation in Streaming and Constrained Environments" IEEE TRANSACTIONS ON MULTIMEDIA IEEE USA, [Online] vol. 7, no. 3, juin 2005 (2005-06), pages 463-470, XP002409152 ISSN: 1520-9210 Extrait de l'Internet: URL:http://dx.doi.org/10.1109/TMM.2005.846794> [extrait le 2006-11-27] *
DEVILLERS S: "An Extension of BSDL for Multimedia Bitstream Syntax Description" LECTURE NOTES IN COMPUTER SCIENCE, 2003, pages 1216-1223, XP019001725 ISSN: 0302-9743 ISBN: 978-3-540-40788-1 *

Also Published As

Publication number Publication date
US8583815B2 (en) 2013-11-12
EP1999649A2 (fr) 2008-12-10
EP1999649B1 (fr) 2019-01-16
US20100281177A1 (en) 2010-11-04
WO2007110550A3 (fr) 2008-01-03
JP5357747B2 (ja) 2013-12-04
JP2009531910A (ja) 2009-09-03

Similar Documents

Publication Publication Date Title
US10708380B2 (en) Templating data service responses
US8849991B2 (en) System and method for hypertext transfer protocol layered reconstruction
WO2002063776A2 (fr) Procede de compression/decompression d&#39;un document structure
FR2945363A1 (fr) Procede et dispositif de codage d&#39;un document structure
FR2882164A1 (fr) Procede et dispositif de transfert de donnees numeriques a format progressif
WO2014055565A1 (fr) Système et procédé permettant d&#39;optimiser des vidéos
US20090190473A1 (en) Method and apparatus for targeted content delivery based on internet video traffic analysis
FR2909198A1 (fr) Procede et disositif de filtrage d&#39;elements d&#39;un document structure a partir d&#39;une expression.
US11360826B2 (en) Virtual graph nodes
FR2863127A1 (fr) Procedes et dispositifs pour la delivrance asynchrone de donnees numeriques
FR2906383A1 (fr) Referentiel semantique de services web et procede utilisant ce referentiel
FR2812501A1 (fr) Procede de gestion de donnees de contenu pour une diffusion numerique en utilisant un fichier de definition d&#39;application et systeme de gestion correspondant
EP1999649B1 (fr) Procede de generation d&#39;un fichier de description d&#39;un flux binaire, dispositif et produit programme d&#39;ordinateur correspondants
WO2008095800A1 (fr) Procede de transmission d&#39;au moins un contenu representatif d&#39;un service, depuis un serveur vers un terminal, dispositif et produit programme d&#39;ordinateur correspondants
EP3780632B1 (fr) Systeme de distribution d&#39;un contenu audiovisuel
Van Deursen et al. NinSuna: a fully integrated platform for format-independent multimedia content adaptation and delivery using Semantic Web technologies
FR2893470A1 (fr) Procede et dispositif de creation d&#39;une sequence video representative d&#39;une sequence video numerique et procedes et dispositifs de transmission et reception de donnees video associes
FR2841079A1 (fr) Procede de diffusion d&#39;application html
FR2952203A1 (fr) Procede de generation d&#39;un flux web et un systeme associe
FR2855695A1 (fr) Procede et dispositif de diffusion cyclique radio vers des clients differents
FR2925721A1 (fr) Procede et dispositif de compilation et d&#39;evaluation d&#39;une pluralite d&#39;expressions a evaluer sur un document structure
WO2005020096A2 (fr) Procede de navigation pour le prechargement, serveur, unite et programmes d&#39;ordinateur pour mettre en oeuvre le procede
EP1494419A1 (fr) Système de transmission de paramètres caractéristiques d&#39;une session de communication d&#39;un terminal vers un serveur distant
Benna et al. SAWSDL, mediation and XQUERY for web services discovery
Van Deursen et al. NinSuna: a Platform for Format‐Independent Media Resource Adaptation and Delivery

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 2009502169

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 2007731834

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 12294755

Country of ref document: US