ffmpeg | branch: master | Marton Balint <c...@passwd.hu> | Sat Nov 28 00:13:52 2015 +0100| [97795ba6c3a58fe1b72fedcf9c65c99fb0725b9c] | committer: Marton Balint
lavf/mxfdec: fix seeking before the first keyframe Regression since 53f2ef2c4afb1d49a679dea9163cb0e4671f3117. Fixes ticket #5017. Signed-off-by: Marton Balint <c...@passwd.hu> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=97795ba6c3a58fe1b72fedcf9c65c99fb0725b9c --- libavformat/mxfdec.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c index 0e055fd..f4222fc 100644 --- a/libavformat/mxfdec.c +++ b/libavformat/mxfdec.c @@ -3193,6 +3193,16 @@ static int mxf_read_seek(AVFormatContext *s, int stream_index, int64_t sample_ti sample_time = FFMAX(sample_time, 0); if (t->fake_index) { + /* The first frames may not be keyframes in presentation order, so + * we have to advance the target to be able to find the first + * keyframe backwards... */ + if (!(flags & AVSEEK_FLAG_ANY) && + (flags & AVSEEK_FLAG_BACKWARD) && + t->ptses[0] != AV_NOPTS_VALUE && + sample_time < t->ptses[0] && + (t->fake_index[t->ptses[0]].flags & AVINDEX_KEYFRAME)) + sample_time = t->ptses[0]; + /* behave as if we have a proper index */ if ((sample_time = ff_index_search_timestamp(t->fake_index, t->nb_ptses, sample_time, flags)) < 0) return sample_time; _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog