Skip to content

ExoPlayer does not support the latest DD+JOC signaling for DASH  #6636

@ybai001

Description

@ybai001

[REQUIRED] Issue description

ExoPlayer does not support the latest DD+JOC signaling for DASH

[REQUIRED] Reproduction steps

  1. Play Dolby Atmos content: http://d9zmmjtv72w5o.cloudfront.net/OnDelKits_dev/DDP/Dolby_Digital_Plus_Online_Delivery_dev_portal/Test_Signals/muxed_streams/DASH/Live_MPD/ChID_voices_1280x720p_25fps_h264_6ch_640kbps_ddp_joc.mpd
  2. MIME type AUDIO_E_AC3 is returned. (Should be AUDIO_E_AC3_JOC)

[REQUIRED] Link to test content

http://d9zmmjtv72w5o.cloudfront.net/OnDelKits_dev/DDP/Dolby_Digital_Plus_Online_Delivery_dev_portal/Test_Signals/muxed_streams/DASH/Live_MPD/ChID_voices_1280x720p_25fps_h264_6ch_640kbps_ddp_joc.mpd

[REQUIRED] A full bug report captured from the device

We have found the root cause of this issue. ExoPlayer does not support the latest DD+JOC signaling for DASH. The spec is https://www.etsi.org/deliver/etsi_ts/103400_103499/103420/01.02.01_60/ts_103420v010201p.pdf , annex D (page 80).

D.2.2.1 Extension type
Presence of the enhanced AC-3 extension as defined in the present document is signalled with a DASH supplemental
property descriptor using the schemeIdUri tag:dolby.com,2018:dash:EC3_ExtensionType:2018.
The value of this DASH descriptor shall be the three character string JOC.

To fix this issue, we need to fix the parseEac3SupplementalProperties method in:
https://github.com/google/ExoPlayer/blob/41b3fc110178e9a5c969a0102c5b074189065273/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java
we need to add a check for the new supplemental property. The code can be changed to
protected static String parseEac3SupplementalProperties(List<Descriptor> supplementalProperties) {
for (int i = 0; i < supplementalProperties.size(); i++) {
Descriptor descriptor = supplementalProperties.get(i);
String schemeIdUri = descriptor.schemeIdUri;
if (("tag:dolby.com,2014:dash:DolbyDigitalPlusExtensionType:2014".equals(schemeIdUri)
&& "ec+3".equals(descriptor.value))
|| ("tag:dolby.com,2018:dash:EC3_ExtensionType:2018".equals(schemeIdUri)
&& "JOC".equals(descriptor.value))) {
return MimeTypes.AUDIO_E_AC3_JOC;
}
}
return MimeTypes.AUDIO_E_AC3;
}

[REQUIRED] Version of ExoPlayer being used

Exoplayer v2.10.7

[REQUIRED] Device(s) and version(s) of Android being used

Google Pixel 3

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions