lavf/mxfdec: fix seeking before the first keyframe
Regression since 53f2ef2c4afb1d49a679dea9163cb0e4671f3117. Fixes ticket #5017. Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
parent
dd1d9b80c9
commit
97795ba6c3
@ -3193,6 +3193,16 @@ static int mxf_read_seek(AVFormatContext *s, int stream_index, int64_t sample_ti
|
|||||||
sample_time = FFMAX(sample_time, 0);
|
sample_time = FFMAX(sample_time, 0);
|
||||||
|
|
||||||
if (t->fake_index) {
|
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 */
|
/* 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)
|
if ((sample_time = ff_index_search_timestamp(t->fake_index, t->nb_ptses, sample_time, flags)) < 0)
|
||||||
return sample_time;
|
return sample_time;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user