CPL : AssetType : CompositionMetadata

Préface

Le type d'asset CompositionMetadata est utilisé par CompositionMetadataAsset :

Longtemps absente, la CompositionMetadataAsset apparait principalement dans les DCP SMPTE créés à partir des années 2010.

Références SMPTE / DCI

Description

Voici un exemple de CompositionMetadata :

<CompositionMetadataAsset xmlns="http://www.smpte-ra.org/schemas/429-16/2014/CPL-Metadata">
  <Id>urn:uuid:ab0ee1ff-f2b9-40bf-8f7b-f08cce2daeb6</Id>                                 --------.
  <EditRate>48 1</EditRate>                                                                      |--- Generic
  <IntrinsicDuration>45020</IntrinsicDuration>                                           --------'
  <FullContentTitleText language="EN">Avatar: The Way of Water</FullContentTitleText>    --------.
  <ReleaseTerritory>001</ReleaseTerritory>                                                       |
  <VersionNumber status="final">1</VersionNumber>                                                |
  <Chain>All</Chain>                                                                             |--- CompositionMetadataAsset
  <Distributor>20th Century Studios</Distributor>                                                |
  <Facility>Walt Disney Studios</Facility>                                                       |
  <AlternateContentVersionList>                                                                  |
    <ContentVersion>                                                                             |
      <Id>urn:uuid:4fe83899-e35d-4641-93ad-ccf005da1b96</Id>                                     |
      <LabelText>AVATAR: THE WAY OF WATER</LabelText>                                            |
    </ContentVersion>                                                                            |
  </AlternateContentVersionList>                                                                 |
  <Luminance units="foot-lambert">14</Luminance>                                                 |
  <MainSoundConfiguration>51/L,R,C,LFE,Ls,Rs,-,-,-,-,-,-,DBOX,-,-,-</MainSoundConfiguration>     |
  <MainSoundSampleRate>48000 1</MainSoundSampleRate>                                             |
  <MainPictureStoredArea>                                                                        |
    <Width>2048</Width>                                                                          |
    <Height>858</Height>                                                                         |
  </MainPictureStoredArea>                                                                       |
  <MainPictureActiveArea>                                                                        |
    <Width>2048</Width>                                                                          |
    <Height>858</Height>                                                                         |
  </MainPictureActiveArea>                                                                       |
  <ExtensionMetadataList>                                                                        |
    <ExtensionMetadata scope="http://isdcf.com/ns/cplmd/app">                                    |
      <Name>Application</Name>                                                                   |
      <PropertyList>                                                                             |
        <Property>                                                                               |
          <Name>DCP Constraints Profile</Name>                                                   |
          <Value>SMPTE-RDD-52:2020-Bv2.1</Value>                                                 |
        </Property>                                                                              |
      </PropertyList>                                                                            |
    </ExtensionMetadata>                                                                         |
    <ExtensionMetadata scope="http://www.d-box.com/technical_notes/124-915-0005">                |
      <Name>D-BOX Enabled</Name>                                                                 |
      <PropertyList>                                                                             |
        <Property>                                                                               |
          <Name>D-BOX Motion Code Primary Stream</Name>                                          |
          <Value>true</Value>                                                                    |
        </Property>                                                                              |
      </PropertyList>                                                                            |
    </ExtensionMetadata>                                                                         |
  </ExtensionMetadataList>                                                                 ------'
</CompositionMetadataAsset>

L'AssetType CompositionMetadata sera utilisé par le tag CompositionMetadataAsset.

En résumé :

CompositionMetadataAsset.IntrinsicDuration   ==   Main(Stereoscopic)Picture.Duration
CompositionMetadataAsset.EditRate            ==   Main(Stereoscopic)Picture.EditRate

Duration et EntryPoint ne doivent pas être présents

XSD : https://smpte-ra.org/schemas/429-16/2014/CPL-Metadata ou CPL-ST429-16-CompositionMetadataAssetType.xsd

Cette partie permet de stocker des métadonnées supplémentaires applicables à la composition dans son ensemble. Elle permet également d'ajouter des métadonnées customisables ou pour de futurs développements (notamment grâce aux ExtensionMetadata)

Voici un bref résumé des différents éléments composants un bloc de CompositionMetadata :

Element Type Description
FullContentTitleText Texte Fully readable content title
ReleaseTerritory ISO Territory reference for content release
VersionNumber Temp, Pre-release or Final Release status plus version number
Chain Fully readable name of chain or specific event (if required)
Distributor Fully readable name of content distributor
Facility Fully readable name of mastering facility
AlternateContentVersionList Alternative Content Version UUID for content databases & Client Version IDs
Luminance Light level of picture recorded in Foot Lambert or Candela per sq.m units
MainSoundConfiguration Fully readable details of audio configuration
MainSoundSampleRate Fully readable details of sample rate
MainPictureStoredArea Pixel dimensions of Stored (full) picture (eg pillar/letterboxed)
MainPictureActiveArea Pixel dimensions of Active (visible) picture (eg pillar/letterboxed)
MainSubtitleLanguageList Fully readable details of open and closed subtitle languages
ExtensionMetadataList Extension Metadata

FullContentTitleText

Terminer ce paragraphe

Release Territory

C'est un code sur quelques lettres respectant la norme RFC-5646.

Exemple : FR, GB, US, UK, DE,... voire même BELGIUM, INT, GERMANY, FRANCE, ...

Le code 001 indique simplement que c'est une version internationale. (si vous voyez un code 003, c'est pour l'Amérique du Nord)

Quelques exemples :

<ReleaseTerritory>001</ReleaseTerritory>
<ReleaseTerritory>UK</ReleaseTerritory>
<ReleaseTerritory>US</ReleaseTerritory>
<ReleaseTerritory>fr</ReleaseTerritory>
<ReleaseTerritory>it</ReleaseTerritory>
<ReleaseTerritory>es</ReleaseTerritory>
<ReleaseTerritory>BELGIUM</ReleaseTerritory>
<ReleaseTerritory>FRANCE</ReleaseTerritory>

Vous retrouverez tous les codes sur IANA ou sa version simplifiée.

Version Number

La VersionNumber indique simplement le status et la version de la composition.

C'ets un simple chiffre. Il y a une subtilité : un attribut "status" qui permet de définir le statut de cette composition :

Valeurs Description
final Composition définitive, elle peut partir en projection
temp Il existe encore des éléments en cours de finalisation (exemple, une piste sonore non mixée, des plans non finalisés)
pre Pre-release : elle indique que image et son sont définitifs mais les autres parties peuvent être encore en attente de finalisation

Quelques exemples :

<VersionNumber status="final">1</VersionNumber>
<VersionNumber status="temp">42</VersionNumber>
<VersionNumber status="pre">1895</VersionNumber>

Si aucun attribut n'apparait, par exemple :

<VersionNumber>1</VersionNumber>

il est considéré par défaut comme final

Chain & Distributor & Facility

Les 3 champs sont des simples strings, vous êtes libre de mettre ce que vous voulez.

Chain : La cible de la CPL (cinéma, festival, etc..). La plupart du temps, vous ne verrez que All :

<Chain>All</Chain>

Distributor : Le nom du distributeur ou du studio dans la zone de distribution :

<Distributor>Paramount</Distributor>
<Distributor>Universal</Distributor>
<Distributor>Walt Disney Studios</Distributor>

Facility : Le nom du créateur de la CPL :

<Facility>Disney Post-Production Technology</Facility>
<Facility>Eclair</Facility>

Alternate Content Version List

Vous pouvez associé d'autres contenus à cette CPL grâce à des ContentVersion. Les ContntVersion sont de la même syntaxe que le ContentVersion que nous avons vu plus haut.

<AlternateContentVersionList>
    <ContentVersion>
        <Id>urn:uuid:4fe83899-e35d-4641-93ad-ccf005da1b96</Id>
        <LabelText>AVATAR: THE WAY OF WATER</LabelText>
    </ContentVersion>
</AlternateContentVersionList>

Le DTDC 1 utilise ce champ (surtout avec ExtensionMetadata) :

<AlternateContentVersionList>
    <ContentVersion>
        <Id>urn:uuid:be51959c-2e1b-4dce-b921-f31fe7e58114</Id>
        <LabelText>KrakenId-485182</LabelText>
    </ContentVersion>
</AlternateContentVersionList>

Luminance

Indique la luminance de l'écran sur lequel l'oeuvre a été étalonnée.

Vous aurez un attribut units qui va indiquer le type d'unité utiliser, il n'y en a que deux (pour l'instant):

Type Description
candela-per-square-metre Unité de luminance internationale et normée
foot-lambert 3.426 candela par mètre-carré

Historiquement, le cinéma utilise le foot-lambert, et la vidéo en cd/m2 (appelé aussi nits). Le plus souvent dans les DCP, vous verrez du foot-lamber (et souvent avec la valeur 14). Il n'y a pas de préférence ou de meilleur pour ce cas de figure. On dira que le foot-lambert est un peu le "Miles" de la lumière, si vous préférez respecter les normes internationales, privilégiez alors le candela-per-square-metre qui est une mesure normée (SI).

Voici quelques exemples :

<Luminance units="foot-lambert">14</Luminance>
<Luminance units="foot-lambert">6.0</Luminance>
<Luminance units="candela-per-square-metre">108</Luminance>
<Luminance units="candela-per-square-metre">31</Luminance>

Main Sound Configuration

Ce champ est une représentation lisible du soundfield et des canaux sonores présents dans MainSound.

Sa syntaxe respecte la norme IETF-5234 avec cette règle parfaitement lisible (* touss *):

MAINSOUND = SOUNDFIELD ["/" CHANNEL *("," CHANNEL)]
SOUNDFIELD = TOKEN
CHANNEL = "-" / TOKEN
TOKEN = 1*6(ALPHA / DIGIT)

Voici quelques exemples :

<MainSoundConfiguration>51/L,R,C,LFE,LS,RS,HI,VIN,-,-,-,-,DBOX,SYNC</MainSoundConfiguration>
<MainSoundConfiguration>71/L,R,C,LFE,Ls,Rs,Rls,Rrs,HI,VI-N</MainSoundConfiguration>
<MainSoundConfiguration>71/L,R,C,LFE,Lss,Rss,-,-,-,-,Lrs,Rrs,DBOX,FSKSync,-,-</MainSoundConfiguration>
<MainSoundConfiguration>M/C,-,-,-,-,-,-,-</MainSoundConfiguration>

Vous retrouverez certains codes ici ou à cette adresse :

Code Description
L Left
R Right
C Center
LFE Screen Low Frequency Effects
Ls Left Surround
Rs Right Surround
Lss Left Side Surround
Rss Right Side Surround
Lrs Left Rear Surround
Rrs Right Rear Surround
Lc Left Center
Rc Right Center
Cs Center Surround
HI Hearing Impaired (ex. piste dialogue prédominant)
VIN Visually Impaired-Narrative (personne qui décrit ce qu'il se passe à l'écran)
FSKSync Frequency Shift Keying Synchronization Signal
ATMOS Utilisé par le système ATMOS
DBOX Utilisé par le système DBOX
- Indique qu'on ne doit pas reproduire le son durant la lecture (silence)
51 5.1 = L, C, R, Ls, Rs, LFE
71 7.1DS = L, C, R, Lss, Rss, Lrs, Rrs, LFE
SDS 7.1SDS = L, Lc, C, Rc, R, Ls, Rs, LFE
61 6.1 = L, R, C, Lss, Rss, Cs, LFE
M 1.0 Mono = C

Voici en image, la configuration des différents éléments sonores dans une salle de cinéma :

Main Sound Sample Rate

MainSoundSampleRate est la valeur du SampleRate du MXF audio référencé dans MainSound.

99% du temps, vous n'aurez que la valeur 4800 1

<MainSoundSampleRate>48000 1</MainSoundSampleRate>

Vous retrouverez ce chiffre dans le KLV Wave Audio Essence Descriptor (060e2b34.02530101.0d010101.01014800) sur l'item Audio sampling rate (3D03)

 060e2b34.02530101.0d010101.01014800  :  Wave Audio Essence Descriptor
╓───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
║   Instance UID                     ║  cd5d10c0.e2c94eea.9d63549d.8ba20529
║   Linked Track ID                  ║  2
║   Sample Rate                      ║  24/1
║   Container Duration               ║  24
║   Essence Container                ║  060e2b34.04010101.0d010301.02060100 (Broadcast Wave audio - frame-based mapping)
║   Audio sampling rate              ║  48000/1
║   Locked/Unlocked                  ║  False
║   Audio Ref Level                  ║  0
║   ChannelCount                     ║  14
║   Quantization bits                ║  24
║   Dial Norm                        ║  0
║   Block Align                      ║  42
║   Sequence Offset                  ║  0
║   Average Bytes Per Second         ║  2016000
║   Channel Assignment               ║  060e2b34.0401010b.04020210.03010400
╙───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Main Picture Stored Area & Main Picture Active Area

Les deux paramètres StoredArea et ActiveArea seront utilisés par le player/projecteur :

<MainPictureStoredArea>
    <Width>3996</Width>
    <Height>2160</Height>
</MainPictureStoredArea>

<MainPictureActiveArea>
    <Width>2960</Width>
    <Height>2160</Height>
</MainPictureActiveArea>

Vous retrouverez ces informations dans les KLV RGBA Essence Descriptor et JPEG2000 Picture Sub-Descriptor

Main Subtitle Language List

MainSubtitleLanguageList indique les langues utilisées dans MainSubtitle, le premier doit être la langue principale.

<MainSubtitleLanguageList>fr</MainSubtitleLanguageList>
<MainSubtitleLanguageList>en</MainSubtitleLanguageList>

Cet élément est de type xs:list, normalement, ceci est parfaitement valide :

<MainSubtitleLanguageList>fr en</MainSubtitleLanguageList>

mais jamais constaté sur des centaines de milliers de CPLs étudiés.

Extension Metadata List

Cette partie est très particulière : elle intègre une multitude de propriétés stockées dans une structure.

Ces données permettent d'activer ou de désactiver des options dans certains contextes.

Voici quelques exemples de propriétés :

<ExtensionMetadataList>

     <!-- DCP SMPTE v2.1 (norme RDD-52) -->
    <ExtensionMetadata scope="http://isdcf.com/ns/cplmd/app">
        <Name>Application</Name>
        <PropertyList>
            <Property>
                <Name>DCP Constraints Profile</Name>
                <Value>SMPTE-RDD-52:2020-Bv2.1</Value>
            </Property>
        </PropertyList>
    </ExtensionMetadata>

     <!-- DCP SMPTE v2.1 (non normée en SMPTE mais utilisée) -->
     <!-- Normée dans Deluxe_Technicolor_Source_Delivery_Guidelines_1.0 -->
    <ExtensionMetadata scope="http://www.smpte-ra.org/schemas/429-16/201x/Ext-Meta#scope">
        <Name>SMPTE</Name>
        <PropertyList>
            <Property>
                <Name>Version</Name>
                <Value>Bv2.1</Value>
            </Property>
        </PropertyList>
    </ExtensionMetadata>

     <!-- DBOX -->
    <ExtensionMetadata scope="http://www.d-box.com/technical_notes/124-915-0005">
        <Name>D-BOX Enabled</Name>
        <PropertyList>
            <Property>
                <Name>D-BOX Motion Code Primary Stream</Name>
                <Value>true</Value>
            </Property>
        </PropertyList>
    </ExtensionMetadata>

     <!-- Deluxe-Technicolor KDM Delivery (Kraken) -->
    <ExtensionMetadata scope="http://kraken.dcinema.com/api/dcpProject?projectID=664377">
        <Name>DTDC Id</Name>
        <PropertyList>
            <Property>
                <Name>Kraken</Name>
                <Value>12345</Value>
            </Property>
        </PropertyList>
    </ExtensionMetadata>

     <!-- Deluxe-Technicolor KDM Delivery (XyTech) -->
    <ExtensionMetadata scope="http://kraken.dcinema.com/api/dcpProject?projectID=262595-1">
        <Name>DTDC Id</Name>
        <PropertyList>
            <Property>
                <Name>Xytech</Name>
                <Value>12345-1</Value>
            </Property>
        </PropertyList>
    </ExtensionMetadata>

     <!-- Fox Tracking -->
    <ExtensionMetadata scope="http://fox.com/schemas/2016/429-16#scope">
        <Name>Fox Extensions</Name>
        <PropertyList>
            <Property>
                <Name>PVID</Name>
                <Value>12345</Value>
            </Property>
        </PropertyList>
    </ExtensionMetadata>

     <!-- Dolby EDR / Dolby Vision -->
     <!-- ref. Deluxe_Technicolor_Source_Delivery_Guidelines_1.0 -->
     <!-- ref. Netflix Studios Digital-Cinema-Package-DCP-Specifications-Requirements -->
    <ExtensionMetadata scope="http://www.dolby.com/schemas/2014/EDR-Metadata">
        <Name>Dolby EDR</Name>
        <PropertyList>
            <Property>
                <Name>image transfer function</Name>
                <Value>PQ10K</Value>
            </Property>
        </PropertyList>
    </ExtensionMetadata>

    <!-- HDR DCI -->
    <!-- DCI High Dynamic Range D-Cinema Addendum Version 1.1 -->
    <ExtensionMetadata scope="http://www.dcimovies.com/schemas/2018/HDR-Metadata">
        <Name>Image Encoding Parameters</Name>
        <PropertyList>
            <Property>
                <Name>EOTF</Name>
                <Value>ST 2084</Value>
            </Property>
        </PropertyList>
    </ExtensionMetadata>

     <!-- Immersive Audio (ex. Dolby Atmos) -->
     <!-- ref. SMPTE 2098-2 - Immersive Audio Bitstream -->
    <ExtensionMetadata scope="http://isdcf.com/ns/cplmd/app">
        <Name>Application</Name>
        <PropertyList>
            <Property>
                <Name>IAB Profile</Name>
                <Value>SMPTE-ST-2098-2:2019-P1</Value>
            </Property>
        </PropertyList>
    </ExtensionMetadata>

    <!-- Sign Language Video - SMPTE DCP Bv2.1 -->
    <ExtensionMetadata scope="http://isdcf.com/2017/10/SignLanguageVideo">
        <Name>Sign Language Video</Name>
        <PropertyList>
            <Property>
                <Name>Language Tag</Name>
                <Value>fr</Value>
            </Property>
        </PropertyList>
</ExtensionMetadata>

</ExtensionMetadataList>

Vous aurez des métadonnées sous cette structure Property comprenant toujours deux éléments Name et Value.

Elle vous permet de définir des métadonnées pour votre gestion, par exemple en définissant une paire clef-valeur à l'intérieur de la CPL :

<ExtensionMetadata scope="http://dcp.inside/spec/20xx">
    <Name>DCP Inside</Name>
    <PropertyList>
        <Property>
            <Name>Version</Name>
            <Value>1.0</Value>
        </Property>
    </PropertyList>
</ExtensionMetadata>

Vous retrouverez également un listing à cette adresse: https://registry-page.isdcf.com/cplmetadataexts/

MCA Sub Descriptors

MCASubDescriptors est un replica des données Multichannel Audio Framework stockées dans le MXF Audio principal "MainSound".

Ce sont les mêmes Soundfield Group Label Sub-Descriptor et Audio Channel Label Sub-Descriptor qu'on retrouvera dans le chapitre MXF - Configuration Audio & Multichannel Audio (MCA). Si vous lisez ce chapitre, vous comprendrez directement la structure et les données s'y accompagnant.

Pour faire un bref résumé, tout comme le MXF, vous aurez en premier un SoundfieldGroupLabelSubDescriptor qui va décrire une configuration audio globale (ici un 5.1), suivi d'un ou plusieurs AudioChannelLabelSubDescriptor qui vont définir chaque canal et leurs rôles (exemple avec le 1er qui va définir le canal Left)

Un exemple simplifié d'un MCASubDescriptors :

<MCASubDescriptors xmlns="http://isdcf.com/ns/cplmd/mca" xmlns="http://www.smpte-ra.org/reg/395/2014/13/1/aaf" xmlns="http://www.smpte-ra.org/reg/335/2012">
    <SoundfieldGroupLabelSubDescriptor>
        <InstanceID>urn:uuid:2076ac42-9012-4def-a041-d4c6eb70960a</InstanceID>
        <MCALabelDictionaryID>urn:smpte:ul:060e2b34.0401010d.03020201.00000000</MCALabelDictionaryID>
        <MCALinkID>urn:uuid:a37a55a3-2690-4176-937c-35ccf8fefec7</MCALinkID>
        <MCATagSymbol>sg51</MCATagSymbol>
        <MCATagName>5.1</MCATagName>
        <RFC5646SpokenLanguage>en</RFC5646SpokenLanguage>
    </SoundfieldGroupLabelSubDescriptor>
    <AudioChannelLabelSubDescriptor>
        <InstanceID>urn:uuid:f1d7e871-4bf3-40f0-b546-47eec9709eab</InstanceID>
        <MCALabelDictionaryID>urn:smpte:ul:060e2b34.0401010d.03020101.00000000</MCALabelDictionaryID>
        <MCALinkID>urn:uuid:42055ad7-4399-47e3-b9fd-188e32288cc8</MCALinkID>
        <MCATagSymbol>chL</MCATagSymbol>
        <MCAChannelID>1</MCAChannelID>
        <MCATagName>Left</MCATagName>
        <RFC5646SpokenLanguage>en</RFC5646SpokenLanguage>
        <SoundfieldGroupLinkID>urn:uuid:a37a55a3-2690-4176-937c-35ccf8fefec7</SoundfieldGroupLinkID>
    </AudioChannelLabelSubDescriptor>
    <AudioChannelLabelSubDescriptor>
        <InstanceID>urn:uuid:42b7f6aa-d98e-4041-a8ad-3f39fd463d9e</InstanceID>
        <MCALabelDictionaryID>urn:smpte:ul:060e2b34.0401010d.03020102.00000000</MCALabelDictionaryID>
        <MCALinkID>urn:uuid:48356edf-5fcd-4542-bc1f-108f61e21d7f</MCALinkID>
        <MCATagSymbol>chR</MCATagSymbol>
        <MCAChannelID>2</MCAChannelID>
        <MCATagName>Right</MCATagName>
        <RFC5646SpokenLanguage>en</RFC5646SpokenLanguage>
        <SoundfieldGroupLinkID>urn:uuid:a37a55a3-2690-4176-937c-35ccf8fefec7</SoundfieldGroupLinkID>
    </AudioChannelLabelSubDescriptor>
</MCASubDescriptors>

Le doublon des données de MXF dans la CPL sont pour des raisons de logistiques et/ou d'interopérabilité entre les différentes machines qui manipuleront le DCP. Cela évite également de devoir parser les MXF pour obtenir ce genre d'informations.

A noter que dans le cadre des DCP v2.1, il faut au moins un MCASubDescriptors dans la CompositionMetadataAsset.

Conclusion

CompositionMetadata va devenir avec le temps l'élément de plus en plus important, intégrant énormément de métadonnées récoltées un peu partout facilitant le travail dans certains processus.

(oui, je n'ai pas grand chose à conclure là :)

Chapitre annexes

Notes


  1. DTDC est un système développé par Deluxe et Technicolor (le DT de DTDC :) permettant la livraison automatisée de KDM.