-
Notifications
You must be signed in to change notification settings - Fork 6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Dolby EAC3 audio won't play on HTC 10, HTC M9 #2940
Comments
Proposed fix here: #2941 |
I think getMaxInputChannelCount actually returns 1 for all non-standard decoders, on all devices, prior to the O release of Android. This is due to applyLevelLimits being implemented incorrectly. This is definitely the case on N. We'd have to check back through the source code to see if earlier releases were also affected. There's a fix in O, although it didn't make it into the preview. So I wonder whether we need to come up with a more general solution to this? It's pretty easy to work out if a decoder is non-standard; the mimeType doesn't have a corresponding block in applyLevelLimits. A more open question is what max channel counts to assume in each case. It doesn't seem ideal just to assume support for unlimited channels? |
We should probably just work out what the correct max channel counts are for |
From the spec ATSC Standard: Digital Audio Compression (AC-3, E-AC-3), Doc. A/52:2015 24 November 2012 For AC3, section 5.4.2.3 indicates a max of 5 channels, but this does not include the LFE which is the For EAC3, section E.3.8.2: "The maximum number of channels rendered for a single program is 16". This seems to include the LFE channel. I can update my pull request to check for these channel counts. |
If we set to the max according to the spec then that's probably the same as assuming support for unlimited channels, because it's likely impossible to make streams with more channels than the spec allows. We're more interested in what the actual decoder implementations support, which may well be less than the maximums according to the spec (e.g. I'm not convinced |
But where do you get those values from, and how are they verified? If you go digging into some proprietary source code, find the channel count and use that magic number, there's no way to know if that applies to a single version of the decoder/software, or if that value is later changed, or even if another EAC3 decoder uses the same value. To me, the 2 solutions are:
|
#2941 is updated with the spec values. |
Ask Dolby, probably. We will do some digging. |
Issue: #2940 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=159099602
We've merged a slightly more general fix for this issue. Please give it a try and verify. Thanks! |
Verified its working. Thanks for fixing. |
Issue: #2940 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=159099602
Issue description
On HTC 10 and HTC M9, Dolby Digital EAC3 tracks are disabled. When checking audio capabilities,
audioCapabilities.getMaxInputChannelCount()
returns 1 and log messages indicate the media has 6 channels:18:26.824 32201-32300/com.google.android.exoplayer2.demo D/MediaCodecInfo: NoSupport [channelCount.support, 6, MAX: 1] [OMX.dolby.eac3.decoder, audio/eac3] [htc_pmewl, HTC6545LVW, HTC, 23]
Reproduction steps
Play the test content link below in the demo app. Try changing audio track, and the EAC3 tracks are shown as disabled.
Link to test content
https://content.uplynk.com/438edd39f70a4c169cab2660e001e362.m3u8?ddp=1&hlsver=6
Version of ExoPlayer being used
dev-v2 branch after version 2.4.1
Device(s) and version(s) of Android being used
HTC 10, Android 6.0.1
HTC m9, Android 7.0
A full bug report captured from the device
Will email the full report. Here is a relevant snippet from logcat:
The text was updated successfully, but these errors were encountered: