summaryrefslogtreecommitdiff
path: root/avprobe.c
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2016-02-24 14:56:15 +0100
committerAnton Khirnov <anton@khirnov.net>2016-02-26 09:15:06 +0100
commitc9478410c68c04261f9cfcd80474607e50bd1852 (patch)
tree8765c0644f6df01ec68606416519a5c1edf00266 /avprobe.c
parentc80344d0101558098a6cd2ed5082ff5fda7ca18b (diff)
avprobe: add local per-file state
Do not pass just a bare AVFormatContext pointer around, wrap it in struct. This will be useful in the following commits.
Diffstat (limited to 'avprobe.c')
-rw-r--r--avprobe.c38
1 files changed, 23 insertions, 15 deletions
diff --git a/avprobe.c b/avprobe.c
index 1fdcd017cf..b395e93aba 100644
--- a/avprobe.c
+++ b/avprobe.c
@@ -32,6 +32,10 @@
#include "libavdevice/avdevice.h"
#include "cmdutils.h"
+typedef struct InputFile {
+ AVFormatContext *fmt_ctx;
+} InputFile;
+
const char program_name[] = "avprobe";
const int program_birth_year = 2007;
@@ -583,8 +587,9 @@ static void show_packet(AVFormatContext *fmt_ctx, AVPacket *pkt)
probe_object_footer("packet");
}
-static void show_packets(AVFormatContext *fmt_ctx)
+static void show_packets(InputFile *ifile)
{
+ AVFormatContext *fmt_ctx = ifile->fmt_ctx;
AVPacket pkt;
av_init_packet(&pkt);
@@ -596,8 +601,9 @@ static void show_packets(AVFormatContext *fmt_ctx)
probe_array_footer("packets", 0);
}
-static void show_stream(AVFormatContext *fmt_ctx, int stream_idx)
+static void show_stream(InputFile *ifile, int stream_idx)
{
+ AVFormatContext *fmt_ctx = ifile->fmt_ctx;
AVStream *stream = fmt_ctx->streams[stream_idx];
AVCodecContext *dec_ctx;
const AVCodecDescriptor *codec_desc;
@@ -726,8 +732,9 @@ static void show_stream(AVFormatContext *fmt_ctx, int stream_idx)
probe_object_footer("stream");
}
-static void show_format(AVFormatContext *fmt_ctx)
+static void show_format(InputFile *ifile)
{
+ AVFormatContext *fmt_ctx = ifile->fmt_ctx;
char val_str[128];
int64_t size = fmt_ctx->pb ? avio_size(fmt_ctx->pb) : -1;
@@ -755,7 +762,7 @@ static void show_format(AVFormatContext *fmt_ctx)
probe_object_footer("format");
}
-static int open_input_file(AVFormatContext **fmt_ctx_ptr, const char *filename)
+static int open_input_file(InputFile *ifile, const char *filename)
{
int err, i;
AVFormatContext *fmt_ctx = NULL;
@@ -798,14 +805,14 @@ static int open_input_file(AVFormatContext **fmt_ctx_ptr, const char *filename)
}
}
- *fmt_ctx_ptr = fmt_ctx;
+ ifile->fmt_ctx = fmt_ctx;
return 0;
}
-static void close_input_file(AVFormatContext **ctx_ptr)
+static void close_input_file(InputFile *ifile)
{
int i;
- AVFormatContext *fmt_ctx = *ctx_ptr;
+ AVFormatContext *fmt_ctx = ifile->fmt_ctx;
/* close decoder for each stream */
for (i = 0; i < fmt_ctx->nb_streams; i++) {
@@ -813,31 +820,32 @@ static void close_input_file(AVFormatContext **ctx_ptr)
avcodec_close(stream->codec);
}
- avformat_close_input(ctx_ptr);
+ avformat_close_input(&ifile->fmt_ctx);
}
static int probe_file(const char *filename)
{
- AVFormatContext *fmt_ctx;
+ InputFile ifile;
int ret, i;
- if ((ret = open_input_file(&fmt_ctx, filename)))
+ ret = open_input_file(&ifile, filename);
+ if (ret < 0)
return ret;
if (do_show_format)
- show_format(fmt_ctx);
+ show_format(&ifile);
if (do_show_streams) {
probe_array_header("streams", 0);
- for (i = 0; i < fmt_ctx->nb_streams; i++)
- show_stream(fmt_ctx, i);
+ for (i = 0; i < ifile.fmt_ctx->nb_streams; i++)
+ show_stream(&ifile, i);
probe_array_footer("streams", 0);
}
if (do_show_packets)
- show_packets(fmt_ctx);
+ show_packets(&ifile);
- close_input_file(&fmt_ctx);
+ close_input_file(&ifile);
return 0;
}