From b0abda43ecdf2dfa1d0c2f2f0070a965ed9666e9 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Mon, 11 May 2015 21:03:30 +0100 Subject: [PATCH] Ensure we configure a new extractor when we need one. Issue: #400 --- .../com/google/android/exoplayer/hls/HlsChunkSource.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java index 7afa4be013..2873dfcad0 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java @@ -243,16 +243,14 @@ public class HlsChunkSource { public Chunk getChunkOperation(TsChunk previousTsChunk, long seekPositionUs, long playbackPositionUs) { int nextFormatIndex; - boolean switchingVariant; boolean switchingVariantSpliced; if (adaptiveMode == ADAPTIVE_MODE_NONE) { nextFormatIndex = formatIndex; - switchingVariant = false; switchingVariantSpliced = false; } else { nextFormatIndex = getNextFormatIndex(previousTsChunk, playbackPositionUs); - switchingVariant = nextFormatIndex != formatIndex; - switchingVariantSpliced = switchingVariant && adaptiveMode == ADAPTIVE_MODE_SPLICE; + switchingVariantSpliced = nextFormatIndex != formatIndex + && adaptiveMode == ADAPTIVE_MODE_SPLICE; } int variantIndex = getVariantIndex(enabledFormats[nextFormatIndex]); @@ -339,7 +337,8 @@ public class HlsChunkSource { // Configure the extractor that will read the chunk. HlsExtractorWrapper extractorWrapper; - if (previousTsChunk == null || segment.discontinuity || switchingVariant || liveDiscontinuity) { + if (previousTsChunk == null || segment.discontinuity || !format.equals(previousTsChunk.format) + || liveDiscontinuity) { Extractor extractor = chunkUri.getLastPathSegment().endsWith(AAC_FILE_EXTENSION) ? new AdtsExtractor(startTimeUs) : new TsExtractor(startTimeUs, audioCapabilities);