diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/ogg/OggParser.java b/library/src/main/java/com/google/android/exoplayer/extractor/ogg/OggParser.java index 8bef5ab61e..c66adcabe6 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/ogg/OggParser.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/ogg/OggParser.java @@ -112,12 +112,9 @@ import java.io.IOException; Assertions.checkArgument(input.getLength() != C.LENGTH_UNBOUNDED); // never read forever! OggUtil.skipToNextPage(input); pageHeader.reset(); - while ((pageHeader.type & 0x04) != 0x04) { - if (pageHeader.bodySize > 0) { - input.skipFully(pageHeader.bodySize); - } + while ((pageHeader.type & 0x04) != 0x04 && input.getPosition() < input.getLength()) { OggUtil.populatePageHeader(input, pageHeader, headerArray, false); - input.skipFully(pageHeader.headerSize); + input.skipFully(pageHeader.headerSize + pageHeader.bodySize); } return pageHeader.granulePosition; } diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/ogg/VorbisReader.java b/library/src/main/java/com/google/android/exoplayer/extractor/ogg/VorbisReader.java index 1953149ee1..5bac358dee 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/ogg/VorbisReader.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/ogg/VorbisReader.java @@ -34,6 +34,8 @@ import java.util.ArrayList; */ /* package */ final class VorbisReader extends StreamReader implements SeekMap { + private static final long LARGEST_EXPECTED_PAGE_SIZE = 8000; + private VorbisSetup vorbisSetup; private int previousPacketBlockSize; private long elapsedSamples; @@ -78,7 +80,7 @@ import java.util.ArrayList; extractorOutput.seekMap(this); if (inputLength != C.LENGTH_UNBOUNDED) { // seek to the end just before the last page of stream to get the duration - seekPosition.position = input.getLength() - 8000; + seekPosition.position = Math.max(0, input.getLength() - LARGEST_EXPECTED_PAGE_SIZE); return Extractor.RESULT_SEEK; } }