Annotate render's read source result
So that swich case has a warning if all case are not covered. PiperOrigin-RevId: 298574013
This commit is contained in:
parent
7bfd2b27eb
commit
58f42e9f8b
@ -345,12 +345,12 @@ public abstract class BaseRenderer implements Renderer, RendererCapabilities {
|
||||
* @param formatRequired Whether the caller requires that the format of the stream be read even if
|
||||
* it's not changing. A sample will never be read if set to true, however it is still possible
|
||||
* for the end of stream or nothing to be read.
|
||||
* @return The result, which can be {@link C#RESULT_NOTHING_READ}, {@link C#RESULT_FORMAT_READ} or
|
||||
* {@link C#RESULT_BUFFER_READ}.
|
||||
* @return The status of read, one of {@link SampleStream.ReadDataResult}.
|
||||
*/
|
||||
@SampleStream.ReadDataResult
|
||||
protected final int readSource(
|
||||
FormatHolder formatHolder, DecoderInputBuffer buffer, boolean formatRequired) {
|
||||
int result = stream.readData(formatHolder, buffer, formatRequired);
|
||||
@SampleStream.ReadDataResult int result = stream.readData(formatHolder, buffer, formatRequired);
|
||||
if (result == C.RESULT_BUFFER_READ) {
|
||||
if (buffer.isEndOfStream()) {
|
||||
readingPositionUs = C.TIME_END_OF_SOURCE;
|
||||
|
@ -37,6 +37,7 @@ import com.google.android.exoplayer2.decoder.SimpleOutputBuffer;
|
||||
import com.google.android.exoplayer2.drm.DrmSession;
|
||||
import com.google.android.exoplayer2.drm.DrmSession.DrmSessionException;
|
||||
import com.google.android.exoplayer2.drm.ExoMediaCrypto;
|
||||
import com.google.android.exoplayer2.source.SampleStream;
|
||||
import com.google.android.exoplayer2.util.Assertions;
|
||||
import com.google.android.exoplayer2.util.MediaClock;
|
||||
import com.google.android.exoplayer2.util.MimeTypes;
|
||||
@ -231,7 +232,7 @@ public abstract class SimpleDecoderAudioRenderer extends BaseRenderer implements
|
||||
// We don't have a format yet, so try and read one.
|
||||
FormatHolder formatHolder = getFormatHolder();
|
||||
flagsOnlyBuffer.clear();
|
||||
int result = readSource(formatHolder, flagsOnlyBuffer, true);
|
||||
@SampleStream.ReadDataResult int result = readSource(formatHolder, flagsOnlyBuffer, true);
|
||||
if (result == C.RESULT_FORMAT_READ) {
|
||||
onInputFormatChanged(formatHolder);
|
||||
} else if (result == C.RESULT_BUFFER_READ) {
|
||||
@ -392,7 +393,7 @@ public abstract class SimpleDecoderAudioRenderer extends BaseRenderer implements
|
||||
return false;
|
||||
}
|
||||
|
||||
int result;
|
||||
@SampleStream.ReadDataResult int result;
|
||||
FormatHolder formatHolder = getFormatHolder();
|
||||
if (waitingForKeys) {
|
||||
// We've already read an encrypted sample into buffer, and are waiting for keys.
|
||||
|
@ -42,6 +42,7 @@ import com.google.android.exoplayer2.drm.DrmSession.DrmSessionException;
|
||||
import com.google.android.exoplayer2.drm.FrameworkMediaCrypto;
|
||||
import com.google.android.exoplayer2.mediacodec.MediaCodecUtil.DecoderQueryException;
|
||||
import com.google.android.exoplayer2.source.MediaPeriod;
|
||||
import com.google.android.exoplayer2.source.SampleStream;
|
||||
import com.google.android.exoplayer2.util.Assertions;
|
||||
import com.google.android.exoplayer2.util.Log;
|
||||
import com.google.android.exoplayer2.util.NalUnitUtil;
|
||||
@ -934,6 +935,7 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
|
||||
private boolean readToFlagsOnlyBuffer(boolean requireFormat) throws ExoPlaybackException {
|
||||
FormatHolder formatHolder = getFormatHolder();
|
||||
flagsOnlyBuffer.clear();
|
||||
@SampleStream.ReadDataResult
|
||||
int result = readSource(formatHolder, flagsOnlyBuffer, requireFormat);
|
||||
if (result == C.RESULT_FORMAT_READ) {
|
||||
onInputFormatChanged(formatHolder);
|
||||
@ -1219,7 +1221,7 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
|
||||
return true;
|
||||
}
|
||||
|
||||
int result;
|
||||
@SampleStream.ReadDataResult int result;
|
||||
FormatHolder formatHolder = getFormatHolder();
|
||||
int adaptiveReconfigurationBytes = 0;
|
||||
if (waitingForKeys) {
|
||||
|
@ -27,6 +27,7 @@ import com.google.android.exoplayer2.C;
|
||||
import com.google.android.exoplayer2.Format;
|
||||
import com.google.android.exoplayer2.FormatHolder;
|
||||
import com.google.android.exoplayer2.RendererCapabilities;
|
||||
import com.google.android.exoplayer2.source.SampleStream;
|
||||
import com.google.android.exoplayer2.util.Assertions;
|
||||
import com.google.android.exoplayer2.util.Util;
|
||||
import java.util.ArrayList;
|
||||
@ -118,7 +119,7 @@ public final class MetadataRenderer extends BaseRenderer implements Callback {
|
||||
if (!inputStreamEnded && pendingMetadataCount < MAX_PENDING_METADATA_COUNT) {
|
||||
buffer.clear();
|
||||
FormatHolder formatHolder = getFormatHolder();
|
||||
int result = readSource(formatHolder, buffer, false);
|
||||
@SampleStream.ReadDataResult int result = readSource(formatHolder, buffer, false);
|
||||
if (result == C.RESULT_BUFFER_READ) {
|
||||
if (buffer.isEndOfStream()) {
|
||||
inputStreamEnded = true;
|
||||
|
@ -310,7 +310,7 @@ public final class ClippingMediaPeriod implements MediaPeriod, MediaPeriod.Callb
|
||||
buffer.setFlags(C.BUFFER_FLAG_END_OF_STREAM);
|
||||
return C.RESULT_BUFFER_READ;
|
||||
}
|
||||
int result = childStream.readData(formatHolder, buffer, requireFormat);
|
||||
@ReadDataResult int result = childStream.readData(formatHolder, buffer, requireFormat);
|
||||
if (result == C.RESULT_FORMAT_READ) {
|
||||
Format format = Assertions.checkNotNull(formatHolder.format);
|
||||
if (format.encoderDelay != 0 || format.encoderPadding != 0) {
|
||||
|
@ -15,16 +15,26 @@
|
||||
*/
|
||||
package com.google.android.exoplayer2.source;
|
||||
|
||||
import androidx.annotation.IntDef;
|
||||
import com.google.android.exoplayer2.C;
|
||||
import com.google.android.exoplayer2.FormatHolder;
|
||||
import com.google.android.exoplayer2.decoder.DecoderInputBuffer;
|
||||
import java.io.IOException;
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
|
||||
/**
|
||||
* A stream of media samples (and associated format information).
|
||||
*/
|
||||
public interface SampleStream {
|
||||
|
||||
/** Return values of {@link #readData(FormatHolder, DecoderInputBuffer, boolean)}. */
|
||||
@Documented
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
@IntDef({C.RESULT_NOTHING_READ, C.RESULT_FORMAT_READ, C.RESULT_BUFFER_READ})
|
||||
@interface ReadDataResult {}
|
||||
|
||||
/**
|
||||
* Returns whether data is available to be read.
|
||||
* <p>
|
||||
@ -62,9 +72,9 @@ public interface SampleStream {
|
||||
* @param formatRequired Whether the caller requires that the format of the stream be read even if
|
||||
* it's not changing. A sample will never be read if set to true, however it is still possible
|
||||
* for the end of stream or nothing to be read.
|
||||
* @return The result, which can be {@link C#RESULT_NOTHING_READ}, {@link C#RESULT_FORMAT_READ} or
|
||||
* {@link C#RESULT_BUFFER_READ}.
|
||||
* @return The status of read, one of {@link ReadDataResult}.
|
||||
*/
|
||||
@ReadDataResult
|
||||
int readData(FormatHolder formatHolder, DecoderInputBuffer buffer, boolean formatRequired);
|
||||
|
||||
/**
|
||||
|
@ -26,6 +26,7 @@ import com.google.android.exoplayer2.C;
|
||||
import com.google.android.exoplayer2.Format;
|
||||
import com.google.android.exoplayer2.FormatHolder;
|
||||
import com.google.android.exoplayer2.RendererCapabilities;
|
||||
import com.google.android.exoplayer2.source.SampleStream;
|
||||
import com.google.android.exoplayer2.util.Assertions;
|
||||
import com.google.android.exoplayer2.util.Log;
|
||||
import com.google.android.exoplayer2.util.MimeTypes;
|
||||
@ -229,7 +230,7 @@ public final class TextRenderer extends BaseRenderer implements Callback {
|
||||
return;
|
||||
}
|
||||
// Try and read the next subtitle from the source.
|
||||
int result = readSource(formatHolder, nextInputBuffer, false);
|
||||
@SampleStream.ReadDataResult int result = readSource(formatHolder, nextInputBuffer, false);
|
||||
if (result == C.RESULT_BUFFER_READ) {
|
||||
if (nextInputBuffer.isEndOfStream()) {
|
||||
inputStreamEnded = true;
|
||||
|
@ -32,6 +32,7 @@ import com.google.android.exoplayer2.decoder.SimpleDecoder;
|
||||
import com.google.android.exoplayer2.drm.DrmSession;
|
||||
import com.google.android.exoplayer2.drm.DrmSession.DrmSessionException;
|
||||
import com.google.android.exoplayer2.drm.ExoMediaCrypto;
|
||||
import com.google.android.exoplayer2.source.SampleStream;
|
||||
import com.google.android.exoplayer2.util.Assertions;
|
||||
import com.google.android.exoplayer2.util.TimedValueQueue;
|
||||
import com.google.android.exoplayer2.util.TraceUtil;
|
||||
@ -153,7 +154,7 @@ public abstract class SimpleDecoderVideoRenderer extends BaseRenderer {
|
||||
// We don't have a format yet, so try and read one.
|
||||
FormatHolder formatHolder = getFormatHolder();
|
||||
flagsOnlyBuffer.clear();
|
||||
int result = readSource(formatHolder, flagsOnlyBuffer, true);
|
||||
@SampleStream.ReadDataResult int result = readSource(formatHolder, flagsOnlyBuffer, true);
|
||||
if (result == C.RESULT_FORMAT_READ) {
|
||||
onInputFormatChanged(formatHolder);
|
||||
} else if (result == C.RESULT_BUFFER_READ) {
|
||||
@ -678,7 +679,7 @@ public abstract class SimpleDecoderVideoRenderer extends BaseRenderer {
|
||||
return false;
|
||||
}
|
||||
|
||||
int result;
|
||||
@SampleStream.ReadDataResult int result;
|
||||
FormatHolder formatHolder = getFormatHolder();
|
||||
if (waitingForKeys) {
|
||||
// We've already read an encrypted sample into buffer, and are waiting for keys.
|
||||
|
@ -24,6 +24,7 @@ import com.google.android.exoplayer2.FormatHolder;
|
||||
import com.google.android.exoplayer2.Renderer;
|
||||
import com.google.android.exoplayer2.RendererCapabilities;
|
||||
import com.google.android.exoplayer2.decoder.DecoderInputBuffer;
|
||||
import com.google.android.exoplayer2.source.SampleStream;
|
||||
import com.google.android.exoplayer2.util.MimeTypes;
|
||||
import com.google.android.exoplayer2.util.ParsableByteArray;
|
||||
import com.google.android.exoplayer2.util.Util;
|
||||
@ -86,6 +87,7 @@ public class CameraMotionRenderer extends BaseRenderer {
|
||||
while (!hasReadStreamToEnd() && lastTimestampUs < positionUs + SAMPLE_WINDOW_DURATION_US) {
|
||||
buffer.clear();
|
||||
FormatHolder formatHolder = getFormatHolder();
|
||||
@SampleStream.ReadDataResult
|
||||
int result = readSource(formatHolder, buffer, /* formatRequired= */ false);
|
||||
if (result != C.RESULT_BUFFER_READ || buffer.isEndOfStream()) {
|
||||
return;
|
||||
|
@ -25,6 +25,7 @@ import com.google.android.exoplayer2.FormatHolder;
|
||||
import com.google.android.exoplayer2.Renderer;
|
||||
import com.google.android.exoplayer2.RendererCapabilities;
|
||||
import com.google.android.exoplayer2.decoder.DecoderInputBuffer;
|
||||
import com.google.android.exoplayer2.source.SampleStream;
|
||||
import com.google.android.exoplayer2.util.Assertions;
|
||||
import com.google.android.exoplayer2.util.MimeTypes;
|
||||
import java.util.Arrays;
|
||||
@ -83,6 +84,7 @@ public class FakeRenderer extends BaseRenderer {
|
||||
if (!hasPendingBuffer) {
|
||||
FormatHolder formatHolder = getFormatHolder();
|
||||
buffer.clear();
|
||||
@SampleStream.ReadDataResult
|
||||
int result = readSource(formatHolder, buffer, /* formatRequired= */ false);
|
||||
if (result == C.RESULT_FORMAT_READ) {
|
||||
formatReadCount++;
|
||||
|
Loading…
x
Reference in New Issue
Block a user