Fix E-AC3 output capability check without sample rate

PiperOrigin-RevId: 432189509
(cherry picked from commit e66d0c9039dec5d60afd930c10520db5ccf08121)
This commit is contained in:
andrewlewis 2022-03-03 15:29:15 +00:00 committed by Ian Baker
parent 71685dabf1
commit 657703e4b0
2 changed files with 7 additions and 1 deletions

View File

@ -2,6 +2,9 @@
### dev-v2 (not yet released) ### dev-v2 (not yet released)
* Audio:
* Fix error checking audio capabilities for Dolby Atmos (E-AC3-JOC) in
HLS.
* Extractors: * Extractors:
* FMP4: Fix issue where emsg sample metadata could be output in the wrong * FMP4: Fix issue where emsg sample metadata could be output in the wrong
order for streams containing both v0 and v1 emsg atoms order for streams containing both v0 and v1 emsg atoms

View File

@ -1730,8 +1730,11 @@ public final class DefaultAudioSink implements AudioSink {
// the channel count for this encoding, but before then there is no way to query it so we // the channel count for this encoding, but before then there is no way to query it so we
// assume 6 channel audio is supported. // assume 6 channel audio is supported.
if (Util.SDK_INT >= 29) { if (Util.SDK_INT >= 29) {
// Default to 48 kHz if the format doesn't have a sample rate (for example, for chunkless
// HLS preparation). See [Internal: b/222127949].
int sampleRate = format.sampleRate != Format.NO_VALUE ? format.sampleRate : 48000;
channelCount = channelCount =
getMaxSupportedChannelCountForPassthroughV29(C.ENCODING_E_AC3_JOC, format.sampleRate); getMaxSupportedChannelCountForPassthroughV29(C.ENCODING_E_AC3_JOC, sampleRate);
if (channelCount == 0) { if (channelCount == 0) {
Log.w(TAG, "E-AC3 JOC encoding supported but no channel count supported"); Log.w(TAG, "E-AC3 JOC encoding supported but no channel count supported");
return null; return null;