diff options
| author | Carl Hetherington <cth@carlh.net> | 2013-12-22 01:20:39 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2013-12-22 01:20:39 +0000 |
| commit | e1df859a04d65acaceb032fdb53a6408b84bd972 (patch) | |
| tree | f82fcb0368571ea9a1715a0df0a046261fb7d042 /src/lib/ffmpeg_decoder.cc | |
| parent | 7d67f4a38bf7de1b901facf5390a730d307de671 (diff) | |
Various test / seek fixes.
Diffstat (limited to 'src/lib/ffmpeg_decoder.cc')
| -rw-r--r-- | src/lib/ffmpeg_decoder.cc | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/lib/ffmpeg_decoder.cc b/src/lib/ffmpeg_decoder.cc index 80c3d9906..c6e4217b6 100644 --- a/src/lib/ffmpeg_decoder.cc +++ b/src/lib/ffmpeg_decoder.cc @@ -367,13 +367,19 @@ FFmpegDecoder::seek_final_finished (int n, int done) const void FFmpegDecoder::seek_and_flush (ContentTime t) { - int64_t const initial_v = ((double (t) / TIME_HZ) - _video_pts_offset) / + int64_t s = ((double (t) / TIME_HZ) - _video_pts_offset) / av_q2d (_format_context->streams[_video_stream]->time_base); - int64_t const initial_a = ((double (t) / TIME_HZ) - _audio_pts_offset) / - av_q2d (_ffmpeg_content->audio_stream()->stream(_format_context)->time_base); + if (_ffmpeg_content->audio_stream ()) { + s = min ( + s, int64_t ( + ((double (t) / TIME_HZ) - _audio_pts_offset) / + av_q2d (_ffmpeg_content->audio_stream()->stream(_format_context)->time_base) + ) + ); + } - av_seek_frame (_format_context, _video_stream, min (initial_v, initial_a), AVSEEK_FLAG_BACKWARD); + av_seek_frame (_format_context, _video_stream, s, AVSEEK_FLAG_BACKWARD); avcodec_flush_buffers (video_codec_context()); if (audio_codec_context ()) { |
