Fix an issue where a keyframe was not skipped.

Keyframe was rendered rather than skipped when performing
an exact seek to a non-zero position close to the start of
the stream.

PiperOrigin-RevId: 284798460
This commit is contained in:
samrobinson 2019-12-10 18:29:59 +00:00 committed by Oliver Woodman
parent 272858f676
commit 65adcdaeb9
2 changed files with 6 additions and 1 deletions

View File

@ -101,6 +101,9 @@
* Fix Dolby Vision fallback to AVC and HEVC. * Fix Dolby Vision fallback to AVC and HEVC.
* Fix early end-of-stream detection when using video tunneling, on API level * Fix early end-of-stream detection when using video tunneling, on API level
23 and above. 23 and above.
* Fix an issue where a keyframe was rendered rather than skipped when
performing an exact seek to a non-zero position close to the start of the
stream.
* Audio: * Audio:
* Fix the start of audio getting truncated when transitioning to a new * Fix the start of audio getting truncated when transitioning to a new
item in a playlist of Opus streams. item in a playlist of Opus streams.

View File

@ -385,8 +385,8 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
@DrainAction private int codecDrainAction; @DrainAction private int codecDrainAction;
private boolean codecReceivedBuffers; private boolean codecReceivedBuffers;
private boolean codecReceivedEos; private boolean codecReceivedEos;
private long lastBufferInStreamPresentationTimeUs;
private long largestQueuedPresentationTimeUs; private long largestQueuedPresentationTimeUs;
private long lastBufferInStreamPresentationTimeUs;
private boolean inputStreamEnded; private boolean inputStreamEnded;
private boolean outputStreamEnded; private boolean outputStreamEnded;
private boolean waitingForKeys; private boolean waitingForKeys;
@ -1016,6 +1016,8 @@ public abstract class MediaCodecRenderer extends BaseRenderer {
codecReconfigurationState = RECONFIGURATION_STATE_NONE; codecReconfigurationState = RECONFIGURATION_STATE_NONE;
codecReceivedEos = false; codecReceivedEos = false;
codecReceivedBuffers = false; codecReceivedBuffers = false;
largestQueuedPresentationTimeUs = C.TIME_UNSET;
lastBufferInStreamPresentationTimeUs = C.TIME_UNSET;
codecDrainState = DRAIN_STATE_NONE; codecDrainState = DRAIN_STATE_NONE;
codecDrainAction = DRAIN_ACTION_NONE; codecDrainAction = DRAIN_ACTION_NONE;
codecNeedsAdaptationWorkaroundBuffer = false; codecNeedsAdaptationWorkaroundBuffer = false;