Sequence

Références SMPTE 377-1-2011 - MXF - File Format Specification
Chapitre B.16 - Sequence - Timecode P125
Chapitre B.19 - Sequence - Picture P126
Chapitre B.22 - Sequence - Sound P127
Chapitre B.25 - Sequence - Data P128
Chapitre B.28 - Sequence - Descriptive Metadata (DM) P129
Modèle KLV Local Sets
Universal Label
06.0e.2b.34.02.53.01.01.0d.01.01.01.01.01.0f.00 (SMPTE)

Préface

Sequence de la 1ère Timeline Track de Material Package

Chaque KLV Timeline Track et Static Track possède un KLV Sequence, quelques exemples de suite logique :

Si Timeline Track définie une piste, considérez Sequence comme la partie de la piste qu'on doit traiter. Dans notre cas, Sequence va gérer l'entièreté de la piste en question.

Si vous voulez une version imagée, voyez cela comme un tableau : chaque ligne va représenter une piste (Track) et chaque colonne, une séquence (Sequence); sauf qu'ici, nous aurons qu'une colonne très longue :)

Dans nos exemples, notre durée de séquence sera de seulement "1" : normal, notre MXF d'exemple est de seulement 1 seconde ;-)

1 seconde chrono

Même si le MXF permet de ne mettre qu'une frame ou un seul élément d'asset, il faudra au minimum 1 seconde de contenu pour avoir un MXF valide pour un DCP (restriction CPL demandant au moins une seconde de contenu)

Les métadonnées

Voici les cinq exemples de Sequence.

L'une venant du bloc Material Package (lié au MXF et à la timeline) :

Timeline Track (1):

╓──── Sequence #1 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
║   3C0A - Instance UID                  ║  d329b223.05f444f3.b53d99a4.3736bc4f
║   0201 - Data Definition               ║  060e2b34.04010101.01030201.01000000 (Timecode track with inactive user bits)
║   0202 - Duration                      ║  1
║   1001 - Structural Components UID     ║  1 item(s): 9ee8a2b8.196f4a56.a52befe8.84bf221d
╙────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Timeline Track (2) :

╓──── Sequence #2 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
║   3C0A - Instance UID                  ║  26be6965.2e49401a.9403760e.698fbb80
║   0201 - Data Definition               ║  060e2b34.04010101.01030202.01000000 (Picture Essence Track)
║   0202 - Duration                      ║  1
║   1001 - Structural Components UID     ║  1 item(s): 904cc9e3.ad1f47ef.87d5d409.0104e8e1
╙────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Et l'autre venant du bloc Source Package (lié aux essences) :

Timeline Track (1) :

╓──── Sequence #1 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
║   3C0A - Instance UID                  ║  d5e6616d.fbcc42eb.bbbda96f.9d356068
║   0201 - Data Definition               ║  060e2b34.04010101.01030201.01000000 (Timecode track with inactive user bits)
║   0202 - Duration                      ║  1
║   1001 - Structural Components UID     ║  1 item(s): 67b4b283.bb5a4df3.ba966abc.613f4490
╙────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Timeline Track (2) :

╓──── Sequence #2 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
║   3C0A - Instance UID                  ║  d424bd75.6f84499e.8728eee5.daa65edf
║   0201 - Data Definition               ║  060e2b34.04010101.01030202.01000000 (Picture Essence Track)
║   0202 - Duration                      ║  1
║   1001 - Structural Components UID     ║  1 item(s): cca28361.82d049f0.a685a683.46bba614
╙────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Static Track (3) :

╓──── Sequence #3 ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
║   3C0A - Instance UID                  ║  416f1c91.f8174e8b.a453cddc.f013865c
║   0201 - Data Definition               ║  060e2b34.04010101.01030201.10000000 (Descriptive Metadata Track)
║   1001 - Structural Components UID     ║  1 item(s): 65cb069c.ff594985.bf9651cd.7e6f200d
╙────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Data Definition est un identifiant (Universal Label) pour définir le type de données dans le Set. Voici les différents Universal Label que vous pourrez rencontrer :

Universal Label Description
060e2b34.04010101.01030201.01000000 Timecode Track
060e2b34.04010101.01030202.01000000 Picture Essence Track
060e2b34.04010101.01030202.02000000 Sound Essence Track
060e2b34.04010101.01030202.03000000 Data Essence Track
060e2b34.04010101.01030201.10000000 Descriptive Metadata Track

L'Universal Label Descriptive Metadata Track sera utilisé si l'enfant sera Metadata Descriptive Segment :

Duration disparait quand son père Track est de type Static Track : Static Track définit qu'il utilisera toute la piste, il est donc inutile de préciser une durée dans Sequence.

Structural Components UID va faire lien avec une structure de données additionnelles via son Instance ID. Selon l'endroit, on aura comme enfant un Timecode Component, un Source Clip ou bien un Descriptive Metadata (DM) Segment.

Les données brutes du KLV

Voir l'étude du parsing d'un KLV Local Set dans Preface, avec en supplément :

Nous n'avons rien de nouveau qui n'a pas déjà été étudié dans les autres chapitres.

Voici un exemple de données brutes (1er Sequence) au format hexadécimal avec un code couleur pour les différentes parties :

3c0a0010d329b22305f444f3b53d99a43736bc4f02010010060e2b3404010101010302010100 00000202000800000000000000011001001800000001000000109ee8a2b8196f4a56a52befe8 84bf221d

Structures des données

Local Tag Nom de l'attribut Type Taille (*) Fixe/Variable SMPTE Obligatoire
3C0A Instance ID UUID 16 octets Fixe Oui
0201 Data Definition UUID (UL) 16 octets Fixe Oui
0202 Duration int64 (1) 8 octets Fixe Non
1001 Structural Components UID Batch-UL 8+16n = 24 octets Variable Oui

(*) N'oubliez pas que les tailles sont purement indicatives car elles sont dynamiques et non fixes et dépendent des Length de chaque item. Notez cependant que la documentation SMPTE peut définir malgré tout certains items avec une valeur fixe, regardez dans la colonne Fixe/Variable SMPTE qui indique si la taille a été normée.

(1) Ce n'est pas uint64 car le nombre peut-être négatif dans certaines occasions (mais jamais pour indiquer une taille ou une durée)

Hiérarchie du format

Interchange ObjectStructural ComponentSequence

Etude rapide de l'Universal Label de Sequence

UL = 06.0E.2B.34.02.53.01.vv.0D.01.01.01.01.01.0F.00
                             ^^------------------------------ Item Designator    : Organizationally registered
                                ^^--------------------------- Organization       : AAF
                                   ^^------------------------ Application        : MXF / AAF Association Structural Metadata Sets
                                      ^^--------------------- Structure Version  : Structure Version 1
                                         ^^------------------ Structure Kind     : MXF / AAF Association compatible sets and packs
                                            ^^--------------- MXF Set Definition : Sequence
                                               ^^------------ MXF Set Definition : Sequence