X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fmlvdec.c;h=aa1ba60d37e079c72cb1c00bd6feafc42add4924;hb=beecbe13a2ea49280554a7178bebc525e538b4e7;hp=9d821bb7b3416be3a9257274b8efcd49e49667cc;hpb=7ad528cf23da5479c7cbf4676d071a07a709d8b6;p=ffmpeg diff --git a/libavformat/mlvdec.c b/libavformat/mlvdec.c index 9d821bb7b34..aa1ba60d37e 100644 --- a/libavformat/mlvdec.c +++ b/libavformat/mlvdec.c @@ -28,6 +28,7 @@ #include "libavutil/intreadwrite.h" #include "libavutil/rational.h" #include "avformat.h" +#include "avio_internal.h" #include "internal.h" #include "riff.h" @@ -331,11 +332,17 @@ static int read_header(AVFormatContext *avctx) if (strlen(avctx->filename) > 2) { int i; char *filename = av_strdup(avctx->filename); + AVOpenCallback open_func = avctx->open_cb; + if (!filename) return AVERROR(ENOMEM); + + if (!open_func) + open_func = ffio_open2_wrapper; + for (i = 0; i < 100; i++) { snprintf(filename + strlen(filename) - 2, 3, "%02d", i); - if (avio_open2(&mlv->pb[i], filename, AVIO_FLAG_READ, &avctx->interrupt_callback, NULL) < 0) + if (open_func(avctx, &mlv->pb[i], filename, AVIO_FLAG_READ, &avctx->interrupt_callback, NULL) < 0) break; if (check_file_header(mlv->pb[i], guid) < 0) { av_log(avctx, AV_LOG_WARNING, "ignoring %s; bad format or guid mismatch\n", filename);