Références |
SMPTE 377-1-2019 - MXF - File Format Specification SMPTE 429-3-2007 - DCP - Sound And Pictures Track File SMPTE 429-2-2013 - DCP - DCP Operational Constraints SMPTE 428-12-2013 - DCDM - Common Audio Channels and Soundfield Groups SMPTE 377-4 - MXF Multichannel Audio Labeling Framework SMPTE 382M-2007 - MXF - Mapping AES3 and Broadcast Wave Audio into the MXF Generic Container SMPTE.RDD.0052-2020-D - Cinema Packaging-SMPTE DCP Bv2.1 Application Profile |
Modèle KLV |
Soundfield Group Label Sub-Descriptor : Data Groups - Local Sets Channel Label Sub-Descriptor : Data Groups - Local Sets |
Universal Label |
KLV :
060e2b34.02530101.0d010101.01016c00 - Multichannel Audio (MCA) Soundfield Group Label Sub-Descriptor
060e2b34.02530101.0d010101.01016b00 - Multichannel Audio (MCA) Channel Label Sub-Descriptor
Channel Assignment dans Wave Audio Descriptor : 060e2b34.0401010b.04020210.03010100 - Channel Configuration 1 - Statique
060e2b34.0401010b.04020210.03010200 - Channel Configuration 2 - Statique
060e2b34.0401010b.04020210.03010300 - Channel Configuration 3 - Statique
060e2b34.0401010b.04020210.03010400 - Channel Configuration 4 - Statique / Dynamique
060e2b34.0401010b.04020210.03010500 - Channel Configuration 5 - Statique
060e2b34.0401010b.04020210.03020000 - MXF Multichannel Audio Framework (MCA) - Dynamique
SoundField Configuration dans Soundfield Group Label Sub-Descriptor : 060e2b34.0101010e.01030701.01000000 - (Item) Multichannel Audio (MCA) Label Dictionnary ID
060e2b34.0401010d.03020201.00000000 - Soundfield Group - 5.1 (L, C, R, Ls, Rs, LFE)
060e2b34.0401010d.03020202.00000000 - Soundfield Group - 7.1DS (L, C, R, Lss, Rss, Lrs, Rrs, LFE)
060e2b34.0401010d.03020203.00000000 - Soundfield Group - 7.1SDS (L, Lc, C, Rc, R, Ls, Rs, LFE)
060e2b34.0401010d.03020204.00000000 - Soundfield Group - 6.1 (L, R, C, Lss, Rss, Cs, LFE)
060e2b34.0401010d.03020205.00000000 - Soundfield Group - Mono
Audio Channel ID : 060e2b34.0401010d.03020101.00000000 - Audio Channel - Left (L)
060e2b34.0401010d.03020102.00000000 - Audio Channel - Right (C)
060e2b34.0401010d.03020103.00000000 - Audio Channel - Center (C)
060e2b34.0401010d.03020104.00000000 - Audio Channel - LFE (LFE)
060e2b34.0401010d.03020105.00000000 - Audio Channel - Left Surround (Ls)
060e2b34.0401010d.03020106.00000000 - Audio Channel - Right Surround (Rs)
060e2b34.0401010d.03020107.00000000 - Audio Channel - Left Side Surround (Lss)
060e2b34.0401010d.03020108.00000000 - Audio Channel - Right Side Surround (Rss)
060e2b34.0401010d.03020109.00000000 - Audio Channel - Left Rear Surround (Lrs)
060e2b34.0401010d.0302010a.00000000 - Audio Channel - Right Rear Surround (Rrs)
060e2b34.0401010d.0302010b.00000000 - Audio Channel - Left Center (Lc)
060e2b34.0401010d.0302010c.00000000 - Audio Channel - Right Center (Rc)
060e2b34.0401010d.0302010d.00000000 - Audio Channel - Center Surround (Cs)
060e2b34.0401010d.0302010e.00000000 - Audio Channel - Hearing Impaired (HI)
060e2b34.0401010d.0302010f.00000000 - Audio Channel - Visually Impaired-Narrative (VIN)
|
Revenons aux bases avec quelques principes :
Dans un fichier sonore, vous avez une ou plusieurs pistes (track). Sur chaque piste, vous pouvez avoir un ou plusieurs canaux (channel). Chaque canal va être utile pour une sortie audio physique spécifique 1.
Exemple, dans un fichier sonore basique en stéréo :
Dans cette configuration, nous savons quel canal va vers quelle sortie. Mais quid quand nous avons plusieurs canaux allant jusqu'à 16 ?
Dans un MXF Audio, vous pouvez avoir jusqu'à 16 canaux différents mais comment définir quel canal va être utilisé pour quelle sortie ?
C'est là qu'arrive la configuration audio.
A l'aide de cette dernière, nous allons pouvoir mapper les différents channels.
Nous avons 2 grandes configurations audios :
Chaque configuration possède ses spécificités, nous allons étudier cela.
Pour comprendre la configuration audio, revenons sur notre Wave Audio Essence Descriptor. Pour savoir comment vont être interprétés les différents canaux dans un MXF, il faut se reporter à son item Channel Assignment qui sera l'identifiant de notre configuration audio :
Channel Assignment va spécifier dans quelle configuration audio nous serons. Il en existe officiellement 6 : 5 statiques et 1 dynamique (Multichannel Audio (MCA)).
Universal Label | Description | Type |
---|---|---|
060e2b340401010b0402021003010100 |
Channel Configuration 1 | Statique |
060e2b340401010b0402021003010200 |
Channel Configuration 2 | Statique |
060e2b340401010b0402021003010300 |
Channel Configuration 3 | Statique |
060e2b340401010b0402021003010400 |
Channel Configuration 4 | Statique / Dynamique |
060e2b340401010b0402021003010500 |
Channel Configuration 5 | Statique |
060e2b340401010b0402021003020000 |
MXF Multichannel Audio Framework (MCA) | Dynamique |
Vous remarquerez que j'ai surligné officiellement pour une raison :
Dans les normes, il est indiqué que pour utiliser le Multichannel Audio Framework (MCA), le Channel Assignment doit être l'Universal Label du Multichannel Audio Framework. Or, dans les faits, quand nous rencontrons une configuration MCA, ils utilisent surtout ... la configuration 4.
D'où le fait que j'ai indiqué Statique/Dynamique car la configuration 4 est dite ouverte, elle n'a aucun canal désigné par avance mais reste tout de même considéré comme "Statique".
Dans la norme de base, il est indiqué que la configuration 4 doit être utilisé pour du test mais dans la norme pour les DCP v2.1, il est indiqué qu'on peut utiliser la configuration 4 pour plaquer aussi une configuration MCA. Ainsi, tout le monde s'est engouffré dans la brèche, et tout le monde utilise la configuration 4 pour faire du Multichannel Audio.
Notez qu'il peut arriver que le Channel Assignement soit absent. Dans ce cas, la valeur par défaut sera Channel Configuration 1. 2
Maintenant que nous savons comment déterminer
Démarrons notre excursion dans les différentes configurations statiques et dynamiques.
Les règles des configurations statiques sont relativement simples, elles spécifient que tel canal sera désigné pour stocker tel type de sortie audio : Par exemple, pour la configuration 1 sur le canal 1, l'audio sera pour le Left.
Les normes SMPTE 429-2 spécifient 5 configurations statiques nommées simplement Channel Configuration 1 à 5.
Cependant, comme vu précédemment, seulement 4 sont réellement statiques : les configurations 1 à 3 et la configuration 5. Le Channel Configuration 4 étant à part, il ne sera donc pas étudié ici, nous le verrons dans la partie Configurations Dynamiques.
Nous avons 16 canaux maximum en tout, mais seulement 10 seront utilisés pour les configurations réellement statiques :
# | Channel Config 1 | Channel Config 2 | Channel Config 3 | Channel Config 5 | |
---|---|---|---|---|---|
1 | Left | Left | Left | Left | |
2 | Right | Right | Right | Right | |
3 | Center | Center | Center | Center | |
4 | LFE | LFE | LFE | LFE | |
5 | Left Surround | Left Surround | Left Surround | Left Side Surround | |
6 | Right Surround | Right Surround | Right Surround | Right Side Surround | |
7 | HI | Center Surround | Left Center | Left Rear Surround | |
8 | VIN | - | Right Center | Right Rear Surround | |
9 | - | HI | HI | HI | |
10 | - | VIN | VIN | VIN | |
11 | - | - | - | - | |
12 | - | - | - | - | |
13 | - | - | - | - | |
14 | - | - | - | - | |
15 | - | - | - | - | |
16 | - | - | - | - | |
UL | 060e2b34 0401010b 04020210 03010100 |
060e2b34 0401010b 04020210 03010200 |
060e2b34 0401010b 04020210 03010300 |
060e2b34 0401010b 04020210 03010400 |
060e2b34 0401010b 04020210 03010500 |
Les quelques acronymes du tableau :
Code | Nom | Description |
---|---|---|
LFE | Screen Low Frequency Effects | Le caisson de basses |
HI | Hearing Impaired | Piste dialogues prédominants |
VIN | Visually Impaired-Narrative | Personne qui décrit ce qu'il se passe à l'écran |
- | Silence | Intégrer seulement des zéros dans les données, ne pas produire de son durant la lecture |
Voici en image, la configuration des différents éléments sonores dans une salle de cinéma :
Avec ce type de configuration, vous savez où vous mettez les pieds, vous savez directement où se situe les données sans avoir besoin d'étudier d'autres métadonnées. C'est pour cela que dans ce type de MXF, vous ne trouverez que le KLV Wave Audio Essence Descriptor, avec ou sans item Channel Assignment.
Officiellement, il n'existe qu'une configuration dynamique, celle avec l'Universal Label Multichannel Audio Framework (MCA), cependant il existe une subtilité particulière avec deux configurations possibles :
La configuration 4 est normée comme étant statique et désignée pour une utilisation dans le cadre des tests ou des expérimentations.
La configuration MCA est normée comme dynamique et désignée pour une configuration dynamique des différents canaux.
Sauf qu'avec le temps, la configuration MCA n'a pas été utilisée (en tout cas, je n'en ai pas trouvé) et tout le monde s'est retournée vers la configuration 4 qui permettait de faire la même chose.
Donc si vous voyez dans Channel Assignement une de ses deux valeurs, vous aurez la configuration MCA active, mais vous verrez plus souvent Channel Assignement avec la Configuration 4 :
Universal Label | Description | Type |
---|---|---|
060e2b340401010b0402021003010400 |
Channel Configuration 4 | Statique / Dynamique |
060e2b340401010b0402021003020000 |
MXF Multichannel Audio Framework (MCA) 3 | Dynamique |
Reprenons notre tableau de tout à l'heure :
# | Channel Config 4 | ||||
---|---|---|---|---|---|
1 | CH1 | ||||
2 | CH2 | ||||
3 | CH3 | ||||
4 | CH4 | ||||
5 | CH5 | ||||
6 | CH6 | ||||
7 | CH7 | ||||
8 | CH8 | ||||
9 | CH9 | ||||
10 | CH10 | ||||
11 | CH11 | ||||
12 | CH12 | ||||
13 | CH13 | ||||
14 | CH14 | ||||
15 | CH15 | ||||
16 | CH16 |
Comme vous le constatez, aucune information ne permet de distinguer à quoi vont servir les différents canaux.
Pour cela, nous allons devoir nous appuyer sur d'autres KLV de métadonnées, en intégrant un item que nous n'avons pas vu auparavant, l'item Descriptors & Sub-Descriptors.
Wave Audio Essence Descriptor peut avoir un item Descriptors & Sub-Descriptors qui vont faire liens avec d'autres KLV de métadonnées.
Un exemple d'un Wave Audio Essence Descriptor avec l'item Descriptors & Sub-Descriptors :
Chaque Descriptors va faire référence à d'autres KLV : le premier descriptor va se référer à un KLV nommé Soundfield Group Label Sub-Descriptor et les autres descriptors aux KLV Audio Channel Label Sub-Descriptor.
Voici la hiérarchie des métadonnées Sub-Descriptors :
Comme vous le voyez, vous aurez votre KLV Wave Audio Essence Descriptor et, attaché à lui, un KLV Soundfield Group Label Sub-Descriptor accompagné de plusieurs KLV spécifiques Audio Channel Label Sub-Descriptor :
Le Soundfield Group Label va spécifier une configuration audio (par exemple 5.1)
Les Audio Channel Label vont définir les canaux un par un.
Par exemple le premier Audio Channel Label Sub-Descriptor va configurer le canal Left.
Notez qu'avec ces descriptors, nous pouvons configurer des pistes annexes comme:
Le lien entre Wave Audio Essence Descriptor et ses descriptors s'effectue entre Instance UID
Enfin, depuis le KLV Soundfield Group Label Sub-Descriptor grâce à son item MCA Link Id, nous définissons un identifiant utilisé dans chaque KLV Audio Channel Label Sub-Descriptor et défini dans l'item SoundfieldGroup Link ID (d'où le nom... :)
Prenons maintenant les données interpréter d'un KLV Wave Audio Essence Descriptor et de l'ensemble de la configuration Multichannel Audio Framework (Soundfield et Audio Channel) :
Ici, nous voyons que nous avons 8 items Descriptors & Sub-Descriptors :
Le premier sera le Soundfield Group Label Sub-Descriptor qui indique le type de disposition sonore (5.1) et va lier les différents Audio Channel Label Sub-Descriptors juste en dessous à son profil à l'aide de son MCA Id.
Nous avons un type de disposition sonore qui est le "5.1", donc les 5 prochains Audio Channel Label Sub-Descriptors seront les pistes sonores du 5.1 (Left, Right, Center, LFE, Left Surround, Right Surround).
Enfin, dans le dernier Audio Channel Label Sub-Descriptors, nous avons le canal spécifique pour le Visually Impaired Narrative.
Avec ces métadonnées, nous savons donc que les pistes de 1 à 6 seront pour notre 5.1. La piste 8 sera pour le VIN.
Avec le Multichannel Audio (MCA) Framework, tous les canaux de 1 à 16 sont configurables via le Soundfield Group Label et les multiples Audio Channel Label.
A l'aide du Multichannel Audio (MCA) Label Dictionnary ID vous pourrez déterminer le type de canal (en plus du Tag Name et Tag Symbol en complément). Cet identifiant permet de définir le type de canal audio :
Universal Label | Canal Audio |
---|---|
060e2b340401010d030201 |
Audio Channel - Left (L) |
060e2b340401010d030201 |
Audio Channel - Right (R) |
060e2b340401010d030201 |
Audio Channel - Center (C) |
060e2b340401010d030201 |
Audio Channel - LFE (LFE) |
060e2b340401010d030201 |
Audio Channel - Left Surround (Ls) |
060e2b340401010d030201 |
Audio Channel - Right Surround (Rs) |
060e2b340401010d030201 |
Audio Channel - Left Side Surround (Lss) |
060e2b340401010d030201 |
Audio Channel - Right Side Surround (Rss) |
060e2b340401010d030201 |
Audio Channel - Left Rear Surround (Lrs) |
060e2b340401010d030201 |
Audio Channel - Right Rear Surround (Rrs) |
060e2b340401010d030201 |
Audio Channel - Left Center (Lc) |
060e2b340401010d030201 |
Audio Channel - Right Center (Rc) |
060e2b340401010d030201 |
Audio Channel - Center Surround (Cs) |
060e2b340401010d030201 |
Audio Channel - Hearing Impaired (HI) |
060e2b340401010d030201 |
Audio Channel - Visually Impaired-Narrative (VIN) |
En résumé, dans votre essence, vous pouvez mettre vos différentes pistes audios dans l'ordre que vous souhaitez, puis avec plusieurs KLV Audio Channel Label, vous pouvez spécifier que tel ou tels canaux vont être pour le Left, le Right, le Center, les pistes spéciales pour les sourds et malentendants ou même les pistes utiles pour l'Immersive Audio ou DBOX.
Et là, vous vous dites que la configuration dynamique est géniale, on peut donc mettre le canal pour le LFE dans le channel 1, et le Surround sur les channels 11 et 12 ? Et bien non, enfin si, mais non, car il existe une règle où votre Configuration 4 qui est statique - mais utilisée pour du dynamique - possède quand même un mapping statique. Vous suivez ? 4
Selon certaines configurations sonores dans la Configuration 4, vous devrez appliquer un type de Channel Layout ou de Soundfield Groups Configuration.
Cette règle ne va pas s'appliquer à toutes les configurations sonores quand on va utiliser la Configuration 4. Vous avez le droit encore de définir vos canaux comme vous le voulez, mais c'est à vos risques et périls :) Dans les faits, personnes ne s'amusent à mapper les sorties audios comme bon lui semble, tout le monde respecte le layout utile pour son film.
Le Channel Layout ne va s'appliquer que dans quelques configurations sonores spécifiques : Mono, Stéréo, 5.1, 7.1 et Immersive Audio.
Pour savoir quelle configuration de Soundfield Groups, votre MXF appartient, il faut lire le KLV Soundfield Group Label Sub-Descriptor et l'item Label Dictionnary ID.
Et voici le mapping pour ce genre de configuration :
Channel | Mono | Stéréo | 5.1 | 7.1 | Immersive Audio |
---|---|---|---|---|---|
1 | - | Left | Left | Left | - |
2 | - | Right | Right | Right | - |
3 | Center | - | Center | Center | - |
4 | - | - | LFE | LFE | - |
5 | - | - | Left Surround | Left Side Surround | - |
6 | - | - | Right Surround | Right Side Surround | - |
7 | Hearing Impaired (HI) | Hearing Impaired (HI) | Hearing Impaired (HI) | Hearing Impaired (HI) | Hearing Impaired (HI) |
8 | Visual Impaired Narrative (VIN) | Visual Impaired Narrative (VIN) | Visual Impaired Narrative (VIN) | Visual Impaired Narrative (VIN) | Visual Impaired Narrative (VIN) |
9 | - | - | - | - | - |
10 | - | - | - | - | - |
11 | - | - | - | Left Rear Surround | - |
12 | - | - | - | Right Rear Surround | - |
13 | Motion Data | Motion Data | Motion Data | Motion Data | Motion Data |
14 | - | - | - | - | Sync Signal |
15 | Sign Language Video | Sign Language Video | Sign Language Video | Sign Language Video | Sign Language Video |
16 | - | - | - | - | - |
Vous remarquerez que pour l'Immersive Audio, le MXF sonore principal ne comporte quasiment rien hormis les canaux pour les éléments pour Sourds et Mal-Entendants (HI, VIN et SLV), le Motion Data qui sera utilisé par DBOX par exemple, le Sync Signal qui sert pour synchroniser avec le processeur audio externe (exemple avec le matériel Atmos).
Vous retrouverez ces informations dans :
Avec l'ensemble de ces informations, vous pourrez comprendre ce qui se trouve stocké dans les essences du MXF. Avec un seul KLV Wave Audio Essence Descriptor, vous pouvez déjà extraire et/ou lire les données audios de vos MXF. Avec les KLV de configuration audio, vous saurez maintenant à quoi ces données sont destinés.
Notez que vous pouvez retrouver un replica de ces données de configuration audio dans certaines CPL dans la partie CompositionMetadata.
Important, les pistes audios Atmos ne se trouvent pas dans ce MXF, mais dans un MXF spécifique utilisant la norme Immersive Audio Bitstream. Le seul élément Immersive Audio / Atmos que vous trouverez dans ce MXF sera le signal de synchronisation sur la piste 14.
La différence entre Channel & Track: https://sound.stackexchange.com/a/35516 ↩
If the Channel Assignment property is not present, Channel Configuration 1 shall be assumed by the decoder. -- SMPTE 429-2 DCP Operational Constraints + MXF encoders should set the optional Channel Assignment property of the Wave Audio Essence Descriptor -- SMPTE 382M-2007 - MXF - Mapping Audio in MXF Generic Container. ↩
Configurations using MXF Multichannel Audio Framework : When the Channel Assignment of the Wave Audio Essence Descriptor in a Sound Track File contains the UL defined in Table A.8 (aka 060e2b34.0401010b.04020210.03020000
), the framework specified in [SMPTE ST 377-4] shall be used in conjunction with the constraints defined in Annexes A.2.2 and A2.3 to unambiguously identify the audio channels and soundfield group carried in the Sound Track File. -- SMPTE 429-2-2013 - DCP Operational Constraints ↩
Pour vous montrer le niveau de bordel, la configuration 4 est même surnommée dans certaines documentations (comme ici ou encore ici) comme la "Wild Track Format" ... la WTF ;-). ↩