Skip to main content

Dolby Atmos Mezzanine Analysis

If you want to analyze your Dolby Atmos Mezzanine, then this is the analysis type you'll want to use. You may also be interested in creating Dolby Atmos audio content, which you can learn more about here: Dolby Atmos Tutorial

Sample Usage

The sample json below is set to analyze Dolby Atmos Mezzanines with:

{
"uid": "analyze_task",
"kind": "analyze",
"payload": {
"general_properties": {
"enabled": true
},
"deep_properties": {
"audio": {
"dolby_atmos": {
"enabled": true
}
}
}
}
}

Limitations

At this time, the Atmos Analyzer can only accept a single-file Mezzanine. This means your Atmos Mezzanine must be an ADM BWF or IAB in MXF. DAMF is not supported.

You must also specify in your source that the content type is atmos_mezzanine in the contents array of the source:

{ 
"uid": "source_file",
"kind": "source",
"payload": {
"kind": "asset_url",
"payload": {
"storage_provider": "s3",
"url": "{{source_file}}",
"contents": [
{
"kind": "audio",
"format": "atmos_mezzanine"
}
]
}
}
}

Analyzer Results

Deep Properties

Results from running this analysis on a Dolby Atmos Mezzanine file will be reported in the job summary json, in the "analyzer results" section of the Hybrik UI or search for dolby_atmos in the job result:

"audio": [
{
"dolby_atmos": {
"master_type": "IAB MXF",
"master_version": "0.0.0",
"creation_tool": "Dolby Atmos Conversion Tool 1.9.0",
"samples": 12628000,
"sample_size": "24 bit integer",
"sample_rate": 48000,
"first_frame_of_action_sec": 0,
"start_sec": 0,
"frame_rate": "24",
"render_warp_mode": "LoRo",
"spatially_processed": false,
"channels": {
"beds": [
{
"index": 0,
"id": 0,
"label": "L"
},
{
"index": 1,
"id": 0,
"label": "R"
},
{
"index": 2,
"id": 0,
"label": "C"
},
{
"index": 3,
"id": 0,
"label": "LFE"
},
{
"index": 4,
"id": 0,
"label": "LSS"
},
{
"index": 5,
"id": 0,
"label": "RSS"
},
{
"index": 6,
"id": 0,
"label": "LRS"
},
{
"index": 7,
"id": 0,
"label": "RRS"
},
{
"index": 8,
"id": 0,
"label": "LTM"
},
{
"index": 9,
"id": 0,
"label": "RTM"
}
],
"objects": [
{
"index": 10,
"id": 0
},
{
"index": 11,
"id": 1
},
{
"index": 12,
"id": 2
},
{
"index": 13,
"id": 3
},...
{
"index": 73,
"id": 63
},
{
"index": 74,
"id": 64
},...
{
"index": 90,
"id": 80
},
{
"index": 91,
"id": 81
}
]
},
"trims": [
{
"label": "NoSurroundsNoHeights",
"auto_trim": true,
"center_trim": 0,
"surround_trim": 0,
"height_trim": 0,
"front_back_balance_overhead_floor": 0,
"front_back_balance_listener": 0
},
{
"label": "NoSurroundsSomeHeights",
"auto_trim": true,
"center_trim": 0,
"surround_trim": 0,
"height_trim": 0,
"front_back_balance_overhead_floor": 0,
"front_back_balance_listener": 0
},
{
"label": "NoSurroundsManyHeights",
"auto_trim": true,
"center_trim": 0,
"surround_trim": 0,
"height_trim": 0,
"front_back_balance_overhead_floor": 0,
"front_back_balance_listener": 0
},
{
"label": "SomeSurroundsNoHeights",
"auto_trim": true,
"center_trim": 0,
"surround_trim": 0,
"height_trim": 0,
"front_back_balance_overhead_floor": 0,
"front_back_balance_listener": 0
},
{
"label": "SomeSurroundsSomeHeights",
"auto_trim": true,
"center_trim": 0,
"surround_trim": 0,
"height_trim": 0,
"front_back_balance_overhead_floor": 0,
"front_back_balance_listener": 0
},
{
"label": "SomeSurroundsManyHeights",
"auto_trim": true,
"center_trim": 0,
"surround_trim": 0,
"height_trim": 0,
"front_back_balance_overhead_floor": 0,
"front_back_balance_listener": 0
},
{
"label": "ManySurroundsNoHeights",
"auto_trim": true,
"center_trim": 0,
"surround_trim": 0,
"height_trim": 0,
"front_back_balance_overhead_floor": 0,
"front_back_balance_listener": 0
},
{
"label": "ManySurroundsSomeHeights",
"auto_trim": true,
"center_trim": 0,
"surround_trim": 0,
"height_trim": 0,
"front_back_balance_overhead_floor": 0,
"front_back_balance_listener": 0
},
{
"label": "ManySurroundsManyHeights",
"auto_trim": true,
"center_trim": 0,
"surround_trim": 0,
"height_trim": 0,
"front_back_balance_overhead_floor": 0,
"front_back_balance_listener": 0
}
],
"binaural_metadata": [
{
"channel_index": 0,
"binaural_render_mode": "Undefined",
"head_track_mode": "Undefined"
},
{
"channel_index": 1,
"binaural_render_mode": "Undefined",
"head_track_mode": "Undefined"
},
{
"channel_index": 2,
"binaural_render_mode": "Far",
"head_track_mode": "Undefined"
},
{
"channel_index": 3,
"binaural_render_mode": "Far",
"head_track_mode": "Undefined"
},...
{
"channel_index": 63,
"binaural_render_mode": "Near",
"head_track_mode": "Undefined"
},
{
"channel_index": 64,
"binaural_render_mode": "Near",
"head_track_mode": "Undefined"
},...
{
"channel_index": 90,
"binaural_render_mode": "Stereo-Bypass",
"head_track_mode": "Undefined"
},
{
"channel_index": 91,
"binaural_render_mode": "Stereo-Bypass",
"head_track_mode": "Undefined"
}
]
}
}
]

Here are the explanations for each result parameter:

Parameter NameTypeDescription
master_typestringState whether the type of the mezzanine is ADM or IAB
master_versionstringThe number of master version
creation_toolstringThe mezzanine creating software and version number
samplesintegerThe number of samples in the file
sample_sizestringA description of the sample size
sample_rateintegerThe sample rate of the mezzanine
first_frame_of_action_secintegerThe first frame of action represented in seconds, set in the mezzanine creating software
start_secintegerThe starting time of the file, in seconds, set in the mezzanine creating software
frame_rateintegerThe frame rate of the file
render_warp_modestringThe warp mode specified for downmix set in the mezzanine creating software
spatially_processedbooleanan indication if the Mezzanine is spatially processed
channelsobjectAn object containing bed and object details set in the mezzanine creating software
trimarrayAn array containing trim details set in the mezzanine creating software
binaural_metadataarrayAn array containing binaural render mode and head track mode details set in the mezzanine creating software

General Properties

You can also run an analyze task on your Dolby Atmos Mezzanine using general_properties, which will give you the following results:

"container": {
"kind": "wav",
"duration_sec": 263.083,
"bitrate_kb": 106516.871,
"size_kb": 3420749,
"faststart": true
},
"audio": [
{
"sample_format": "pcm_s24le",
"codec": "pcm",
"sample_rate": 48000,
"channels": 92,
"sample_size": 24,
"duration_sec": 263.083,
"bitrate_mode": "cbr",
"bitrate_kb": 105984,
"master_type": "ADM BWF",
"creation_tool": "Dolby Atmos Renderer, Version 3.3.0",
"samples": 12628000,
"start_sec": 3600,
"associated_video_frame_rate": "24.000 FPS",
"render_warp_mode": "LoRo",
"spatially_processed": false
}
]

To learn more about this type of analysis, read our tutorial on General Properties.

QC Task

Like other Hybrik analyzers, it is possible to use the Dolby Atmos analyzer with our Quality Check task.

These results can be used in a QC condition, for example "Does our First Frame of Action (FFOA) start at the beginning of the file and does it contain 10 beds?":

{ 
"uid": "qc_task",
"kind": "qc",
"payload": {
"tests": [
{
"conditions": [
{
"condition": "deep_properties.audio[0].dolby_atmos.first_frame_of_action_sec == 0",
"message_pass": "PASS: Provided master file contains First Frame of Action equal to 0 seconds.",
"message_fail": "FAIL: Provided master file contains unexpected First Frame of Action value. Expected: 0, actual: {deep_properties.audio[0].dolby_atmos.first_frame_of_action_sec} seconds."
},
{
"condition": "deep_properties.audio[0].dolby_atmos.channels.beds.length == 10",
"message_pass": "PASS: The Atmos Mezzanine has 10 beds.",
"message_fail": "FAIL: The Atmos Mezzanine does not have 10 beds, it has {deep_properties.audio[0].dolby_atmos.channels.beds.length}."
}
]
}
]
}
}

Our example job will fail as the FFOA is greater than 0. Here is a snippet from the job results:

"results": [
{
"tests": [
{
"test_result": "Fail",
"conditions": [
{
"condition": "deep_properties.audio[0].dolby_atmos.first_frame_of_action_sec == 0",
"message_pass": "PASS: Provided master file contains First Frame of Action equal to 0 seconds.",
"message_fail": "FAIL: Provided master file contains unexpected First Frame of Action value. Expected: 0, actual: {deep_properties.audio[0].dolby_atmos.first_frame_of_action_sec} seconds.",
"condition_evaluation": false,
"message": "FAIL: Provided master file contains unexpected First Frame of Action value. Expected: 0, actual: 3599 seconds.",
"values": [
{
"parameter": "deep_properties.audio[0].dolby_atmos.first_frame_of_action_sec",
"value": 3599
}
]
},
{
"condition": "deep_properties.audio[0].dolby_atmos.channels.beds.length == 10",
"message_pass": "PASS: The Atmos Mezzanine has 10 beds.",
"message_fail": "FAIL: The Atmos Mezzanine does not have 10 beds, it has {deep_properties.audio[0].dolby_atmos.channels.beds.length}.",
"condition_evaluation": true,
"message": "PASS: The Atmos Mezzanine has 10 beds.",
"values": [
{
"parameter": "deep_properties.audio[0].dolby_atmos.channels.beds.length",
"value": 10
}
]
}
]
}
]
}
]

For more details on the QC task and other checks you can make, see our Analyze and QC Tutorial.

Example Job