Commit 48fb5294 authored by Derek Buitenhuis's avatar Derek Buitenhuis

Merge commit '567d6d5f'

* commit '567d6d5f':
  avprobe: add local per-stream state
Merged-by: 's avatarDerek Buitenhuis <derek.buitenhuis@gmail.com>
parents 9d48aa6d 567d6d5f
...@@ -49,8 +49,15 @@ ...@@ -49,8 +49,15 @@
#include "libpostproc/postprocess.h" #include "libpostproc/postprocess.h"
#include "cmdutils.h" #include "cmdutils.h"
typedef struct InputStream {
AVStream *st;
} InputStream;
typedef struct InputFile { typedef struct InputFile {
AVFormatContext *fmt_ctx; AVFormatContext *fmt_ctx;
InputStream *streams;
int nb_streams;
} InputFile; } InputFile;
const char program_name[] = "ffprobe"; const char program_name[] = "ffprobe";
...@@ -2541,11 +2548,20 @@ static int open_input_file(InputFile *ifile, const char *filename) ...@@ -2541,11 +2548,20 @@ static int open_input_file(InputFile *ifile, const char *filename)
av_dump_format(fmt_ctx, 0, filename, 0); 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 */ /* bind a decoder to each input stream */
for (i = 0; i < fmt_ctx->nb_streams; i++) { for (i = 0; i < fmt_ctx->nb_streams; i++) {
InputStream *ist = &ifile->streams[i];
AVStream *stream = fmt_ctx->streams[i]; AVStream *stream = fmt_ctx->streams[i];
AVCodec *codec; AVCodec *codec;
ist->st = stream;
if (stream->codec->codec_id == AV_CODEC_ID_PROBE) { if (stream->codec->codec_id == AV_CODEC_ID_PROBE) {
av_log(NULL, AV_LOG_WARNING, av_log(NULL, AV_LOG_WARNING,
"Failed to probe codec for input stream %d\n", "Failed to probe codec for input stream %d\n",
...@@ -2583,6 +2599,9 @@ static void close_input_file(InputFile *ifile) ...@@ -2583,6 +2599,9 @@ static void close_input_file(InputFile *ifile)
if (fmt_ctx->streams[i]->codec->codec_id != AV_CODEC_ID_NONE) if (fmt_ctx->streams[i]->codec->codec_id != AV_CODEC_ID_NONE)
avcodec_close(fmt_ctx->streams[i]->codec); avcodec_close(fmt_ctx->streams[i]->codec);
av_freep(&ifile->streams);
ifile->nb_streams = 0;
avformat_close_input(&ifile->fmt_ctx); avformat_close_input(&ifile->fmt_ctx);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment