Update the TransformerMediaClock trackTime before deducting the offset.

#minor-release

PiperOrigin-RevId: 407086818
This commit is contained in:
samrobinson 2021-11-02 15:18:29 +00:00 committed by Ian Baker
parent 8b34d160dc
commit 04efc03d4b
4 changed files with 4 additions and 5 deletions

View File

@ -279,8 +279,8 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
int result = readSource(getFormatHolder(), decoderInputBuffer, /* readFlags= */ 0); int result = readSource(getFormatHolder(), decoderInputBuffer, /* readFlags= */ 0);
switch (result) { switch (result) {
case C.RESULT_BUFFER_READ: case C.RESULT_BUFFER_READ:
decoderInputBuffer.timeUs -= streamOffsetUs;
mediaClock.updateTimeForTrackType(getTrackType(), decoderInputBuffer.timeUs); mediaClock.updateTimeForTrackType(getTrackType(), decoderInputBuffer.timeUs);
decoderInputBuffer.timeUs -= streamOffsetUs;
decoderInputBuffer.flip(); decoderInputBuffer.flip();
decoder.queueInputBuffer(decoderInputBuffer); decoder.queueInputBuffer(decoderInputBuffer);
return !decoderInputBuffer.isEndOfStream(); return !decoderInputBuffer.isEndOfStream();

View File

@ -48,8 +48,7 @@ import androidx.media3.exoplayer.RendererCapabilities;
} }
@Override @Override
protected void onStreamChanged(Format[] formats, long startPositionUs, long offsetUs) protected void onStreamChanged(Format[] formats, long startPositionUs, long offsetUs) {
throws ExoPlaybackException {
this.streamOffsetUs = offsetUs; this.streamOffsetUs = offsetUs;
} }

View File

@ -117,8 +117,8 @@ import java.nio.ByteBuffer;
muxerWrapper.endTrack(getTrackType()); muxerWrapper.endTrack(getTrackType());
return false; return false;
} }
buffer.timeUs -= streamOffsetUs;
mediaClock.updateTimeForTrackType(getTrackType(), buffer.timeUs); mediaClock.updateTimeForTrackType(getTrackType(), buffer.timeUs);
buffer.timeUs -= streamOffsetUs;
ByteBuffer data = checkNotNull(buffer.data); ByteBuffer data = checkNotNull(buffer.data);
data.flip(); data.flip();
if (sampleTransformer != null) { if (sampleTransformer != null) {

View File

@ -320,8 +320,8 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
case C.RESULT_FORMAT_READ: case C.RESULT_FORMAT_READ:
throw new IllegalStateException("Format changes are not supported."); throw new IllegalStateException("Format changes are not supported.");
case C.RESULT_BUFFER_READ: case C.RESULT_BUFFER_READ:
decoderInputBuffer.timeUs -= streamOffsetUs;
mediaClock.updateTimeForTrackType(getTrackType(), decoderInputBuffer.timeUs); mediaClock.updateTimeForTrackType(getTrackType(), decoderInputBuffer.timeUs);
decoderInputBuffer.timeUs -= streamOffsetUs;
ByteBuffer data = checkNotNull(decoderInputBuffer.data); ByteBuffer data = checkNotNull(decoderInputBuffer.data);
data.flip(); data.flip();
decoder.queueInputBuffer(decoderInputBuffer); decoder.queueInputBuffer(decoderInputBuffer);