The following briefly describes how to use the MainConcept Dolby Digital Plus Pro Decoder plug-in for FFmpeg.
The command-line format should follow the structure below, depending on which operating system you are using.
On Windows
ffmpeg <ffmpeg-params> \
-c omx_dec_ddpp
-omx_core omxil_core.dll -omx_name OMX.MainConcept.dec_ddpp.audio \
-omx_param "<mc-general-params>" \
[ddp_parser_settings] "<mc-codec-params>" \
<ffmpeg-output-parameters>
The following is a sample command line to dump the RAW audio frames to disk as a signed 16-bit little endian PCM file:
ffmpeg -c omx_dec_ddpp -omx_core omxil_core.dll -omx_name OMX.MainConcept.dec_ddpp.audio -i 8_voices_input.ac3 8_voices_output.wav -y
On Linux
- Note
- The command line examples below are Windows specific. To run examples on Linux, you must slightly modify them. Instead of
-omx_core omxil_core.dll
, you need to specify -omx_core libomxil_core.so
on Linux.
ffmpeg <ffmpeg-params> \
-c omx_dec_ddpp
-omx_core libomxil_core.so -omx_name OMX.MainConcept.dec_ddpp.audio \
<ffmpeg-output-parameters>
The following is a sample command line to dump the RAW audio frames to disk as a signed 16-bit little endian PCM file:
ffmpeg -c omx_dec_ddpp -omx_core libomxil_core.so -omx_name OMX.MainConcept.dec_ddpp.audio -i 8_voices_input.ac3 8_voices_output.wav -y
All settings below are optional parameters for omx_param parameters (mc-general-params):
Function | Description |
[ddp_parser_settings] | Specifies parameters from the Dolby Digital Plus Pro decoder configuration on the command line, which can be applied under [ddp_parser_settings]. Use : as a separator and = as a value set for the key. -omx_param "[ddp_parser_settings]:error_conceal_flag=1:compression_mode=2: ... : ..." These arguments match the MainConcept Dolby Digital Plus Pro decoder settings (see [ddp_parser_settings] for more information or a DDPP decoder configuration file as an example). |
On Windows, you have two additional acceleration modes dxva1
(deprecated) and dxva2
that use DirectX Video Acceleration.
Command line examples
- Note
- The command line examples below are Windows specific. To run examples on Linux, you must slightly modify them. Instead of
-omx_core omxil_core.dll
, you need to specify -omx_core libomxil_core.so
on Linux.
ffmpeg -c omx_dec_ddpp -omx_core omxil_core.dll -omx_name OMX.MainConcept.dec_ddpp.audio -i 8_voices_input.ac3 8_voices_output.wav -y
ffmpeg -c omx_dec_ddpp -omx_core omxil_core.dll -omx_name OMX.MainConcept.dec_ddpp.audio -i 8_voices_input.ac3 -omx_param "[ddp_parser_settings]:error_conceal_flag=1:compression_mode=2" 8_voices_output.wav -y
Parameters
[ddp_parser_settings]
This section contains information on decoder parser settings.
Decoder parser settings
output_word_size
- Sets the format of the PCM data output by the decoder.
- 0: 16-bit short integers, default endian (default)
- 1: 16-bit short integers, swap endian
- 2: 32-bit floating point
- 4: 64-bit double precision floating point
- 8: 24-bit integer, little endian
- 10: 32-bit integer, little endian
output_mode
- Contains the audio coding mode as present in the bitstream. This indicates the number of input channels (along with the lfeon field in the bitstream).
- - 1: 1/0 (C)
- 2: 2/0 (L, R)
- 3: 3/0 (L, C, R)
- 4: 2/1 (L, R, I)
- 5: 3/1 (L, C, R, I)
- 6: 2/2 (L, R, Ls, Rs)
- 7: 3/2 (L, C, R, Ls, Rs)
- 9: 2/2/1 (L, R, Ls, Rs, Ts)
- 10: 3/2/1 (L, C, R, Ls, Rs, Ts)
- 11: 3/2/1 (L, C, R, Ls, Rs, Cvh)
- 12: 3/0/2 (L, C, R, Lc, Rc)
- 13: 2/2/2 (L, C, R, Ls, Rs, Lw, Rw)
- 14: 2/2/2 (L, C, R, Ls, Rs, Lvh, Rvh)
- 15: 2/2/2 (L, C, R, Ls, Rs, Lsd, Rsd)
- 16: 2/2/2 (L, C, R, Ls, Rs, Lrs, Rrs)
- 17: 3/2/2 (L, C, R, Ls, Rs, Lc, Rc)
- 18: 3/2/2 (L, C, R, Ls, Rs, Lw, Rw)
- 19: 3/2/2 (L, C, R, Ls, Rs, Lvh, Rvh)
- 20: 3/2/2 (L, C, R, Ls, Rs, Lsd, Rsd)
- 21: 3/2/2 (L, C, R, Ls, Rs, Lrs, Rrs)
- 24: 3/2/1 (L. C, R, Ls, Rs, Cs)
- Note
- See all
output_lfe
and output_mode
options.
-
Output mode 24 is not supported in the case of downmixing without using a custom downmix table.
output_lfe
- Specifies the output LFE flag.
- -1: Auto LFE mode (default)
- 0: No LFE channel
- 1: LFE channel is present
- Note
- See also
output_num_channels
and output_mode
options.
output_num_channels
- Specifies the number of output channels, including LFE channel. If a custom
custom_channel_table
is not used, this field should reflect the number of channels specified by output_mode
and output_lfe
. If a custom channel table is used, this value can be different to what is implied by output_mode
and output_lfe
.
- Note
- If the number of output channels specified is:
- Less than the total number of channels specified in the
output_mode
+ output_lfe
fields, the number defined in output_num_channels
will be used
- Greater than the total number of channels specified in the
output_mode
+ output_lfe
fields, the additional channels will be taken in the order of mode 4 (additional channels will contain silence)
compression_mode
- Specifies the output compression mode.
- -1: Auto compression mode (default)
- 0: Custom mode, analog dialnorm (no digital dialog normalization)
- 1: Custom mode, digital dialog normalization
- 2: Line out mode
- 3: RF mode
stereo_output_mode
- Output mode for stereo (2/0) and dual (1+1) bitstreams.
- 0: Automatically detect stereo mode (default)
- 1: 2/0 Dolby Surround compatible (Lt, Rt)
- 2: 2/0 Stereo (Lo, Ro)
dual_mono_mode
- Output reproduction mode for dual (1+1) and mono (1/0) bitstreams.
- 0: Reproduce as stereo (default)
- 1: Reproduce channel 1 as mono
- 2: Reproduce channel 2 as mono
- 3: Mix channel 1 and channel 2 as mono
dynamic_range_scale_low
- Integer number (in %) for low-level signals, which is used to scale the dynamic range control word for low-level signals that would otherwise tend to be amplified. A value of
DDP_SCALEFACTOR_MIN
disables low-level amplification. This field is ignored if compression_mode
is set to RF mode.
- -1: Auto select scale factor (default). When using this value, the
DDP_SCALEFACTOR_MAX
parameter is set as well.
- 0: Lower border of scale factor.
- 100: Upper border of scale factor.
dynamic_range_scale_hi
- Integer number (in %) for high-level signals which is used to scale the dynamic range control word for high-level signals that would otherwise tend to be reduced. A value of
DDP_SCALEFACTOR_MIN
disables high-level amplification. This field is ignored if compression_mode
is set to RF mode.
- -1: Auto select scale factor (default). When using this value, the
DDP_SCALEFACTOR_MAX
parameter is set as well.
- 0: Lower border of scale factor.
- 100: Upper border of scale factor.
pcm_scale_factor
- Integer number (in %) to scale the final output data prior to write to the PCM output buffers. A value of
DDP_SCALEFACTOR_MIN
mutes the PCM output.
- -1: Auto select scale factor (default)
- 0: Lower border of scale factor
- 100: Upper border of scale factor
error_conceal_flag
- Specifies the error concealment flag. If an error occurs that prevents the frame from being decoded (e.g. CRC frame error or decoding error), then error concealment is performed. The error concealment strategy fills the output PCM buffers with data repeated from the last block decoded without error until the maximum repeat count is reached. After that, the output buffers are filled with mute data.
- 0: Disable error concealment
- 1: Enable error concealment
error_conceal_block_repeats
- Maximum repeat count of the error concealment blocks.
- -1: Always repeat error concealment blocks
- 0: Lower boarder for repeat count of error concealment blocks
- 32767: Upper boarder for repeat count of error concealment blocks
use_channel_table
- Specifies the channel routing mode.
Value | Meaning |
0 | Use default routing (default) |
1 | Use the custom channel routing table |
2 | Use channel routing preset 1 |
3 | Use channel routing preset 2 |
4 | Use channel routing preset 3 |
5 | Use channel routing preset 4 |
6 | Use channel routing preset 5 |
7 | Use channel routing preset 6 |
custom_channel_table
- Specifies the custom channel routing mode. There are eight channel routing presets and a custom routing mode. The presets are:
Preset | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
mode 1 | L | R | Ls | Rs | C | LFE | Ext1 | Ext2 |
mode 2 | L | C | R | Ls | Rs | LFE | Ext1 | Ext2 |
mode 3 | L | Ls | C | Rs | R | LFE | Ext1 | Ext2 |
mode 4 | L | R | C | LFE | Ls | Rs | Ext1 | Ext2 |
mode 5 | L | C | Rs | R | Ls | LFE | Ext1 | Ext2 |
mode 6 | C | L | R | Ls | Rs | LFE | Ext1 | Ext2 |
- The custom routing mode can be used to route arbitrary input channels (1 .. 8) to arbitrary output channels (L, C, R, Ls, Rs, LFE, X1, X2). The
channel_table
slots are defined as follows:
Value | Meaning |
channel_table [0] | Left |
channel_table [1] | Center |
channel_table [2] | Right |
channel_table [3] | Left surround |
channel_table [4] | Right surround |
channel_table [5] | Subwoofer/LFE |
channel_table [6] | Left rear surround |
channel_table [7] | Right rear surround |
use_downmix_table
- Indicates whether the
downmix_table
field should be used or not.
- 0: Do not use custom table
- 1: Use custom table
downmix_table
- Pointer to a custom downmix table. Use the table to specify custom downmix values. Each value is a level from -1.0 to 1.0. The table is represented in the following form:
LL | LC | LR | LLs | LRs | LLfe | LExt1 | LExt2 |
CL | CC | CR | CLs | CRs | CLfe | CExt1 | CExt2 |
RL | RC | RR | RLs | RRs | RLfe | RExt1 | RExt2 |
LsL | LsC | LsR | LsLs | LsRs | LsLfe | LsExt1 | LsExt2 |
RsL | RsC | RsR | RsLs | RsRs | RsLfe | RsExt1 | RsExt2 |
LfeL | LfeC | LfeR | LfeLs | LfeRs | LfeLfe | LfeExt1 | LfeExt2 |
- The left output channel will be constructed as:
left output = LL left input + LC center input + ... + LExt2 Ext2 input
- If this table is not used, the Dolby Digital decoder will automatically select an appropriate downmixing strategy for the specified output channel configuration.
evo_hash_flag
- Sets Evolution decoder mode.
- 0: Parse Evolution data, but no calculation for PCM protection
- 1: Parse Evolution data, and calculate PCM protection (default)
decorrelator_mode
- Specifies if decorrelation should be used.
- 0: Decorrelation off
- 1: Guided (feed-forward) decorrelation (unsupported)
- 2: Non-guided (feed-backward) decorrelation