avprobe: add local per-stream state

This will be useful in the following commits.
pull/200/head
Anton Khirnov 9 years ago
parent c9478410c6
commit 567d6d5f9d
  1. 20
      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);
}

Loading…
Cancel
Save