Skip to main content

Dolby Atmos Master Analysis

If you want to analyze your Dolby Atmos Master, 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 Master 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 Master. This means your Atmos Master must be an ADM BWF or IAB in MXF. DAMF is not supported.

Analyzer Results

Deep Properties

Results from running this analysis on a Dolby Atmos Master 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 master is ADM or IAB
master_versionstringThe number of master version
creation_toolstringThe master 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 master
first_frame_of_action_secintegerThe first frame of action represented in seconds, set in the master creating software
start_secintegerThe starting time of the file, in seconds, set in the master creating software
frame_rateintegerThe frame rate of the file
render_warp_modestringThe warp mode specified for downmix set in the master creating software
spatially_processedbooleanan indication if the Master is spatially processed
channelsobjectAn object containing bed and object details set in the master creating software
trimarrayAn array containing trim details set in the master creating software
binaural_metadataarrayAn array containing binaural render mode and head track mode details set in the master creating software

General Properties

You can also run an analyze task on your Dolby Atmos Master 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 Master has 10 beds.",
"message_fail": "FAIL: The Atmos Master 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 Master has 10 beds.",
"message_fail": "FAIL: The Atmos Master does not have 10 beds, it has {deep_properties.audio[0].dolby_atmos.channels.beds.length}.",
"condition_evaluation": true,
"message": "PASS: The Atmos Master 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