Skip to content

Dolby results in an exception #688

Closed
@dimitar71

Description

@dimitar71

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.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions