From f8ad440cf187c517b7800f3efdfc0954025c4422 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 26 Jun 2013 17:25:26 +0100 Subject: [PATCH] Try to fix seeking with FFmpeg. --- src/lib/ffmpeg_decoder.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/lib/ffmpeg_decoder.cc b/src/lib/ffmpeg_decoder.cc index 2d1792390..a3fdaf9b1 100644 --- a/src/lib/ffmpeg_decoder.cc +++ b/src/lib/ffmpeg_decoder.cc @@ -301,6 +301,7 @@ FFmpegDecoder::do_seek (VideoContent::Frame frame, bool backwards, bool accurate { int64_t const vt = frame * _ffmpeg_content->video_frame_rate() / av_q2d (_format_context->streams[_video_stream]->time_base); av_seek_frame (_format_context, _video_stream, vt, backwards ? AVSEEK_FLAG_BACKWARD : 0); + _video_position = frame; avcodec_flush_buffers (video_codec_context()); if (_subtitle_codec_context) { @@ -322,6 +323,8 @@ FFmpegDecoder::do_seek (VideoContent::Frame frame, bool backwards, bool accurate if (r >= 0 && finished) { int64_t const bet = av_frame_get_best_effort_timestamp (_frame); if (bet > vt) { + _video_position = (bet * av_q2d (_format_context->streams[_video_stream]->time_base) + _pts_offset) + * _ffmpeg_content->video_frame_rate(); break; } } @@ -330,8 +333,6 @@ FFmpegDecoder::do_seek (VideoContent::Frame frame, bool backwards, bool accurate av_free_packet (&_packet); } } - - return; } void -- 2.30.2