Identification

Références SMPTE 377-1 - MXF - File Format Specification
Chapitre A.3 - Preface P114
Modèle KLV Local Sets
Universal Label
06.0e.2b.34.02.53.01.01.0d.01.01.01.01.01.30.00 - Identification

Préface

Emplacement du KLV dans un MXF

Identification est la fiche d'identité du ou des créateurs du MXF.

Identification est l'endroit où va être stocké une multitude d'informations sur celui qui a créé ce MXF. Vous allez avoir surtout le nom du logiciel, de sa version, etc.

Même si la norme permet de créer plusieurs fiches d'identification, vous ne verrez normalement qu'un par MXF. Une fiche est créée pour chaque logiciel modifiant les métadonnées du MXF.

Les métadonnées

Voyons un exemple d'output :

╓───────────────────────────────────────────────────────────────────────────────
║   3C0A - Instance ID             ║    81305bab.afdc40f3.8177385d.dddf0778
║   3C09 - This Generation UID     ║    e8bf954d.4fd74050.8ca9e71f.457d04aa
║   3C01 - Company Name            ║    WidgetCo
║   3C02 - Product Name            ║    asdcp-test
║   3C03 - Product Version         ║    0.0.0.0.0
║   3C04 - Version String          ║    2.12.2
║   3C05 - Product UID             ║    7d836e16.37c74c22.b2e046a7.17e84f42
║   3C06 - Modification Date       ║    2022-04-08 12:55:36.0000+00:00
║   3C07 - ToolkitVersion          ║    2.12.2.27240.1
║   3C08 - Platform                ║    Unix
╙───────────────────────────────────────────────────────────────────────────────

This Generation UID : en gros, c'est un UUID qui doit changer à chaque modification du MXF.

Les autres métadonnées (Company, Product, Version, Toolkit, Platform) sont des informations sur le logiciel qui a généré ou manipulé le MXF.

Une note sur Product Version, chaque partie indique une donnée : numéro majeur, mineur, tertiaire, numéro du patch et numéro de la release. Le numéro de release est normée et son chiffre correspond à un statut particulier :

Les données brutes du KLV

Identification est de type Local Set, nous avons déjà étudié son parsing dans la Preface

Nous n'allons étudier ici que le type de données "chaînes de caractères" (String) qui composent les items comme Company Name, Product Name, Version String ou Platform.

Voici un exemple de données brutes :

3c0a001081305babafdc40f38177385ddddf07783c090010e8bf954d4fd740508ca9e71f457d
04aa3c0100100057006900640067006500740043006f3c02001400610073006400630070002d
00740065007300743c03000a000000000000000000003c04000c0032002e00310032002e0032
3c0500107d836e1637c74c22b2e046a717e84f423c06000807e604080c3724003c07000a0002
000c00026a6800013c080032007800380036005f00360034002d006100700070006c0065002d
00640061007200770069006e00310035002e0036002e0030

Pour comprendre, prenons Company Name (3C01) :

3c0a001081305babafdc40f38177385ddddf07783c090010e8bf954d4fd740508ca9e71f457d 04aa3c0100100057006900640067006500740043006f3c02001400610073006400630070002d 00740065007300743c03000a000000000000000000003c04000c0032002e00310032002e0032 3c0500107d836e1637c74c22b2e046a717e84f423c06000807e604080c3724003c07000a0002 000c00026a6800013c080032007800380036005f00360034002d006100700070006c0065002d 00640061007200770069006e00310035002e0036002e0030

Son encodage est en UTF-16, cela veut dire un encodage des caractères sous 16 bits (2 octets).

Un exemple de conversion en Python d'Unicode UTF-16 :

# u = unicode
print(u'\u0057\u0069\u0064\u0067\u0065\u0074\u0043\u006f')
'WidgetCo'

Vous pouvez tester avec un convertisseur en ligne UTF-16 / UTF-8.

Structures des données de Identification

Local Tag Nom de l'attribut Type Taille (*) Fixe/Variable SMPTE Obligatoire
3C0A Instance UID UID 16 octets Fixe Obligatoire
3C09 This Generation UID UID 16 octets Fixe Obligatoire
3C01 Company Name String UTF-16 xx octets Variable Obligatoire
3C03 Product Version ProductVersion 10 octets Fixe Optionnel
3C04 Version String String UTF-16 Variable Variable Obligatoire
3C05 Product UID UUID 16 octets Fixe Obligatoire
3C06 Modification Date Timestamp 8 octets Fixe Obligatoire
3C07 Toolkit Version ProductVersion 10 octets Fixe Optionnel
3C08 Platform String UTF-16 xx octets Variable Optionnel

Pour les types étranges :

Hiérarchie de format

Interchange ObjectIdentification

Etude rapide de l'Universal Label de Identification

UL = 06.0E.2B.34.02.53.01.vv.0D.01.01.01.01.01.30.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 : Identification
                                               ^^------------ MXF Set Definition : Identification