Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 1 addition & 7 deletions src/core/videosource.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -908,11 +908,6 @@ bool FFMS_VideoSource::SeekTo(int n, int SeekOffset) {

// The semantics here are basically "return true if we don't know exactly where our seek ended up (destination isn't frame 0)"
if (SeekMode >= 0) {
int TargetFrame = n + SeekOffset;
if (TargetFrame < 0)
throw FFMS_Exception(FFMS_ERROR_SEEKING, FFMS_ERROR_UNKNOWN,
"Frame accurate seeking is not possible in this file");

// Seeking too close to the end of the stream can result in a different decoder delay since
// frames are returned as soon as draining starts, so avoid this to keep the delay predictable.
// Is the +1 necessary here? Not sure, but let's keep it to be safe.
Expand All @@ -923,7 +918,7 @@ bool FFMS_VideoSource::SeekTo(int n, int SeekOffset) {
// close to the end in open-gop files: https://trac.ffmpeg.org/ticket/10936
EndOfStreamDist *= 2;

TargetFrame = std::min(TargetFrame, Frames.RealFrameNumber(std::max(0, VP.NumFrames - 1 - EndOfStreamDist)));
int TargetFrame = std::min(std::max(0, n + SeekOffset), Frames.RealFrameNumber(std::max(0, VP.NumFrames - 1 - EndOfStreamDist)));

if (SeekMode < 3)
TargetFrame = Frames.FindClosestVideoKeyFrame(TargetFrame);
Expand Down Expand Up @@ -997,7 +992,6 @@ FFMS_Frame *FFMS_VideoSource::GetFrame(int n) {
// Is the seek destination time known? Does it belong to a frame?
if (CurrentFrame < 0) {
if (SeekMode == 1 || StartTime < 0) {
// No idea where we are so go back a bit further
SeekOffset -= 10;
Seek = true;
continue;
Expand Down
Loading