From 567d6d5f9d1400f00445183b3477391f58979aa3 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Wed, 24 Feb 2016 15:02:48 +0100 Subject: avprobe: add local per-stream state This will be useful in the following commits. --- avprobe.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'avprobe.c') diff --git a/avprobe.c b/avprobe.c index b395e93aba..189574f85b 100644 --- a/avprobe.c +++ b/avprobe.c @@ -32,8 +32,15 @@ #include "libavdevice/avdevice.h" #include "cmdutils.h" +typedef struct InputStream { + AVStream *st; +} InputStream; + typedef struct InputFile { AVFormatContext *fmt_ctx; + + InputStream *streams; + int nb_streams; } InputFile; const char program_name[] = "avprobe"; @@ -787,11 +794,20 @@ static int open_input_file(InputFile *ifile, const char *filename) av_dump_format(fmt_ctx, 0, filename, 0); + ifile->streams = av_mallocz_array(fmt_ctx->nb_streams, + sizeof(*ifile->streams)); + if (!ifile->streams) + exit(1); + ifile->nb_streams = fmt_ctx->nb_streams; + /* bind a decoder to each input stream */ for (i = 0; i < fmt_ctx->nb_streams; i++) { + InputStream *ist = &ifile->streams[i]; AVStream *stream = fmt_ctx->streams[i]; AVCodec *codec; + ist->st = stream; + if (stream->codec->codec_id == AV_CODEC_ID_PROBE) { fprintf(stderr, "Failed to probe codec for input stream %d\n", stream->index); @@ -820,6 +836,10 @@ static void close_input_file(InputFile *ifile) avcodec_close(stream->codec); } + + av_freep(&ifile->streams); + ifile->nb_streams = 0; + avformat_close_input(&ifile->fmt_ctx); } -- cgit v1.2.3