Description
Version
Media3 1.1.1
More version details
All Exoplayer 2.18.7+ versions have this problem.
Devices that reproduce the issue
- Chromecast
- Nvidia Shield
- Sony TV with Android TV
- majority of Android TV-related boxes
Devices that do not reproduce the issue
- Mobile-related devices, e.g. Pixel phones
Reproducible in the demo app?
Not tested
Reproduction steps
Find a schemeIdUri="tag:dolby.com,2014:dash:audio_channel_configuration:2011"
manifest which value
is not one of the supported ones in DashManifestParser.parseDolbyChannelConfiguration()
:
"4000"
- 1 audio channel"a000"
- 2 audio channels"f801"
- 6 audio channels"fa01"
- 8 audio channels
For example value="F800"
in:
Expected result
A good approach would be parsing and returning a valid number, not Format.NO_VALUE
.
Actual result
This results in a 100% reproducible IllegalArgumentException from within Exoplayer.
This may need to be parsed properly, and return a safe audio channels value by default, e.g. 2
.
Also, it is a good idea to be properly documented in the Exoplayer documentation/references.
For us, F800
defines 5-channel audio.
Based on https://ott.dolby.com/OnDelKits/DDP/Dolby_Digital_Plus_Online_Delivery_Kit_v1.5/Documentation/Content_Creation/SDM/help_files/topics/ddp_mpeg_dash_c_mpd_auchlconfig.html, Alternative AudioChannelConfiguration scheme
section:
The
value
element is a four-digit hexadecimal representation of the 16-bit bit field, which describes the channel assignment of the referenced Dolby Digital Plus bitstream according to the table. Bit 0, which indicates the presence of the L channel, is the most-significant bit of the AudioChannelConfiguration descriptor.
This means any value, not just above 4 would be valid.
Also, in DashManifestParser.parseDolbyChannelConfiguration()
, the coverage is 1, 2, 6 and 8 audio channels.
It does not cover 5 and 7 audio channels for example.
One option would be checking range of values rather one value per channel configuration.
Media
AAAAOHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABgSEBQZ1oAd0hGygFQCQVJESVNI49yVmwY=
AAAAOHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABgSEBQZ1oAd0hGygFQCQVJESVNI49yVmwY=
AAAAOHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABgSEBQZ1oAd0hGygFQCQVJESVNI49yVmwY=
Bug Report
- You will email the zip file produced by
adb bugreport
to [email protected] after filing this issue.