Dolby
  • Up and Running
  • Amazon Web Services
  • Sources
  • Hybrik JSON
  • Video Filters
  • Audio Filters
  • Working with Audio
  • Task Modifiers
  • Package Task
  • Analysis & Quality Control
  • Analysis Task Overview
  • Dolby Atmos Mezzanine Analysis
  • Analysis Reports
  • Video VMAF
  • Black Video Analysis
  • Video Interlacing Analysis
  • Video Complexity Analysis
  • Video Blockiness Analysis
  • Video Compressed Stats Analysis
  • Video PSNR Analysis
  • Video SSIM Analysis
  • Video Photo-Sensitive Epilepsy Analysis
  • Audio Deep Properties Analysis
  • Audio PSNR
  • Audio Silence Analysis
  • Dolby Technologies
  • Additional Tasks
  • Hybrik Versions
  • QC Player
  • Machine Performance Analysis

    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 Name Type Description
    master_type string State whether the type of the mezzanine is ADM or IAB
    master_version string The number of master version
    creation_tool string The mezzanine creating software and version number
    samples integer The number of samples in the file
    sample_size string A description of the sample size
    sample_rate integer The sample rate of the mezzanine
    first_frame_of_action_sec integer The first frame of action represented in seconds, set in the mezzanine creating software
    start_sec integer The starting time of the file, in seconds, set in the mezzanine creating software
    frame_rate integer The frame rate of the file
    render_warp_mode string The warp mode specified for downmix set in the mezzanine creating software
    spatially_processed boolean an indication if the Mezzanine is spatially processed
    channels object An object containing bed and object details set in the mezzanine creating software
    trim array An array containing trim details set in the mezzanine creating software
    binaural_metadata array An 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

    • Basic Dolby Atmos Audio Analysis Example
    • Dolby Atmos Audio Analysis with QC