summaryrefslogtreecommitdiff
path: root/src/lib/ffmpeg_decoder.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2015-01-30 22:08:08 +0000
committerCarl Hetherington <cth@carlh.net>2015-01-30 22:08:08 +0000
commite520faf63aa7c4446e6e6477553824645d2b1f47 (patch)
tree8ed5bdd27545bd32d234e1e411a33bfedbd2273b /src/lib/ffmpeg_decoder.cc
parent93c77af137962d9a03703ed214adf576ed9228a6 (diff)
Remove the code, on seeking, to seek to the requested timestamp
in the audio stream if it is lower than that for the video stream. The FFmpeg docs don't support it, AFAICS, as they suggest that the the seek should be in the timebase of the specified stream. It also causes problems with the "preview" test when seeking inaccurately in the viewer.
Diffstat (limited to 'src/lib/ffmpeg_decoder.cc')
-rw-r--r--src/lib/ffmpeg_decoder.cc12
1 files changed, 2 insertions, 10 deletions
diff --git a/src/lib/ffmpeg_decoder.cc b/src/lib/ffmpeg_decoder.cc
index 7c846349f..bd01b280b 100644
--- a/src/lib/ffmpeg_decoder.cc
+++ b/src/lib/ffmpeg_decoder.cc
@@ -301,7 +301,7 @@ FFmpegDecoder::seek (ContentTime time, bool accurate)
{
VideoDecoder::seek (time, accurate);
AudioDecoder::seek (time, accurate);
-
+
/* If we are doing an `accurate' seek, we need to use pre-roll, as
we don't really know what the seek will give us.
*/
@@ -314,15 +314,7 @@ FFmpegDecoder::seek (ContentTime time, bool accurate)
*/
ContentTime const u = time - _pts_offset;
- int64_t s = u.seconds() / av_q2d (_format_context->streams[_video_stream]->time_base);
-
- if (_ffmpeg_content->audio_stream ()) {
- s = min (
- s, int64_t (u.seconds() / av_q2d (_ffmpeg_content->audio_stream()->stream(_format_context)->time_base))
- );
- }
-
- av_seek_frame (_format_context, _video_stream, s, 0);
+ av_seek_frame (_format_context, _video_stream, u.seconds() / av_q2d (_format_context->streams[_video_stream]->time_base), 0);
avcodec_flush_buffers (video_codec_context());
if (audio_codec_context ()) {