From 01d22f8123e16880578d0e9352a033cd1fb2f42a Mon Sep 17 00:00:00 2001 From: cdrolle Date: Thu, 5 Jan 2017 08:15:29 -0800 Subject: [PATCH] Handle empty RawCC files. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=143667717 --- .../extractor/rawcc/RawCcExtractor.java | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer2/extractor/rawcc/RawCcExtractor.java b/library/src/main/java/com/google/android/exoplayer2/extractor/rawcc/RawCcExtractor.java index f6cd29aff2..f9957aebe5 100644 --- a/library/src/main/java/com/google/android/exoplayer2/extractor/rawcc/RawCcExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer2/extractor/rawcc/RawCcExtractor.java @@ -83,8 +83,11 @@ public final class RawCcExtractor implements Extractor { while (true) { switch (parserState) { case STATE_READING_HEADER: - parseHeader(input); - parserState = STATE_READING_TIMESTAMP_AND_COUNT; + if (parseHeader(input)) { + parserState = STATE_READING_TIMESTAMP_AND_COUNT; + } else { + return RESULT_END_OF_INPUT; + } break; case STATE_READING_TIMESTAMP_AND_COUNT: if (parseTimestampAndSampleCount(input)) { @@ -114,14 +117,18 @@ public final class RawCcExtractor implements Extractor { // Do nothing } - private void parseHeader(ExtractorInput input) throws IOException, InterruptedException { + private boolean parseHeader(ExtractorInput input) throws IOException, InterruptedException { dataScratch.reset(); - input.readFully(dataScratch.data, 0, HEADER_SIZE); - if (dataScratch.readInt() != HEADER_ID) { - throw new IOException("Input not RawCC"); + if (input.readFully(dataScratch.data, 0, HEADER_SIZE, true)) { + if (dataScratch.readInt() != HEADER_ID) { + throw new IOException("Input not RawCC"); + } + version = dataScratch.readUnsignedByte(); + // no versions use the flag fields yet + return true; + } else { + return false; } - version = dataScratch.readUnsignedByte(); - // no versions use the flag fields yet } private boolean parseTimestampAndSampleCount(ExtractorInput input) throws IOException,