Common command expressions used with asdcplib to wrap and unwrap DCinema and IMF essence into MXF trackfiles.
Digital Cinema
Picture ULs
Size | PictureEssenceCoding UL Value | Standard |
---|---|---|
2K | 060e2b34.04010109.04010202.03010103 | (ST-429-4) |
4K | 060e2b34.04010109.04010202.03010104 | (ST-429-4) |
Sound ULs
Config | UL Value | Standard |
---|---|---|
Config01 | 060e2b34.0401010b.04020210.03010100 | (ST-429-2) |
Config02 | 060e2b34.0401010b.04020210.03010200 | (ST-429-2) |
Config03 | 060e2b34.0401010b.04020210.03010300 | (ST-429-2) |
Config04 | 060e2b34.0401010b.04020210.03010400 | (ST-429-2) |
Config05 | 060e2b34.0401010b.04020210.03010500 | (ST-429-2) |
Soundfield Labels
The following expressions under the column ‘Label Writing’ should be passed to flag ‘-m’ when calling asdcp-wrap to write the relevant MCA tags.
Soundfield | Grouping | Label Writing | Channel Assignment UL |
---|---|---|---|
2 | 20/L,R,-,-,-,-,-,- | 21(L,R),-,-,-,-,-,- | 060e2b34.0401010b.04020210.03010400 |
5.1 | 51/L,R,C,LFE,Ls,Rs,-,- | 51(L,R,C,LFE,Ls,Rs),-,- | 060e2b34.0401010b.04020210.03010400 |
7.1 | 71/L,R,C,LFE,Lss,Rss,-,-,-,-,Lrs,Rrs,-,-,-,- | 71(L,R,C,LFE,Lss,Rss),-,-,-,-,(Lrs,Rrs),-,-,-,- | 060e2b34.0401010b.04020210.03010400 |
5.1 - HI/VIN | 51/L,R,C,LFE,Ls,Rs,HI,VIN | 51(L,R,C,LFE,Ls,Rs),-,- | 060e2b34.0401010b.04020210.03010400 |
7.1 - HI/VIN | 71/L,R,C,LFE,Lss,Rss,HI,VIN,-,-,Lrs,Rrs,-,-,-,- | 71(L,R,C,LFE,Lss,Rss),HI,VIN,-,-,(Lrs,Rrs),-,-,-,- | 060e2b34.0401010b.04020210.03010400 |
5.1 - Dbox | 51/L,R,C,LFE,Ls,Rs,-,-,-,-,-,-DBOX,-,-,- | 51(L,R,C,LFE,Ls,Rs),-,-,-,-,-,-,DBOX,-,-,- | 060e2b34.0401010b.04020210.03010400 |
7.1 - Dbox | 71/L,R,C,LFE,Lss,Rss,-,-,-,-,Lrs,Rrs,DBOX,-,-,- | 71(L,R,C,LFE,Lss,Rss),-,-,-,-,(Lrs,Rrs),DBOX,-,-,- | 060e2b34.0401010b.04020210.03010400 |
5.1 - Atmos | 51/L,R,C,LFE,Ls,Rs,-,-,-,-,-,-,-,FSKSync,-,- | 51(L,R,C,LFE,Ls,Rs),-,-,-,-,-,-,-,FSKSync,-,- | 060e2b34.0401010b.04020210.03010400 |
7.1 - Atmos | 71/L,R,C,LFE,Lss,Rss,-,-,-,-,Lrs,Rrs,-,FSKSync,-,- | 71(L,R,C,LFE,Lss,Rss),-,-,-,-,(Lrs,Rrs),-,FSKSync,-,- | 060e2b34.0401010b.04020210.03010400 |
NOTE: The UL does not need to be passed as a flag. asdcplib handles the assignment of the correct UL based on the label pasded to flag ‘-m’.
SMPTE DCP Wrapping
TASK: Create a 2K JPEG 2000 SMPTE Track file at 24fps with a given uuid processing all frames assigning the correct UL
# generate the uuid to use for the track file AssetUUID
$ kmuuidgen
d2bf1228-b683-44eb-b4c6-71b3cc28c638
# call asdcp-wrap and create the track file
$ asdcp-wrap -v -a d2bf1228-b683-44eb-b4c6-71b3cc28c638 -P 060e2b34.04010109.04010202.03010103 /
-p 24 j2c\1998x1080 mxf\J2C_d2bf1228-b683-44eb-b4c6-71b3cc28c638.mxf
Invoking the verbosity flag ‘-v’ will produce output for every JPEG file processed printed to stdout.
Next lets confirm that the values we passed were used by parsing the MXF we just created. We can do this by setting multiple flags to asdcp-info
# use asdcp-info to parse the track file
$ asdcp-info -c -i mxf\J2C_d2bf1228-b683-44eb-b4c6-71b3cc28c638.mxf
SMPTE 429 file essence type is JPEG 2000 pictures, (1248 edit units).
ProductUUID: 7d836e16-37c7-4c22-b2e0-46a717e84f42
ProductVersion: 2.10.31
CompanyName: SMPTE VC
ProductName: SMPTE DCP VC
EncryptedEssence: No
AssetUUID: d2bf1228-b683-44eb-b4c6-71b3cc28c638
Label Set Type: SMPTE
PictureEssenceCoding: 060e2b34.04010109.04010202.03010103 (ST-429-4-2K)
As you can see from the output, this track file confirms that the values we passed upon wrapping were used. This track file can now be passed to you composition and packaging software tools for further processing.
Create an encrypted 2K JPEG 2000 SMPTE Trackfile at 24fps with a given uuid processing 240 frames (10 Secs) skipping the first 192 frames (8 secs) assigning the correct UL
# generate the uuid to use for the track file AssetUUID
5483b09d-388b-4331-be5f-b5fc81310aea
# generate the uuid to use for the track file key Id and 16 byte
# hex string to use as the ciphertext key.
$ kmrandgen -s 16 && kmuuidgen
9a9cea05275ed0284d3605f37b0efc25 # this will be the key string
529a8697-6d60-476e-8471-7665a0a5d378 # this will be our key Id
# alternate option is to use trd-randgen
$ trd-randgen && trd-randgen uuid --t4
937fb5eafb74d6bb5745fea716070bb8
acabaa28-39bd-49f7-8a86-ebe2c998fd92
# now we create our encrypted track file
asdcp-wrap -v -L -a 5483b09d-388b-4331-be5f-b5fc81310aea -P 060e2b34.04010109.04010202.03010103 /
-p 24 -j 529a8697-6d60-476e-8471-7665a0a5d378 -k 9a9cea05275ed0284d3605f37b0efc25 -f 192 /
-d 240 j2c\1998x1080 mxf\J2C_5483b09d-388b-4331-be5f-b5fc81310aea_enc.mxf
Next lets confirm that the values we passed were used by parsing the MXF we just created. We can do this by setting multiple flags to asdcp-info
$ asdcp-info -i -c mxf\J2C_5483b09d-388b-4331-be5f-b5fc81310aea_enc.mxf
SMPTE 429 file essence type is JPEG 2000 pictures, (240 edit units).
ProductUUID: 7d836e16-37c7-4c22-b2e0-46a717e84f42
ProductVersion: 2.10.31
CompanyName: SMPTE VC
ProductName: SMPTE DCP VC
EncryptedEssence: Yes
HMAC: Yes
ContextID: a2bc203f-21dc-44b6-9114-3f144551d4b4
CryptographicKeyID: 529a8697-6d60-476e-8471-7665a0a5d378
AssetUUID: 5483b09d-388b-4331-be5f-b5fc81310aea
Label Set Type: SMPTE
PictureEssenceCoding: 060e2b34.04010109.04010202.03010103 (ST-429-4-2K)
Confirming the correct values were used. We now have an encrypted trackfile.
Also, the ciphertext key needs to be kept in a safe place ‘9a9cea05275ed0284d3605f37b0efc25’. Normaly this is hashed and stored in an encrypted payload in a KDM which is cretaed at the same time as creating the trackfile.
Next we need to confirm the duration values were used
$ asdcp-info -n mxf\J2C_5483b09d-388b-4331-be5f-b5fc81310aea_enc.mxf
SMPTE 429 file essence type is JPEG 2000 pictures, (240 edit units).
...
060e2b34.02530101.0d010201.01100100 len: 2760 (IndexTableSegment)
InstanceUID = 20a0ec77-a6d6-48c8-8de8-d4f98b6e923e
IndexEditRate = 24/1 # <= confirmed 24fps
...
IndexStartPosition = 0
IndexDuration = 240 # <= confirmed 10 secs in length
...
EditUnitByteCount = 0
IndexSID = 129
BodySID = 1
SliceCount = 0
PosTableCount = 0
DeltaEntryArray:
...
Unwrapping
Unwrapping a track file
$ asdcp-unwrap -v -k 9a9cea05275ed0284d3605f37b0efc25 /
mxf\J2C_5483b09d-388b-4331-be5f-b5fc81310aea_enc.mxf unwrap\j2c\frame.
In this example, we use the ciphertext key to unwrap the encrypted mxf we just created.
TASK: Create a SMPTE 5.1 w/HI & VIN audio track file as per RDD52 at 24fps with a given uuid processing all samples assigning the correct UL.
$ asdcp-wrap -v -L -C 060e2b34.0401010b.04020210.03010400 -a 0fefbe07-08aa-493e-8af2-0044dee332df /
-p 24 -g en-GB -l 'WTF' -m 51(L,R,C,LFE,LS,Rs),HI,VIN wav\51\ mxf\WAV_0fefbe07-08aa-493e-8af2-0044dee332df.mxf
To confirm
$ asdcp-info -H mxf\WAV_0fefbe07-08aa-493e-8af2-0044dee332df.mxf
SMPTE 429 file essence type is PCM audio, (1248 edit units).
...
060e2b34.02530101.0d010101.01014800 len: 295 (WaveAudioDescriptor)
InstanceUID = ba0f6c04-9923-4f49-a395-c68861009677
Locators:
SubDescriptors:
bd70993d-9be8-4ed8-8dc1-45865fee4e54
726dde5b-2295-49f8-9bcd-7d552ea22fb7
6ab9f24c-3690-46fe-beeb-690951b1ee1c
0c306ea3-089f-48cd-a048-e0ef49bb8a59
a38fef37-4aad-40c3-9987-de8de21cc57c
b553f9bb-4513-41d1-8b0b-683cd65db675
5192b017-6e27-4e7e-84b7-dcbcb068b6b9
4065b7db-6a98-44c2-abc9-49a9b9df56fb
1ccf48b6-718b-4dc6-a133-d016f241802d
LinkedTrackID = 2
SampleRate = 24/1
ContainerDuration = 1248
EssenceContainer = 060e2b34.04010101.0d010301.02060100
AudioSamplingRate = 48000/1
Locked = 0
ChannelCount = 8
QuantizationBits = 24
SoundEssenceCoding = 00000000.00000000.00000000.00000000
BlockAlign = 24
AvgBps = 1152000
ChannelAssignment = 060e2b34.0401010b.04020210.03010400
060e2b34.02530101.0d010101.01016c00 len: 91 (SoundfieldGroupLabelSubDescriptor)
InstanceUID = bd70993d-9be8-4ed8-8dc1-45865fee4e54
MCALabelDictionaryID = 060e2b34.0401010d.03020201.00000000
MCALinkID = c4c58f20-e391-443f-95ef-7e142fcbf065
MCATagSymbol = sg51
MCATagName = 5.1
RFC5646SpokenLanguage = en-GB
060e2b34.02530101.0d010101.01016b00 len: 119 (AudioChannelLabelSubDescriptor)
InstanceUID = 726dde5b-2295-49f8-9bcd-7d552ea22fb7
MCALabelDictionaryID = 060e2b34.0401010d.03020101.00000000
MCALinkID = 42499fb1-0b8a-4ae3-bdab-20f45774d27a
MCATagSymbol = chL
MCATagName = Left
MCAChannelID = 1
RFC5646SpokenLanguage = en-GB
SoundfieldGroupLinkID = c4c58f20-e391-443f-95ef-7e142fcbf065
060e2b34.02530101.0d010101.01016b00 len: 121 (AudioChannelLabelSubDescriptor)
InstanceUID = 6ab9f24c-3690-46fe-beeb-690951b1ee1c
MCALabelDictionaryID = 060e2b34.0401010d.03020102.00000000
MCALinkID = fe2830d5-d9c6-4341-991f-57b024fdbd38
MCATagSymbol = chR
MCATagName = Right
MCAChannelID = 2
RFC5646SpokenLanguage = en-GB
SoundfieldGroupLinkID = c4c58f20-e391-443f-95ef-7e142fcbf065
060e2b34.02530101.0d010101.01016b00 len: 123 (AudioChannelLabelSubDescriptor)
InstanceUID = 0c306ea3-089f-48cd-a048-e0ef49bb8a59
MCALabelDictionaryID = 060e2b34.0401010d.03020103.00000000
MCALinkID = 6bacb5a2-bb32-431a-85b8-ad8e788516dc
MCATagSymbol = chC
MCATagName = Center
MCAChannelID = 3
RFC5646SpokenLanguage = en-GB
SoundfieldGroupLinkID = c4c58f20-e391-443f-95ef-7e142fcbf065
060e2b34.02530101.0d010101.01016b00 len: 121 (AudioChannelLabelSubDescriptor)
InstanceUID = a38fef37-4aad-40c3-9987-de8de21cc57c
MCALabelDictionaryID = 060e2b34.0401010d.03020104.00000000
MCALinkID = 4fe8d4b4-52c6-4e22-8590-5f58bf246682
MCATagSymbol = chLFE
MCATagName = LFE
MCAChannelID = 4
RFC5646SpokenLanguage = en-GB
SoundfieldGroupLinkID = c4c58f20-e391-443f-95ef-7e142fcbf065
060e2b34.02530101.0d010101.01016b00 len: 139 (AudioChannelLabelSubDescriptor)
InstanceUID = b553f9bb-4513-41d1-8b0b-683cd65db675
MCALabelDictionaryID = 060e2b34.0401010d.03020105.00000000
MCALinkID = c52b2b63-bcfd-4f4d-a925-704ac134a374
MCATagSymbol = chLs
MCATagName = Left Surround
MCAChannelID = 5
RFC5646SpokenLanguage = en-GB
SoundfieldGroupLinkID = c4c58f20-e391-443f-95ef-7e142fcbf065
060e2b34.02530101.0d010101.01016b00 len: 141 (AudioChannelLabelSubDescriptor)
InstanceUID = 5192b017-6e27-4e7e-84b7-dcbcb068b6b9
MCALabelDictionaryID = 060e2b34.0401010d.03020106.00000000
MCALinkID = 801f41ff-3f5c-4f5e-85d7-9e56ecb2c93a
MCATagSymbol = chRs
MCATagName = Right Surround
MCAChannelID = 6
RFC5646SpokenLanguage = en-GB
SoundfieldGroupLinkID = c4c58f20-e391-443f-95ef-7e142fcbf065
060e2b34.02530101.0d010101.01016b00 len: 125 (AudioChannelLabelSubDescriptor)
InstanceUID = 4065b7db-6a98-44c2-abc9-49a9b9df56fb
MCALabelDictionaryID = 060e2b34.0401010d.0302010e.00000000
MCALinkID = 9f57b39e-d2ff-4447-8fdd-1f838ca155f6
MCATagSymbol = chHI
MCATagName = Hearing Impaired
MCAChannelID = 7
RFC5646SpokenLanguage = en-GB
060e2b34.02530101.0d010101.01016b00 len: 149 (AudioChannelLabelSubDescriptor)
InstanceUID = 1ccf48b6-718b-4dc6-a133-d016f241802d
MCALabelDictionaryID = 060e2b34.0401010d.0302010f.00000000
MCALinkID = c40cbd11-c302-44d4-ba4a-cd183032d904
MCATagSymbol = chVIN
MCATagName = Visually Impaired-Narrative
MCAChannelID = 8
RFC5646SpokenLanguage = en-GB