From fb97fca04e339d5dbe23a92bb4d300901aa04c74 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Fri, 17 Apr 2015 20:04:52 +0100 Subject: [PATCH] Handle dynamic appearance/disappearance of ID3 track in HLS. --- .../google/android/exoplayer/extractor/ts/TsExtractor.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/ts/TsExtractor.java b/library/src/main/java/com/google/android/exoplayer/extractor/ts/TsExtractor.java index b59755ddb9..c13e808b5a 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/ts/TsExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/ts/TsExtractor.java @@ -231,6 +231,10 @@ public final class TsExtractor implements Extractor { // Skip the descriptors. data.skipBytes(programInfoLength); + // Setup an ID3 track regardless of whether there's a corresponding entry, in case one + // appears intermittently during playback. See b/20261500. + Id3Reader id3Reader = new Id3Reader(output.track(TS_STREAM_TYPE_ID3)); + int entriesSize = sectionLength - 9 /* Size of the rest of the fields before descriptors */ - programInfoLength - 4 /* CRC size */; while (entriesSize > 0) { @@ -261,7 +265,7 @@ public final class TsExtractor implements Extractor { seiReader); break; case TS_STREAM_TYPE_ID3: - pesPayloadReader = new Id3Reader(output.track(TS_STREAM_TYPE_ID3)); + pesPayloadReader = id3Reader; break; }