Extension to AC-4 DSI

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.