Embedded Audio Filters

Transform supports compressed audio that is embedded within an uncompressed (PCM) audio stream. Audio embedding allows a two channel PCM stream to carry up to 8 compressed audio channels.

Transform supports the following embedded audio formats:

FormatDescription
ac-3Dolby Digital
ec-3Dolby Digital Plus, Dolby Atmos
dlbeDolby E

Channel Coding

The coding property indicates the format and channels containing embedded audio. For example the following QuickTime file contains a 24 bit PCM audio stream with embedded ac-3 on channels 3/4:

---
type: 'mov '
audio:
- format: 'in24'
  sample_rate:
    numerator: 48000
    denominator: 1
  bits_per_sample: 24
  channels: 4
  label:
  - L
  - R
  -
  -
  coding:
  -
  -
  - 'ac-3'
  - 'ac-3'
{
  "type": "mov ",
  "audio": [
    {
      "format": "in24",
      "sample_rate": {
        "numerator": 48000,
        "denominator": 1
      },
      "bits_per_sample": 24,
      "channels": 4,
      "label": [
        "L",
        "R",
        null,
        null
      ],
      "coding": [
        null,
        null,
        "ac-3",
        "ac-3"
      ]
    }
  ]
}

Program Selection

An embedded audio stream can contain multiple independent programs. For example both Dolby E and Dolby EAC-3 support up to 8 programs (or sub streams).

Embedded audio programs are numbered (starting at 1) across all the tracks in a container. For example in a container with two embedded Dolby E streams (each having a 5.1+2.0 configuration), the programs are numbered 1,2 and 3,4 respectively.

Use the select operator to map a specific embedded audio program to an input stream. For example the following composition locates the 5.1 program in the second Dolby E stream:

---
input:
  container:
  - name: input1
    audio:
    - name: a1
      select:
        program: 3
output:
  container:
  - name: output1
    type: 'mp4 '
    audio:
    - name: a1
    encode:
      type: 'mcac'
      properties:
        BitRate: 128000

SMPTE 377

Compressed audio frames are typically embedded in a PCM stream according to the SMPTE 377 standard.

Extraction

The SMPTE 377 377c filter extracts an compressed audio stream from a PCM stream. For example the following composition extracts ac-3 from input channels 3/4:

---
input:
  container:
  - name: input1
    audio:
    - name: a1
      channels: 4
      coding:
        -
        -
        - 'ac-3'
        - 'ac-3'
output:
  container:
  - name: output1
    type: 'mp4 '
    audio:
    - route:
        name: a1
        channel:
        - 3
        - 4
      filter:
      - type: '337c'
{
  "input": {
    "container": [
      {
        "name": "input1",
        "audio": [
          {
            "name": "a1",
            "channels": 4,
            "coding": [
              null,
              null,
              "ac-3",
              "ac-3"
            ]
          }
        ]
      }
    ]
  },
  "output": {
    "container": [
      {
        "name": "output1",
        "type": "mp4 ",
        "audio": [
          {
            "route": {
              "name": "a1",
              "channel": [
                3,
                4
              ]
            },
            "filter": [
              {
                "type": "337c"
              }
            ]
          }
        ]
      }
    ]
  }
}

Insertion

The SMPTE 377 2aes filter inserts a compressed audio stream into a PCM stream. For example the following composition inserts ec-3 into a 24 bit PCM stream:

---
input:
  container:
  - name: input1
    audio:
    - name: a1
      format: 'ec-3'
output:
  container:
  - name: output1
    type: 'mp4 '
    audio:
    - route:
        name: a1
      filter:
      - type: '2aes'
        properties:
          OutputFormat: 'in24'
{
  "input": {
    "container": [
      {
        "name": "input1",
        "audio": [
          {
            "name": "a1",
            "format": "ec-3"
          }
        ]
      }
    ]
  },
  "output": {
    "container": [
      {
        "name": "output1",
        "type": "mp4 ",
        "audio": [
          {
            "route": {
              "name": "a1"
            },
            "filter": [
              {
                "type": "2aes",
                "properties": {
                  "OutputFormat": "in24"
                }
              }
            ]
          }
        ]
      }
    ]
  }
}

Dolby E

A single Dolby E stream can contain 4, 6 or 8 channels and up to 8 discrete program configurations. The most common configurations are as follows:

ConfigurationChannelsPrograms
085.1, 2.0
682.0, 2.0, 2.0, 2.0
1165.1
2287.1
2387.1 Screen

Decompressor

The Dolby E DLBE filter extracts and decompresses a specific Dolby E program.

In the following example the input container has four discrete audio tracks containing two separate Dolby E streams. The composition extracts the 5.1 program from the second embedded stream (a3 and a4):

---
input:
  container:
  - name: input1
    audio:
    - name: a1
      channels: 1
      coding:
        - 'dlbe'
    - name: a2
      channels: 1
      coding:
        - 'dlbe'
    - name: a3
      channels: 1
      coding:
        - 'dlbe'
    - name: a4
      channels: 1
      coding:
        - 'dlbe'
output:
  container:
  - name: output1
    type: 'mp4 '
    audio:
    - channels: 2
      route:
        channel:
        - name: a3
          channel: 1
        - name: a4
          channel: 1
      filter:
      - type: 'DLBE'
        properties:
          ProgramConfiguration: 11
          Program: 1
      encode:
        type: 'mcac'
        properties:
          BitRate: 128000
{
  "input": {
    "container": [
      {
        "name": "input1",
        "audio": [
          {
            "name": "a1",
            "channels": 1,
            "coding": [
              "dlbe"
            ]
          },
          {
            "name": "a2",
            "channels": 1,
            "coding": [
              "dlbe"
            ]
          },
          {
            "name": "a3",
            "channels": 1,
            "coding": [
              "dlbe"
            ]
          },
          {
            "name": "a4",
            "channels": 1,
            "coding": [
              "dlbe"
            ]
          }
        ]
      }
    ]
  },
  "output": {
    "container": [
      {
        "name": "output1",
        "type": "mp4 ",
        "audio": [
          {
            "channels": 2,
            "route": {
              "channel": [
                {
                  "name": "a3",
                  "channel": 1
                },
                {
                  "name": "a4",
                  "channel": 1
                }
              ]
            },
            "filter": [
              {
                "type": "DLBE",
                "properties": {
                  "ProgramConfiguration": 11,
                  "Program": 1
                }
              }
            ],
            "encode": {
              "type": "mcac",
              "properties": {
                "BitRate": 128000
              }
            }
          }
        ]
      }
    ]
  }
}

The DLBE filter supports the following properties:

PropertyTypeDescription
ProgramConfigurationintegerSpecifies the program configuration and the corresponding speaker labels for each output channel.
ProgramintegerSpecifies the output program number. By default (0) all programs are output.

Compressor

The Dolby E dlbe encoder compresses up to 8 audio channels comprising multiple programs. For example the following composition encode a Dolby E stream containing 5.1 and 2.0 programs:

---
input:
  container:
  - name: input1
    audio:
    - name: a1
      channels: 8
      label:
      - 'L'
      - 'R'
      - 'C'
      - 'LFE'
      - 'Ls'
      - 'Rs'
      - 'L'
      - 'R'
      program:
      - 1
      - 1
      - 1
      - 1
      - 1
      - 1
      - 2
      - 2
output:
  container:
  - name: output1
    type: 'mp4 '
    audio:
    - channels: 8
      route:
        name: a1
        channel:
        - 1
        - 3
        - 5
        - 7
        - 2
        - 4
        - 6
        - 8
      encode:
        type: 'dlbe'
        properties:
          ProgramConfiguration: 0
          FrameRate: 4
          BitDepth: 20