From: Paul Brossier Date: Sun, 26 Feb 2017 22:37:01 +0000 (+0100) Subject: src/io/source_avcodec.c: avoid seeking in closed file X-Git-Tag: 0.4.5~94 X-Git-Url: https://git.aubio.org/?p=aubio.git;a=commitdiff_plain;h=41b44211e957254333d2d6d0eddf7c06d416ed7f src/io/source_avcodec.c: avoid seeking in closed file --- diff --git a/src/io/source_avcodec.c b/src/io/source_avcodec.c index eae1cfc5..4f9e25cd 100644 --- a/src/io/source_avcodec.c +++ b/src/io/source_avcodec.c @@ -477,10 +477,17 @@ uint_t aubio_source_avcodec_seek (aubio_source_avcodec_t * s, uint_t pos) { int64_t min_ts = MAX(resampled_pos - 2000, 0); int64_t max_ts = MIN(resampled_pos + 2000, INT64_MAX); int seek_flags = AVSEEK_FLAG_FRAME | AVSEEK_FLAG_ANY; - int ret = avformat_seek_file(s->avFormatCtx, s->selected_stream, + int ret = AUBIO_FAIL; + if (s->avFormatCtx != NULL && s->avr != NULL) { + ret = AUBIO_OK; + } else { + AUBIO_ERR("source_avcodec: failed seeking in %s (file not opened?)", s->path); + return ret; + } + ret = avformat_seek_file(s->avFormatCtx, s->selected_stream, min_ts, resampled_pos, max_ts, seek_flags); if (ret < 0) { - AUBIO_ERR("Failed seeking to %d in file %s", pos, s->path); + AUBIO_ERR("source_avcodec: failed seeking to %d in file %s", pos, s->path); } // reset read status s->eof = 0;