diff --git a/library/core/src/main/java/com/google/android/exoplayer2/extractor/BinarySearchSeeker.java b/library/core/src/main/java/com/google/android/exoplayer2/extractor/BinarySearchSeeker.java index 9d5f7f1788..c4375e490c 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/extractor/BinarySearchSeeker.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/extractor/BinarySearchSeeker.java @@ -174,7 +174,8 @@ public abstract class BinarySearchSeeker { public int handlePendingSeek(ExtractorInput input, PositionHolder seekPositionHolder) throws InterruptedException, IOException { while (true) { - SeekOperationParams seekOperationParams = Assertions.checkNotNull(this.seekOperationParams); + SeekOperationParams seekOperationParams = + Assertions.checkStateNotNull(this.seekOperationParams); long floorPosition = seekOperationParams.getFloorBytePosition(); long ceilingPosition = seekOperationParams.getCeilingBytePosition(); long searchPosition = seekOperationParams.getNextSearchBytePosition(); diff --git a/library/core/src/main/java/com/google/android/exoplayer2/extractor/FlacSeekTableSeekMap.java b/library/core/src/main/java/com/google/android/exoplayer2/extractor/FlacSeekTableSeekMap.java index a711f09e2f..be65e77c95 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/extractor/FlacSeekTableSeekMap.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/extractor/FlacSeekTableSeekMap.java @@ -52,7 +52,7 @@ public final class FlacSeekTableSeekMap implements SeekMap { @Override public SeekPoints getSeekPoints(long timeUs) { - Assertions.checkNotNull(flacStreamMetadata.seekTable); + Assertions.checkStateNotNull(flacStreamMetadata.seekTable); long[] pointSampleNumbers = flacStreamMetadata.seekTable.pointSampleNumbers; long[] pointOffsets = flacStreamMetadata.seekTable.pointOffsets; diff --git a/library/core/src/main/java/com/google/android/exoplayer2/extractor/mkv/DefaultEbmlReader.java b/library/core/src/main/java/com/google/android/exoplayer2/extractor/mkv/DefaultEbmlReader.java index 5e6164249b..5aed97ec9a 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/extractor/mkv/DefaultEbmlReader.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/extractor/mkv/DefaultEbmlReader.java @@ -80,7 +80,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; @Override public boolean read(ExtractorInput input) throws IOException, InterruptedException { - Assertions.checkNotNull(processor); + Assertions.checkStateNotNull(processor); while (true) { MasterElement head = masterElementsStack.peek(); if (head != null && input.getPosition() >= head.elementEndPosition) { diff --git a/library/core/src/main/java/com/google/android/exoplayer2/extractor/mp3/XingSeeker.java b/library/core/src/main/java/com/google/android/exoplayer2/extractor/mp3/XingSeeker.java index aa1d8be316..816b647675 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/extractor/mp3/XingSeeker.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/extractor/mp3/XingSeeker.java @@ -133,7 +133,7 @@ import com.google.android.exoplayer2.util.Util; scaledPosition = 256; } else { int prevTableIndex = (int) percent; - long[] tableOfContents = Assertions.checkNotNull(this.tableOfContents); + long[] tableOfContents = Assertions.checkStateNotNull(this.tableOfContents); double prevScaledPosition = tableOfContents[prevTableIndex]; double nextScaledPosition = prevTableIndex == 99 ? 256 : tableOfContents[prevTableIndex + 1]; // Linearly interpolate between the two scaled positions. @@ -153,7 +153,7 @@ import com.google.android.exoplayer2.util.Util; if (!isSeekable() || positionOffset <= xingFrameSize) { return 0L; } - long[] tableOfContents = Assertions.checkNotNull(this.tableOfContents); + long[] tableOfContents = Assertions.checkStateNotNull(this.tableOfContents); double scaledPosition = (positionOffset * 256d) / dataSize; int prevTableIndex = Util.binarySearchFloor(tableOfContents, (long) scaledPosition, true, true); long prevTimeUs = getTimeUsForTableIndex(prevTableIndex); diff --git a/library/core/src/main/java/com/google/android/exoplayer2/extractor/ogg/StreamReader.java b/library/core/src/main/java/com/google/android/exoplayer2/extractor/ogg/StreamReader.java index 41ae394de2..ed0e3637da 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/extractor/ogg/StreamReader.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/extractor/ogg/StreamReader.java @@ -177,7 +177,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; } if (!seekMapSet) { - SeekMap seekMap = Assertions.checkNotNull(oggSeeker.createSeekMap()); + SeekMap seekMap = Assertions.checkStateNotNull(oggSeeker.createSeekMap()); extractorOutput.seekMap(seekMap); seekMapSet = true; } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/extractor/ts/AdtsExtractor.java b/library/core/src/main/java/com/google/android/exoplayer2/extractor/ts/AdtsExtractor.java index 86dacd8c30..d14b6a0b3e 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/extractor/ts/AdtsExtractor.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/extractor/ts/AdtsExtractor.java @@ -20,7 +20,6 @@ import static com.google.android.exoplayer2.metadata.id3.Id3Decoder.ID3_HEADER_L import static com.google.android.exoplayer2.metadata.id3.Id3Decoder.ID3_TAG; import androidx.annotation.IntDef; -import androidx.annotation.Nullable; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.ParserException; import com.google.android.exoplayer2.extractor.ConstantBitrateSeekMap; @@ -39,6 +38,8 @@ import java.io.IOException; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; +import org.checkerframework.checker.nullness.qual.MonotonicNonNull; +import org.checkerframework.checker.nullness.qual.RequiresNonNull; /** * Extracts data from AAC bit streams with ADTS framing. @@ -86,7 +87,7 @@ public final class AdtsExtractor implements Extractor { private final ParsableByteArray scratch; private final ParsableBitArray scratchBits; - @Nullable private ExtractorOutput extractorOutput; + @MonotonicNonNull private ExtractorOutput extractorOutput; private long firstSampleTimestampUs; private long firstFramePosition; @@ -180,6 +181,8 @@ public final class AdtsExtractor implements Extractor { @Override public int read(ExtractorInput input, PositionHolder seekPosition) throws IOException, InterruptedException { + Assertions.checkStateNotNull(extractorOutput); // Asserts that init has been called. + long inputLength = input.getLength(); boolean canUseConstantBitrateSeeking = (flags & FLAG_ENABLE_CONSTANT_BITRATE_SEEKING) != 0 && inputLength != C.LENGTH_UNSET; @@ -230,6 +233,7 @@ public final class AdtsExtractor implements Extractor { return firstFramePosition; } + @RequiresNonNull("extractorOutput") private void maybeOutputSeekMap( long inputLength, boolean canUseConstantBitrateSeeking, boolean readEndOfStream) { if (hasOutputSeekMap) { @@ -244,7 +248,6 @@ public final class AdtsExtractor implements Extractor { return; } - ExtractorOutput extractorOutput = Assertions.checkNotNull(this.extractorOutput); if (useConstantBitrateSeeking && reader.getSampleDurationUs() != C.TIME_UNSET) { extractorOutput.seekMap(getConstantBitrateSeekMap(inputLength)); } else {