Exoplayer: DecoderInitializationException with 48000Hz audio contents on a specific device

Created on 1 May 2019  路  3Comments  路  Source: google/ExoPlayer

[REQUIRED] Content description

I found that there is a specific device that cannot play 48000Hz sampling rate contents.

AXON7 mini ZTE B2017G always throws an error "DecoderInitializationException" every time it tries to play 48000Hz sampling-rate contents.

This device uses decoder "OMX.google.aac.decoder" for audio, and its CodecCapabilities#getAudioCapabilities#.getSupportedSampleRateRanges() contains 48000.

Also, it only plays fine when the audio decoder is disabled. (Only video plays.)

My questions are

  • Why does this device fail with "DecoderInitializationException", even though the decoder is "OMX.google.aac.decoder", which is used on other devices.

As far as I understand, "OMX.google.aac.decoder" is a software decoder and all the devices with "OMX.google.aac.decoder" decoder should fail to decode 48000Hz contents (like Nexus5, which also uses "OMX.google.aac.decoder" for audio) because there are no differences on the decoder aspect.

  • Could you think of any other possible reasons why only this device fails to decode 48000Hz contents or what can I do to find other devices that cause the same issue?

[REQUIRED] Link to test content

Sample URL

44100Hz sample (works on AXON7 mini ZTE B2017G): https://mock-stream-2.firebaseapp.com/44100hz/playlist.m3u8

48000Hz sample (not works on AXON7 mini ZTE B2017G): https://mock-stream-2.firebaseapp.com/48000hz/playlist.m3u8

[REQUIRED] Version of ExoPlayer being used

ExoPlayer Version: v2.9.6

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

Device: AXON7 mini ZTE B2017G
Android OS: 6.0.1

device specific content not playing

Most helpful comment

We have an error report from a user where the same problem occurs. We don't log Build.DEVICE in our error reports but have the following values, if this is of any help:

Build.MODEL = ZTE B2017G
Build.PRODUCT = P852A11
Build.DISPLAY = ZTE B2017G V1.0.0B12
Build.VERSION.RELEASE = 6.0.1

All 3 comments

I'm able to reproduce the problem with another Axon7 mini and it fails for any 48KHz stream. The reason seems to be that this device's aac decoder fails when trying to set the codec operating rate. We can fix this by adding a workaround for this device where we don't attempt to set this property as it's optional anyway.

Can you tell us the Build.DEVICE and Build.MODEL values for your device? It might help us to see if there is any variation in these for better workaround targeting. When using ExoPlayer, you'll see a log line containing "ExoPlayerLib/2." which includes these values.

We have an error report from a user where the same problem occurs. We don't log Build.DEVICE in our error reports but have the following values, if this is of any help:

Build.MODEL = ZTE B2017G
Build.PRODUCT = P852A11
Build.DISPLAY = ZTE B2017G V1.0.0B12
Build.VERSION.RELEASE = 6.0.1

Thanks!

Build.DEVICE is actually the most helpful one in most cases as it refers to the underlying system and not the user-visible name, because there are often multiple DEVICEs (with potentially different problems) for the same MODEL.

According to https://support.google.com/googleplay/answer/1727131?hl=en-GB, there are 3 DEVICES ("msm8952_64", "tulip", "verdandi") for MODEL "ZTE B2017G" and, in addition, also "msm8952_64" for MODEL "AXON 7 mini" which is supposedly the same device. Confusingly, there is also a "tulip" DEVICE for the "Redmi Note 6 Pro" MODEL which is clearly not the same. The one where I reproduced the problem was a "msm8952_64"/ "ZTE B2017G".

Given that, I will enable the workaround for MODEL = "ZTE B2017G" or "AXON 7 mini" as this seems to cover all variants of this device.

Was this page helpful?
0 / 5 - 0 ratings