Message ID | 20170619210845.20641-1-jonas.licht@fem.tu-ilmenau.de |
---|---|
State | New |
Headers | show |
diff --git a/libavformat/mov.c b/libavformat/mov.c index 63f84be782..45d5f72aaf 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -6615,9 +6615,11 @@ static int mov_seek_stream(AVFormatContext *s, AVStream *st, int64_t timestamp, { MOVStreamContext *sc = st->priv_data; int sample, time_sample; - int i; + int i, ret; + + timestamp -= sc->time_offset; - int ret = mov_seek_fragment(s, st, timestamp); + ret = mov_seek_fragment(s, st, timestamp); if (ret < 0) return ret;
Subtract the calculated dts offset from the requested timestamp before seeking. This fixes an error "Error while filtering: Operation not permitted" observed with a short file which contains only one key frame and starts with negative timestamps. Then, av_index_search_timestamp() returns a valid negative timestamp, but mov_seek_stream bails out with AVERROR_INVALIDDATA. Fixes ticket #6139. Signed-off-by: Jonas Licht <jonas.licht@fem.tu-ilmenau.de> --- libavformat/mov.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)