Table des matières
La documentation DCP Inside est le fruit de deux ans et demi de travail (avec certaines pauses…) , de longues et nombreuses lectures de documentations, de normes, de white-papers et de thèses sur le monde du cinéma numérique, de l'imagerie ou du son.
Voici la table des matières complètes de l'ensemble des thèmes abordés dans DCP-Inside. Les différents chapitres peuvent être imbriqués entre eux. Vous retrouverez un résumé rapide et graphique juste en dessous. N'hésitez pas à parcourir l'ensemble de la table des matières pour découvrir des chapitres non-mentionnées dans le résumé graphique. (note: il existe des chapitres cachés - encore en cours d'écriture ;-)
Vous avez la possibilité d'annoter l'ensemble de la documentation, d'apporter vos commentaires (en cas d'erreur ou d'incompréhension). Le système d'annotation est persistent: vos annotations resteront et réapparaîtront à votre retour. Vous pourrez rééditer ou supprimer vos annotations si besoin. Si vous pouvez, mettez votre nom ou contact dans l'annotation, si j'ai besoin de vous recontacter pour un complément d'informations :)
Vue d'ensemble et résumé
Chapitrage en résumé
Préface
Histoire du cinéma numérique :
Digital Cinema Initiative (DCI) : Histoire & création
Le Digital Cinema Package (DCP) :
Digital Cinema Package Normes et spécifications
Les métadonnées d'un DCP :
L'AssetMap :
AssetMap AssetMap : Codes & Fichiers
La Packing List (PKL) :
PKL : Packing List PKL : Codes & Fichiers
La Composition Playlist (CPL) :
CPL : Composition Playlist CPL : Les types d'assets CPL : AssetType : Generic CPL : AssetType : TrackFile CPL : AssetType : PictureTrackFile CPL : AssetType : SoundTrackFile CPL : AssetType : SubtitleTrackFile CPL : AssetType : CaptionTrackFile CPL : AssetType : CompositionMetadata CPL : AssetType : Marker CPL : AssetType : DataTrackFile CPL : Codes & Fichiers
Les MXF : Les assets
MXF : Material Exchange Format KLV : Key-Length-Value KLV : Key: L'identifiant de type (ou Universal Label) KLV : Length : La taille des données KLV : Value : Les données utiles KLV : Les types & formats KLV : Local Tag : Les mini-identifiants MXF : Operational Pattern : Les différents modèles de MXF
Les MXF : Les KLV headers :
Partition Pack Primer Pack Preface Identification Content Storage Essence Container Data Material Package Source Package Track et ses enfants Timeline Track Static Track Sequence Timecode Component Source Clip Descriptive Medata (DM) Segment Fill Item
Les MXF : Les KLV footers :
Index Table Segment Random Index Pack
Les MXF : Les KLV spécifiques suivant le type de données :
MXF : Picture MXF : Picture : RGBA Essence Descriptor MXF : Picture : JPEG2000 Picture Sub-Descriptor MXF : Picture : Stereoscopique (3D) MXF : Picture : High Frame Rate (HFR) MXF : Sound MXF : Sound : Configuration Audio & Multichannel Audio (MCA) MXF : Subtitle : Les sous-titres (et ses compagnons) MXF : AuxData : Le containeur fourre-tout MXF : Dolby Atmos : Le son spatialisé MXF : D-Box : Le cinéma dynamique simple, les sièges mouvants, la gerbe au tournant
Les MXF : Divers :
MXF : Codes & Fichiers
La cryptographie dans un DCP :
Cryptographie : Préface Cryptographie : L'algorithme symétrique AES-CBC Cryptographie : L'algorithme asymétrique RSA La cryptographie appliquée dans un MXF
Les KDM : Les clefs numériques des films
KDM : Key Delivery Message KDM : Authenticated Public KDM : Authenticated Private KDM : Signature KDM : Codes & Fichiers DKDM
Les Certificats : Les papiers d'identité
Certificats : Les bases Certificats : Les champs (fields) d'un certificat x509 DCI Certificats : Identity Attributes : les attributs et leurs rôles Certificats : La chaîne de certification Certificats : Certificate Thumbprint Certificats : Public Key Thumbprint : dnQualifier Certificats : Création de nos propres certificats
Images :
L'image dans le cinéma numérique Linéarisation de l'image : remettre droit ce qui est courbé XYZ : L'espace colorimétrique utilisé dans le cinéma numérique Normalisation du point blanc Gamma Bitdepth 12 bits JPEG2000 : Le format d'image utilisé dans le cinéma numérique MXF : Picture
Sons :
Le son dans le cinéma numérique MXF : Sound MXF : Sound : Configuration Audio & Multichannel Audio (MCA) Immersive Audio Bitstream (IAB) : Le parent du son spatialisé Dolby Atmos : Le son spatialisé MXF : Dolby Atmos : Le son spatialisé DTS-X : Le son spatialisé Barco Auro : Le son spatialisé
Sous-titres :
CPL : AssetType : SubtitleTrackFile CPL : AssetType : CaptionTrackFile MXF : Subtitle : Les sous-titres (et ses compagnons)
Les Assets Annexes :
Immersive Audio Bitstream (IAB) : Le parent du son spatialisé Dolby Atmos : Le son spatialisé DTS-X : Le son spatialisé Barco Auro : Le son spatialisé D-Box : Le cinéma dynamique simple, les sièges mouvants, la gerbe au tournant MXF : D-Box : Le cinéma dynamique simple, les sièges mouvants, la gerbe au tournant 4DX : Le cinéma dynamique complexe, les sièges mouvants, la gerbe au tournant
Divers :
Digital Cinema Naming Convention : Les noms des DCP (quasi) normés X-Files : Les informations inclassables ;-)
Credits & Licence d'utilisation
Chapitrage complet
Préface
Préambule
Les outils et prototypes
Conclusion
Histoire du cinéma numérique
Digital Cinema Initiative (DCI) : Histoire & création
Préface
La préhistoire du cinéma numérique : le cinéma électronique
Les débuts de la normalisation : le cinéma numérique
StEM : le court-métrage d'évaluation
StEm n°2 : Digivolution !
Les spécifications DCI
Les choix techniques sélectionnés par le DCI
Listes des spécifications et normes DCI / SMPTE
Ressources
Le Digital Cinema Package (DCP)
Les métadonnées d'un DCP
Les métadonnées sont dispatchées dans l'AssetMap , des PackingLists (PKL) et des CompositionPlaylists (CPL).
L'AssetMap
AssetMap
Préface
Description
Schéma visuel de la structure XML
Explication de la structure XML
Explications des différents éléments
Cryptographie : Le grand manquant
Interop vs SMPTE
Notes
AssetMap : Codes & Fichiers
Les fichiers
Validation XML
Pour générer un UUID
Pour générer une date au format ISO
Pour parser une date au format ISO
Pour parser une date et la retourner au format ISO
Récupération d'élements dans une AssetMap
Récupération l'AnnotationText
Récupération des fichiers des différents assets
Récupération des identifiants (Id) des différents assets
La Packing List (PKL)
PKL : Packing List
Préface
Description
Schéma visuel de la structure XML
Explication de la structure XML
Cryptographie : La signature de la PKL
Notes
PKL : Codes & Fichiers 2
Les fichiers
Validation XML
Récupération de l'identifiant (Id) d'une PKL
Récupération des informations des assets
La Composition Playlist (CPL)
Les MXF : Les assets
Les MXF : Les KLV headers
Partition Pack
Préface
Description
Les métadonnées
Relation entre les différents partitions packs
Position de ces KLV dans un MXF
Les données brutes du KLV
Etude rapide de l'Universal Label de Partition Pack
Primer Pack
Préface
Description
Les données brutes du KLV
Etude rapide de l'Universal Label de Primer Pack
Notes
Preface
Préface
Description
Les données brutes du KLV
Etude rapide de l'Universal Label de Preface
Identification
Préface
Les métadonnées
Les données brutes du KLV
Etude rapide de l'Universal Label de Identification
Content Storage
Préface
Les métadonnées
Les données brutes du KLV
Etude rapide de l'Universal Label de Content Storage
Essence Container Data
Préface
Les metadonnées
Les données brutes du KLV
Etude rapide de l'Universal Label de Essence Container Data
Notes
Material Package
Préface
Les métadonnées
Les données brutes du KLV
Etude rapide de l'Universal Label de Material Package
Source Package
Préface
Les métadonnées
Les données brutes
Etude rapide de l'Universal Label de Source Package
Track et ses enfants
Timeline Track
Static Track
Timeline Track
Préface
Les métadonnées
Les données brutes du KLV
Etude rapide de l'Universal Label de Timeline Track
Notes
Static Track
Préface
Les métadonnées
Les données brutes du KLV
Etude rapide de l'Universal Label de Static Track
Notes
Sequence
Préface
Les métadonnées
Les données brutes du KLV
Etude rapide de l'Universal Label de Sequence
Timecode Component
Préface
Les métadonnées
Les données brutes du KLV
Etude rapide de l'Universal Label de Timecode Component
Source Clip
Préface
Les métadonnées
Les données brutes du KLV
Etude rapide de l'Universal Label de SourceClip
Descriptive Medata (DM) Segment
Préface
Les métadonnées
Les données brutes du KLV
Etude rapide de l'Universal Label de DM Segment
Fill Item
Les MXF : Les KLV footers
Index Table Segment
Préface
Les métadonnées
Etude rapide de l'Universal Label de Index Table Segment
Random Index Pack
Preface
Les métadonnées
Etude rapide de l'Universal Label de Random Index Pack
Les MXF : Les KLV spécifiques suivant le type de données
MXF : Picture 1
Préface
Les KLV Headers
Les KLV Body : Picture Essence
Code : Lire et extraire les KLV Picture Essence
Code : Ecriture nos propres KLV Picture Essence
Cryptographie
Colorimétrie XYZ
Encodage JPEG2000
Stéréoscopie (3D)
High Frame Rate (HFR)
Notes
MXF : Picture : RGBA Essence Descriptor 2
Préface
Les métadonnées
Structures des données
Hiérarchie du format
Code : Lire ce KLV
La suite...
Notes
MXF : Picture : JPEG2000 Picture Sub-Descriptor 2
Préface
Les métadonnées
Structures des données
Hiérarchie du format
Lire ce KLV
MXF : Picture : Stereoscopique (3D)
Préface
Les métadonnées
Lire et extraire les images stéréoscopiques
Les modifications dans la Composition Playlist (CPL)
Faire de la stéréoscopie sans utiliser ce workflow
Comment faire de la 3D en HFR
Samples
MXF : Picture : High Frame Rate (HFR)
Préface
High Frame Rate (HFR) & Stéréoscopie (3D)
Samples
Notes
MXF : Sound 1
Préface
Les KLV de métadonnées (Partition Header)
Métadonnées supplémentaires : La configuration sonore & Multichannel Audio (MCA)
A l'intérieur du KLV Sound Essence
Création d'un header WAVE (Python)
Extraire la piste son au format WAV (Python)
Ecrire nos propres KLV
Techniques
Notes
MXF : Sound : Configuration Audio & Multichannel Audio (MCA)
Préface
Channel Assignment : Le point d'entrée
Les Sub-Descriptors Audios : Préface
Les Sub-Descriptors Audios : En détail
Channel Layout / Soundfield Groups Configuration : le statique dynamique statique
Conclusion
Notes
MXF : Subtitle : Les sous-titres (et ses compagnons)
Préface
Les métadonnées
Contenu d'un fichier sous-titres classique
Contenu d'un fichier sous-titres avec des images
Conclusion
Samples
Ressources annexes
Notes
MXF : AuxData : Le containeur fourre-tout
Préface
Dolby Atmos ?
DTS-X ?
Barco Auro ?
Notes
MXF : Dolby Atmos : Le son spatialisé 9
Préface
Les métadonnées
Les données
A l'intérieur du IABitstream : Le container maître de base
A l'intérieur d'une IABitstream frame : l'unité de base
Les IAElements : Les blocs de métadonnées et de données utiles
Les différents éléments : Leurs structures internes
IABitstream frame
IAElement
IA Frame
Bed Definition : le câblage des pistes (Bed) avec les assets audios
Object Definition : les métadonnées de spatialisation
Bed Remap : Configuration pour du sous-mixage
Object Zone Definition : Les zones alternatives
Authoring Tool Info : Les informations créateurs
User Data : Les métadonnées personnelles
Audio Data PCM & DLC : les containers audio
Audio Data DLC : l'élu pour le DCP-IAB !
Audio Data PCM : le recalé du DCP-IAB
L'encodage Plex : les tailles dynamiques
Analyse du MXF
Annexes
Notes
MXF : D-Box : Le cinéma dynamique simple, les sièges mouvants, la gerbe au tournant
Préface
Les configurations statiques & dynamiques
Les configurations statiques
Les configurations dynamiques
KDM
Codes
Analyse et données
Analyse des données D-BOX
Notes
Les MXF : Divers
MXF : Codes & Fichiers 6
JS-MXF
Récupération de l'identifiant d'un MXF (asdcplib)
Récupération de l'identifiant d'un MXF (Python)
Récupération de la Cryptographic-KeyID d'un MXF (asdcplib)
Récupération de la Cryptographic-KeyID d'un MXF (Python)
Afficher un SMPTE Universal Label - 16 octets (Python)
Afficher un SMPTE Universal Label - 12 octets (Python)
BER : Déterminer si BER est short form ou long form (C/C++)
BER : Retourner la taille du BER selon son code d'entête (C/C++)
BER : Calculer la taille (C/C++)
BER : Calculer la taille venant d'un BER 0x83 (en Python)
is SMTPE Universal Label (C/C++)
Afficher un SMPTE Universal Label - 16 octets (C/C++)
Lire un MXF et afficher Universal Label, taille et partie des données (C/C++)
Cryptographie
XOR
Chiffrement AES-128-CBC
Déchiffrement AES-128-CBC
Processus de déchiffrement de la Value du KLV Encrypted Essence Container
Création d'un MXF chiffré (asdcplib)
Création d'un MXF chiffré avec Plaintext Offset (asdcplib)
Extraction des essences d'un MXF chiffré (asdcplib) :
Extraction des essences d'un MXF chiffré (mxf-analyzer)
Création d'un MXF chiffré avec ASDCPlib (C++)
Fichiers
La cryptographie dans un DCP
Cryptographie : Préface
Différences entre cryptographie symétrique et asymétrique
Le workflow du chiffrement d'un DCP
Les chapitres sur la cryptographie liée au DCP
Les algorithmes et méthodes utilisés
Évolution(s) future(s)
Cryptographie : L'algorithme symétrique AES-CBC
Les différentes étapes d'un chiffrement AES-CBC
À l'intérieur du CBC
Advanced Encryption Standard (AES)
Un exemple concret
En résumé
Chapitres connexes
Références
Cryptographie : L'algorithme asymétrique RSA 1
Préface
Les différents types de fichiers RSA
Assets
Chapitres connexes
References
Notes
La cryptographie appliquée dans un MXF 3
Aperçu de l'intérieur des MXF
Les éléments nécessaires
La cryptographie utilisée
A l'intérieur des KLV chiffrés
Etude de la Value d'un KLV chiffré
Etude d'un KLV chiffré normal
Etude de la Value d'un KLV chiffré avec Plaintext Offset
Beyond the Value
Les KLV Headers en détail
Message Integrity Code (MIC)
Ecrire nos propres KLV cryptographiques
Le padding cryptographique et la limite de la bande passante
Conclusion
Annexe : Codes et techniques
Annexe : Identifiants UL & Label
Annexe : Samples
Annexe : Des tailles fixes dans un Variable-Length Pack ?
Références
Notes
Les KDM : Les clefs numériques des films
KDM : Key Delivery Message 1
Les normes SMPTE
Le principe d'un KDM
A l'intérieur d'un KDM
Sous chapitres
Chapitres connexes
Notes
KDM : Authenticated Public 2
Préface
A l'intérieur d'AuthenticatedPublic
A l'intérieur de KDMRequiredExtensions
Recipient: les informations sur le destinataire
CompositionPlaylistId : l'identifiant de la CPL lié au KDM
ContentTitleText : le nom du KDM
ContentAuthenticator (optionnel)
ContentKeysNotValid : la gestion des droits à peu de frais
AuthorizedDeviceInfo
KeyIdList : la liste des identifiants des clefs
KeyType : le type de l'asset lié à la clef
KeyId : l'identifiant de la clef de l'asset chiffré
ForensicMarkFlag : les options du KDM
NonCriticalExtensions : les extensions propriétaires
Sous chapitres
Chapitres connexes
Notes
KDM : Authenticated Private 1
Préface
A l'intérieur d'AuthenticatedPrivate
Les EncryptedKeys et leur CipherValue
Comment déchiffrer une CipherValue
Lecture de CipherValue :
Créer une CipherValue
Sous chapitres
Chapitres connexes
Notes
KDM : Signature
Préface
A l'intérieur de Signature
A l'intérieur de SignedInfo
A l'intérieur de SignatureValue
A l'intérieur de KeyInfo
Sous chapitres
Chapitres connexes
Notes
KDM : Codes & Fichiers 1
Déchiffrer une CipherValue
Déchiffrer une CipherValue
Ouvrir tous les CipherValue d'un KDM :
Créer une CipherValue (sans la structure KDM)
Créer une CipherValue (via OpenSSL)
XMLSec: La base des signatures numériques du KDM
Générer les Signatures (DigestValue + SignatureValue) d'un KDM
Vérifier les Signatures (DigestValue + SignatureValue) d'un KDM
Vérifier les Signatures (via OpenSSL)
Créer un DigestValue (via OpenSSL)
Créer une DigestValue (via OpenSSL)
Créer une SignatureValue (via OpenSSL)
Canonicalize XML C14N (Python)
Sous chapitres
Chapitres connexes
DKDM
Les Certificats : Les papiers d'identité
Images
L'image dans le cinéma numérique
Préface
Le workflow : les différentes étapes de la conversion
Linéarisation : remettre droit ce qui est courbé
Espace colorimétrique XYZ : un monde colorimétrique parallèle
Normalisation du point blanc : la revanche de croc-blanc
Gamma 2.6 : remettre courbé ce qui est droit
Bitdepth à 12 bits : on range les données
Format d'image JPEG2000 : on compresse les données
Conclusion
References
Notes
Linéarisation de l'image : remettre droit ce qui est courbé
Préface
Qu'est-ce que linéaire et non-linéaire ?
Principe de la linéarisation
Exemple rapide de linéarisation
Notes
XYZ : L'espace colorimétrique utilisé dans le cinéma numérique 2
Préface
Histoire et choix SMPTE
A l'intérieur du XYZ
Espace colorimétrique DCI-P3
Le principe de la conversion matricielle
Conversion vers XYZ
Conversion depuis XYZ
Dérivation des conversions
Les matrices de références
Le musée des matrices
Bonus Tracks
Fichiers et Assets
References
Notes
Normalisation du point blanc
Préface
Le patch de normalisation des composants XYZ
Explications sur cette normalisation
Bonus stage : Pourquoi la valeur 3960 pour le Y' ?
Conclusion
Références
Notes
Gamma
Préface
Modifier le gamma
Pow ! Pow ! Pow ! C'est la puissance du funk !
Supprimer un gamma (ou le rendre neutre)
Comment connaître le gamma d'entrée ?
Les gammas DCI
Appliquer un gamma 2.6
Appliquer un gamma 1/2.6
Fichiers et Assets
References
Notes
Bitdepth 12 bits
Préface
Lexique
Le choix du 12 bits
Conversion de bitdepth
Images 16-bits venant d'un DCDM
Images 16 bits (ou plus) classiques
Les couleurs dans une conversion
Conversion technique de bitdepth
La magie de la plage [0..1]
Conversion vers un nombre entier positif
Archivage / IMF
Fichiers et Assets
References
Notes
JPEG2000 : Le format d'image utilisé dans le cinéma numérique 8
Préface
Les transformations par ondelettes (wavelet transform)
Les bases des ondelettes
Les ondelettes par le calcul
Les décompositions 2D - pour les images
Les fonctions et filtrages
Les sub-bands LL, HL, LH & HH
Les coefficients de filtrages (filter banks)
Petits calculs et grands coefficients
Les coefficients pour le JPEG2000 (Daubechies 9/7, LeGall 5/3)
Et la méthode Lifting ?
Fast Wavelet Transform
High Throughput JPEG 2000 (HTJ2K)
Le JPEG2000 normé pour le cinéma numérique
A l'intérieur du JPEG200 D-Cinema
Les différents KLV de métadonnées
SOC : Start of codestream (FF4F)
SIZ : Image and tile size (FF51)
COD : Coding style default (FF52)
QCD : Quantization default (FF5C)
CME : Comment and extension (FF64)
POC : Progression Order Change (FF5F)
TLM : Tile-part lengths, main header (FF55)
SOT : Start of tile-part (FF90)
SOD : Start of data (FF93)
EOC : End of codestream (FFD9)
Spécifications et obligations du JPEG2000 DCI
Codes et techniques
Lire et parser un JPEG2000 soi-même
Les outils externes pour manipuler du JPEG2000
Références
Notes
MXF : Picture 1
Préface
Les KLV Headers
Les KLV Body : Picture Essence
Code : Lire et extraire les KLV Picture Essence
Code : Ecriture nos propres KLV Picture Essence
Cryptographie
Colorimétrie XYZ
Encodage JPEG2000
Stéréoscopie (3D)
High Frame Rate (HFR)
Notes
Sons
Le son dans le cinéma numérique
Son de base : Sound Essence
Son immersif : Object-Based Audio Essence (OBAE) aka Immersive Audio
Les différents chapitres liés au son
Notes
MXF : Sound 1
Préface
Les KLV de métadonnées (Partition Header)
Métadonnées supplémentaires : La configuration sonore & Multichannel Audio (MCA)
A l'intérieur du KLV Sound Essence
Création d'un header WAVE (Python)
Extraire la piste son au format WAV (Python)
Ecrire nos propres KLV
Techniques
Notes
MXF : Sound : Configuration Audio & Multichannel Audio (MCA)
Préface
Channel Assignment : Le point d'entrée
Les Sub-Descriptors Audios : Préface
Les Sub-Descriptors Audios : En détail
Channel Layout / Soundfield Groups Configuration : le statique dynamique statique
Conclusion
Notes
Immersive Audio Bitstream (IAB) : Le parent du son spatialisé
Préface
Normes et spécifications techniques
Spécifications techniques de l'IAB
MXF
Analyse du MXF
CPL
KDM
Références
Notes
Dolby Atmos : Le son spatialisé 1
Préface
CPL
MXF
Références
Notes
MXF : Dolby Atmos : Le son spatialisé 9
Préface
Les métadonnées
Les données
A l'intérieur du IABitstream : Le container maître de base
A l'intérieur d'une IABitstream frame : l'unité de base
Les IAElements : Les blocs de métadonnées et de données utiles
Les différents éléments : Leurs structures internes
IABitstream frame
IAElement
IA Frame
Bed Definition : le câblage des pistes (Bed) avec les assets audios
Object Definition : les métadonnées de spatialisation
Bed Remap : Configuration pour du sous-mixage
Object Zone Definition : Les zones alternatives
Authoring Tool Info : Les informations créateurs
User Data : Les métadonnées personnelles
Audio Data PCM & DLC : les containers audio
Audio Data DLC : l'élu pour le DCP-IAB !
Audio Data PCM : le recalé du DCP-IAB
L'encodage Plex : les tailles dynamiques
Analyse du MXF
Annexes
Notes
DTS-X : Le son spatialisé
Barco Auro : Le son spatialisé
Sous-titres
Les Assets Annexes
Divers