If the ac4_toc of a Dolby AC-4 bitstream contains an
immersive stereo presentation (
presentation_version = 2) and that presentation
contains an AC-4 substream with
channel_mode set to 0b1111001, then this
immersive stereo presentation is created from Dolby Atmos content and can be signaled as Dolby Atmos.
To signal Dolby Atmos, the
ac4_presentation_v1_dsi
defined in ETSI TS 103 190-2 is extended,
as highlighted in the following table. Dolby Atmos is signaled by setting
the dolby_atmos_indicator to 1.
The extension to
ac4_presentation_v1_dsi includes additional fields for
signalling Dolby AC-4 capabilities.
- The
de_indicator field indicates that the audio presentation
includes dialogue enhancement metadata and must be set to
1
- The
extended_presentation_id field is an optional extension to
the presentation_id to increase its value range beyond
31. If the extension is needed, the
b_extended_presentation_id field must be set to
1; otherwise, the
b_extended_presentation_id field must be set to
0. For index values greater than 31, the
corresponding value is signalled using only the nine bits of the
extended_presentation_id, and the bits of the
presentation_id must be ignored when the bitstream is
read.
| Syntax |
Word size (in bits) |
ac4_presentation_v1_dsi(pres_bytes)
{ presentation_config_v1; ............................................................5
if (presentation_config_v1 == 0x06) {b_add_emdf_substreams = 1;}
else { mdcompat; ...................................................................3
b_presentation_id; ...............................................................1
if (b_presentation_id) {
presentation_id; ...............................................................5
}
dsi_frame_rate_multiply_info; ....................................................2
dsi_frame_rate_fraction_info; ....................................................2
presentation_emdf_version; .......................................................5
presentation_key_id; .............................................................10
b_presentation_channel_coded; ....................................................1
if (b_presentation_channel_coded) {
dsi_presentation_ch_mode; ......................................................5
if (dsi_presentation_channel_mode in [11, 12, 13, 14]) {
pres_b_4_back_channels_present; ..............................................1
pres_top_channel_pairs; ......................................................2
}
presentation_channel_mask_v1; ..................................................24
}
b_presentation_core_differs; ....................................................1
if (b_presentation_core_differs) {
b_presentation_core_channel_coded; .............................................1
if (b_presentation_core_channel_coded) {
dsi_presentation_channel_mode_core; ..........................................2
} }
b_presentation_filter; ..........................................................1
if (b_presentation_filter) {
b_enable_presentation; ........................................................1
n_filter_bytes; ...............................................................8
for (i = 0; i < n_filter_bytes; i++) {
filter_data; ..............................................................8
} }
if (presentation_config_v1 == 0x1f)
{ac4_substream_group_dsi();}
else { b_multi_pid; ............................................................1
if (presentation_config_v1 in [0, 1, 2])
{ac4_substream_group_dsi(); ac4_substream_group_dsi();}
if (presentation_config_v1 in [3, 4])
{ac4_substream_group_dsi(); ac4_substream_group_dsi();
ac4_substream_group_dsi();}
if (presentation_config_v1 == 5) {
n_substream_groups_minus2; ..................................................3
n_substream_groups = n_substream_groups_minus2 + 2;
for (sg = 0; sg < n_substream_groups; sg++)
{ac4_substream_group_dsi(); } }
if (presentation_config_v1 > 5) {
n_skip_bytes; ................................................................7
for (i = 0; i < n_skip_bytes; i++) {
skip_data; .................................................................8
} } }
b_pre_virtualized; ...............................................................1
b_add_emdf_substreams; ...........................................................1
}
if (b_add_emdf_substreams) {
n_add_emdf_substreams; ..........................................................7
for (j = 0; j < n_add_emdf_substreams; j++) {
substream_emdf_version; ........................................................5
substream_key_id; ..............................................................10
} }
b_presentation_bitrate_info; .....................................................1
if (b_presentation_bitrate_info)
{ac4_bitrate_dsi();}
b_alternative; ...................................................................1
if (b_alternative) {
byte_align; ......................................................................0-7
alternative_info(); }
byte_align; .......................................................................0-7
if (bits_read() <= (pres_bytes - 1) * 8) {
de_indicator; ...................................................................1
dolby_atmos_indicator; .....................................................1
reserved; ..................................................................4
b_extended_presentation_id; .....................................................1
if (b_extended_presentation_id) {
extended_presentation_id; ......................................................9
}
else {
reserved; .....................................................................1
} } }
|
|
library_booksNote: The number of bits in byte_align pads the number
of bits, counted from the start of
ac4_presentation_v1_dsi,
to a multiple of eight.
|