Chaque brique d'un MXF est surnommée KLV et peut être représenté comme cela :
KLV est la contraction de "Key, Length, Value" : c'est une structure de données définie dans la norme :
Cette structure est relativement simple, elle est divisée en 3 parties : elle commence par une clef, puis la taille des données et se termine par les fameuses données :
Par exemple, un KLV s'exprima sous cette forme schématisée :
Key | Length | Value |
---|---|---|
MaClef |
32 |
Lorem ipsum dolor sit amet odio. |
Ainsi :
MaClef
32 octets
.Lorem ipsum dolor sit amet odio.
est la donnée et fait 32 octets.Cet exemple est extrêmement simplifié pour la compréhension. Nous reviendrons sous sa véritable forme SMPTE / DCI par la suite.
Visuellement, voici à quoi ressemble l'intérieur d'un MXF avec plusieurs KLV :
Comme vous pouvez le constater, nous avons toujours une succession de :
Clé, Taille, Données.
Clé, Taille, Données.
Clé, Taille, Données.
...etc...
Chaque KLV a une taille variable suivant plusieurs critères dont notamment la taille de ses données.
Pour décrire rapidement chaque partie d'un KLV d'un MXF spécifique au DCP :
Clé (Key) sera un identifiant spécifique SMPTE (appelé Universal Label ou UL)
060e2b34
.060e2b34020501010d01020101020400
est l'identifiant pour une Partition Pack - Header définissant un entête de MXF.Taille (Length) détermine la taille des données de Value.
83000078
:
0x83
indique que la taille totale de Length est de 4 octets (on verra plus tard pourquoi),0x00
, 0x00
et 0x78
et définissent la taille de Value. Converti en décimal, 0x78
donne 120
(octets).Données (Value) sont les données utilisables et sont formés :
Voici une vision brute du début d'un MXF au format hexadécimal, les Key sont en orange, les Length en bleu et les Values (données) en rouge :
On vient de voir rapidement ce que sont les KLV : Une clef, une taille, des données. Rien de plus. Si vous avez compris ce principe, vous avez déjà compris la moitié du fonctionnement d'un MXF :-)
Nous reviendrons plus en profondeur sur chaque partie.
Mais avant, une rapide explication des termes "Universal Set" et "Universal Label" utilisés dans les documentations SMPTE car nous utiliserons ces termes assez régulièrement.
Dans le SMPTE Cinematique Universe, on aime les petits noms :
Les clefs / identifiants SMPTE (Key) sont appelés Universal Label (ou UL).
KLV -> Universal Set
Key -> Universal Label
Schématisé, cela donne ceci :
Mais pourquoi ces noms ?
Parce qu'il existe aussi des équivalents d'Universal Set et Universal Label mais pour d'autres KLV qui se trouveront dans la partie Value, des sortes de KLV enfants. Ces KLV enfants sont nommés Local Set et leur clef Local Tag .
Si nous devions résumer les différences entre les deux :
KLV | KLV enfant | |
---|---|---|
Nom du KLV | Universal Set | Local Set |
Nom de sa clef | Universal Label | Local Tag |
Ne me demandez pas pourquoi "Local Tag" n'a pas été nommé "Local Label", probablement l'alcool des créateurs.
Mais nous reviendrons sur ce concept de "KLV enfant" plus tard dans la partie Value.
Voyons maintenant plus en détail la partie Key d'un KLV
Sauf pour les exceptions, voir chapitre MXF-KLV-Length ↩
Sauf pour les exceptions, voir chapitre MXF-KLV-Length ↩