Deprecate decode-only flag.
The flag is no longer used by our components and only set and checked in a few places to guarantee compatiblity with existing renderers and decoders that still use it. The flag will be removed in the future due to its design limitations. #minor-release PiperOrigin-RevId: 571291168
This commit is contained in:
parent
d9cf350eb0
commit
89d01981bc
@ -618,6 +618,7 @@ public final class C {
|
|||||||
* {@link #BUFFER_FLAG_LAST_SAMPLE}, {@link #BUFFER_FLAG_ENCRYPTED} and {@link
|
* {@link #BUFFER_FLAG_LAST_SAMPLE}, {@link #BUFFER_FLAG_ENCRYPTED} and {@link
|
||||||
* #BUFFER_FLAG_DECODE_ONLY}.
|
* #BUFFER_FLAG_DECODE_ONLY}.
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("deprecation") // Includes deprecated BUFFER_FLAG_DECODE_ONLY flag.
|
||||||
@UnstableApi
|
@UnstableApi
|
||||||
@Documented
|
@Documented
|
||||||
@Retention(RetentionPolicy.SOURCE)
|
@Retention(RetentionPolicy.SOURCE)
|
||||||
@ -654,8 +655,12 @@ public final class C {
|
|||||||
/** Indicates that a buffer is (at least partially) encrypted. */
|
/** Indicates that a buffer is (at least partially) encrypted. */
|
||||||
@UnstableApi public static final int BUFFER_FLAG_ENCRYPTED = 1 << 30; // 0x40000000
|
@UnstableApi public static final int BUFFER_FLAG_ENCRYPTED = 1 << 30; // 0x40000000
|
||||||
|
|
||||||
/** Indicates that a buffer should be decoded but not rendered. */
|
/**
|
||||||
@UnstableApi public static final int BUFFER_FLAG_DECODE_ONLY = 1 << 31; // 0x80000000
|
* @deprecated Renderers and decoders will check whether the buffer time is greater or equal to
|
||||||
|
* the desired start time without the need to set this flag. Custom decoders can mark other
|
||||||
|
* buffers with {@code DecoderOutputBuffer.shouldBeSkipped} if needed.
|
||||||
|
*/
|
||||||
|
@UnstableApi @Deprecated public static final int BUFFER_FLAG_DECODE_ONLY = 1 << 31; // 0x80000000
|
||||||
|
|
||||||
/** A realtime {@linkplain MediaFormat#KEY_PRIORITY codec priority}. */
|
/** A realtime {@linkplain MediaFormat#KEY_PRIORITY codec priority}. */
|
||||||
@UnstableApi public static final int MEDIA_CODEC_PRIORITY_REALTIME = 0;
|
@UnstableApi public static final int MEDIA_CODEC_PRIORITY_REALTIME = 0;
|
||||||
|
@ -31,7 +31,14 @@ public abstract class Buffer {
|
|||||||
flags = 0;
|
flags = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Returns whether the {@link C#BUFFER_FLAG_DECODE_ONLY} flag is set. */
|
/**
|
||||||
|
* @deprecated Check instead whether the buffer time is greater or equal to the desired start
|
||||||
|
* time. In custom renderers, the start time is {@code BaseRenderer.getLastResetPositionUs()}.
|
||||||
|
* In custom decoders, the check can be done with {@link
|
||||||
|
* SimpleDecoder#isAtLeastOutputStartTimeUs}.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
@SuppressWarnings("deprecation") // Checking deprecated flag.
|
||||||
public final boolean isDecodeOnly() {
|
public final boolean isDecodeOnly() {
|
||||||
return getFlag(C.BUFFER_FLAG_DECODE_ONLY);
|
return getFlag(C.BUFFER_FLAG_DECODE_ONLY);
|
||||||
}
|
}
|
||||||
|
@ -236,6 +236,9 @@ public abstract class SimpleDecoder<
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Setting and checking deprecated decode-only flag for compatibility with custom decoders that
|
||||||
|
// are still using it.
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
private boolean decode() throws InterruptedException {
|
private boolean decode() throws InterruptedException {
|
||||||
I inputBuffer;
|
I inputBuffer;
|
||||||
O outputBuffer;
|
O outputBuffer;
|
||||||
|
@ -348,9 +348,7 @@ public final class MidiExtractor implements Extractor, SeekMap {
|
|||||||
|
|
||||||
if (nextTimestampUs != C.TIME_UNSET && nextTimestampUs < seekTimeUs) {
|
if (nextTimestampUs != C.TIME_UNSET && nextTimestampUs < seekTimeUs) {
|
||||||
nextChunk.outputFrontSample(
|
nextChunk.outputFrontSample(
|
||||||
trackOutput,
|
trackOutput, C.BUFFER_FLAG_KEY_FRAME, /* skipNoteEvents= */ true);
|
||||||
C.BUFFER_FLAG_KEY_FRAME | C.BUFFER_FLAG_DECODE_ONLY,
|
|
||||||
/* skipNoteEvents= */ true);
|
|
||||||
nextChunk.populateFrontTrackEvent();
|
nextChunk.populateFrontTrackEvent();
|
||||||
trackPriorityQueue.add(nextChunk);
|
trackPriorityQueue.add(nextChunk);
|
||||||
}
|
}
|
||||||
|
@ -478,6 +478,8 @@ public abstract class DecoderAudioRenderer<
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Setting deprecated decode-only flag for compatibility with decoders that are still using it.
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
private boolean feedInputBuffer() throws DecoderException, ExoPlaybackException {
|
private boolean feedInputBuffer() throws DecoderException, ExoPlaybackException {
|
||||||
if (decoder == null
|
if (decoder == null
|
||||||
|| decoderReinitializationState == REINITIALIZATION_STATE_WAIT_END_OF_STREAM
|
|| decoderReinitializationState == REINITIALIZATION_STATE_WAIT_END_OF_STREAM
|
||||||
|
@ -228,8 +228,9 @@ public class SampleQueue implements TrackOutput {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the start time for the queue. Samples with earlier timestamps will be discarded or have
|
* Sets the start time for the queue. Samples with earlier timestamps will be discarded if
|
||||||
* the {@link C#BUFFER_FLAG_DECODE_ONLY} flag set when read.
|
* {@linkplain MimeTypes#allSamplesAreSyncSamples all samples are sync samples} in the given input
|
||||||
|
* format.
|
||||||
*
|
*
|
||||||
* @param startTimeUs The start time, in microseconds.
|
* @param startTimeUs The start time, in microseconds.
|
||||||
*/
|
*/
|
||||||
@ -692,7 +693,9 @@ public class SampleQueue implements TrackOutput {
|
|||||||
sampleDataQueue.rewind();
|
sampleDataQueue.rewind();
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("ReferenceEquality") // See comments in setUpstreamFormat
|
// Setting deprecated decode-only flag for compatibility with renderers that are still using it.
|
||||||
|
// See comments in setUpstreamFormat for reference equality warning.
|
||||||
|
@SuppressWarnings({"ReferenceEquality", "deprecation"})
|
||||||
private synchronized int peekSampleMetadata(
|
private synchronized int peekSampleMetadata(
|
||||||
FormatHolder formatHolder,
|
FormatHolder formatHolder,
|
||||||
DecoderInputBuffer buffer,
|
DecoderInputBuffer buffer,
|
||||||
|
@ -239,6 +239,8 @@ public final class TextRenderer extends BaseRenderer implements Callback {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Setting deprecated decode-only flag for compatibility with decoders that are still using it.
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
@Override
|
@Override
|
||||||
public void render(long positionUs, long elapsedRealtimeUs) {
|
public void render(long positionUs, long elapsedRealtimeUs) {
|
||||||
if (isCurrentStreamFinal()
|
if (isCurrentStreamFinal()
|
||||||
|
@ -739,6 +739,8 @@ public abstract class DecoderVideoRenderer extends BaseRenderer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Setting deprecated decode-only flag for compatibility with decoders that are still using it.
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
private boolean feedInputBuffer() throws DecoderException, ExoPlaybackException {
|
private boolean feedInputBuffer() throws DecoderException, ExoPlaybackException {
|
||||||
if (decoder == null
|
if (decoder == null
|
||||||
|| decoderReinitializationState == REINITIALIZATION_STATE_WAIT_END_OF_STREAM
|
|| decoderReinitializationState == REINITIALIZATION_STATE_WAIT_END_OF_STREAM
|
||||||
|
@ -70,7 +70,8 @@ public abstract class SimpleSubtitleDecoder
|
|||||||
return new SubtitleDecoderException("Unexpected decode error", error);
|
return new SubtitleDecoderException("Unexpected decode error", error);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("ByteBufferBackingArray")
|
// Clearing deprecated decode-only flag for compatibility with decoders that are still using it.
|
||||||
|
@SuppressWarnings({"ByteBufferBackingArray", "deprecation"})
|
||||||
@Override
|
@Override
|
||||||
@Nullable
|
@Nullable
|
||||||
protected final SubtitleDecoderException decode(
|
protected final SubtitleDecoderException decode(
|
||||||
|
@ -156,6 +156,8 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
|||||||
sampleDataStart = sampleStart + size;
|
sampleDataStart = sampleStart + size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Clearing deprecated decode-only flag for compatibility with decoders that are still using it.
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
private void outputSample(CuesWithTiming cuesWithTiming, long timeUs, int flags) {
|
private void outputSample(CuesWithTiming cuesWithTiming, long timeUs, int flags) {
|
||||||
checkStateNotNull(currentFormat); // format() must be called before sampleMetadata()
|
checkStateNotNull(currentFormat); // format() must be called before sampleMetadata()
|
||||||
byte[] cuesWithDurationBytes =
|
byte[] cuesWithDurationBytes =
|
||||||
|
@ -79,6 +79,8 @@ import java.util.PriorityQueue;
|
|||||||
return dequeuedInputBuffer;
|
return dequeuedInputBuffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Still using deprecated decoder-only flag until this decoder is replaced by a SubtitleParser.
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
@Override
|
@Override
|
||||||
public void queueInputBuffer(SubtitleInputBuffer inputBuffer) throws SubtitleDecoderException {
|
public void queueInputBuffer(SubtitleInputBuffer inputBuffer) throws SubtitleDecoderException {
|
||||||
Assertions.checkArgument(inputBuffer == dequeuedInputBuffer);
|
Assertions.checkArgument(inputBuffer == dequeuedInputBuffer);
|
||||||
|
@ -12,27 +12,27 @@ track 0:
|
|||||||
codecs = audio/midi
|
codecs = audio/midi
|
||||||
sample 0:
|
sample 0:
|
||||||
time = 0
|
time = 0
|
||||||
flags = -2147483647
|
flags = 1
|
||||||
data = length 3, hash 70FB
|
data = length 3, hash 70FB
|
||||||
sample 1:
|
sample 1:
|
||||||
time = 0
|
time = 0
|
||||||
flags = -2147483647
|
flags = 1
|
||||||
data = length 3, hash FFFF56B6
|
data = length 3, hash FFFF56B6
|
||||||
sample 2:
|
sample 2:
|
||||||
time = 0
|
time = 0
|
||||||
flags = -2147483647
|
flags = 1
|
||||||
data = length 7, hash C95FA238
|
data = length 7, hash C95FA238
|
||||||
sample 3:
|
sample 3:
|
||||||
time = 0
|
time = 0
|
||||||
flags = -2147483647
|
flags = 1
|
||||||
data = length 3, hash FFFF494C
|
data = length 3, hash FFFF494C
|
||||||
sample 4:
|
sample 4:
|
||||||
time = 0
|
time = 0
|
||||||
flags = -2147483647
|
flags = 1
|
||||||
data = length 6, hash 37A83E76
|
data = length 6, hash 37A83E76
|
||||||
sample 5:
|
sample 5:
|
||||||
time = 4999999
|
time = 4999999
|
||||||
flags = -2147483647
|
flags = 1
|
||||||
data = length 3, hash 8DE
|
data = length 3, hash 8DE
|
||||||
sample 6:
|
sample 6:
|
||||||
time = 5500000
|
time = 5500000
|
||||||
|
Loading…
x
Reference in New Issue
Block a user