X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=ffprobe.c;h=696307d8e3034d41385b43a5e6185d17a24e7cac;hb=7b915726ebeab8ce4125dacb4afa79f04913a6fe;hp=311580df25b45f656a90dfde5010bcc265a07f87;hpb=530bbe96c7ccd1716342c1eea0e30109f8eab0d4;p=ffmpeg diff --git a/ffprobe.c b/ffprobe.c index 311580df25b..696307d8e30 100644 --- a/ffprobe.c +++ b/ffprobe.c @@ -1,5 +1,5 @@ /* - * FFprobe : Simple Media Prober based on the FFmpeg libraries + * ffprobe : Simple Media Prober based on the FFmpeg libraries * Copyright (c) 2007-2010 Stefano Sabatini * * This file is part of FFmpeg. @@ -23,19 +23,18 @@ #include "libavformat/avformat.h" #include "libavcodec/avcodec.h" -#include "libavcodec/opt.h" +#include "libavutil/opt.h" #include "libavutil/pixdesc.h" #include "libavdevice/avdevice.h" #include "cmdutils.h" -const char program_name[] = "FFprobe"; +const char program_name[] = "ffprobe"; const int program_birth_year = 2007; static int do_show_format = 0; static int do_show_packets = 0; static int do_show_streams = 0; -static int convert_tags = 0; static int show_value_unit = 0; static int use_value_prefix = 0; static int use_byte_value_binary_prefix = 0; @@ -220,8 +219,6 @@ static void show_stream(AVFormatContext *fmt_ctx, int stream_idx) printf("r_frame_rate=%d/%d\n", stream->r_frame_rate.num, stream->r_frame_rate.den); printf("avg_frame_rate=%d/%d\n", stream->avg_frame_rate.num, stream->avg_frame_rate.den); printf("time_base=%d/%d\n", stream->time_base.num, stream->time_base.den); - if (stream->language[0]) - printf("language=%s\n", stream->language); printf("start_time=%s\n", time_value_string(val_str, sizeof(val_str), stream->start_time, &stream->time_base)); printf("duration=%s\n", time_value_string(val_str, sizeof(val_str), stream->duration, @@ -255,8 +252,6 @@ static void show_format(AVFormatContext *fmt_ctx) printf("bit_rate=%s\n", value_string(val_str, sizeof(val_str), fmt_ctx->bit_rate, unit_bit_per_second_str)); - if (convert_tags) - av_metadata_conv(fmt_ctx, NULL, fmt_ctx->iformat->metadata_conv); while ((tag = av_metadata_get(fmt_ctx->metadata, "", tag, AV_METADATA_IGNORE_SUFFIX))) printf("TAG:%s=%s\n", tag->key, tag->value); @@ -266,11 +261,15 @@ static void show_format(AVFormatContext *fmt_ctx) static int open_input_file(AVFormatContext **fmt_ctx_ptr, const char *filename) { int err, i; + AVFormatParameters fmt_params; AVFormatContext *fmt_ctx; + memset(&fmt_params, 0, sizeof(fmt_params)); + fmt_params.prealloced_context = 1; fmt_ctx = avformat_alloc_context(); + set_context_opts(fmt_ctx, avformat_opts, AV_OPT_FLAG_DECODING_PARAM, NULL); - if ((err = av_open_input_file(&fmt_ctx, filename, iformat, 0, NULL)) < 0) { + if ((err = av_open_input_file(&fmt_ctx, filename, iformat, 0, &fmt_params)) < 0) { print_error(filename, err); return err; } @@ -281,7 +280,7 @@ static int open_input_file(AVFormatContext **fmt_ctx_ptr, const char *filename) return err; } - dump_format(fmt_ctx, 0, filename, 0); + av_dump_format(fmt_ctx, 0, filename, 0); /* bind a decoder to each input stream */ for (i = 0; i < fmt_ctx->nb_streams; i++) { @@ -289,7 +288,7 @@ static int open_input_file(AVFormatContext **fmt_ctx_ptr, const char *filename) AVCodec *codec; if (!(codec = avcodec_find_decoder(stream->codec->codec_id))) { - fprintf(stderr, "Unsupported codec (id=%d) for input stream %d\n", + fprintf(stderr, "Unsupported codec with id %d for input stream %d\n", stream->codec->codec_id, stream->index); } else if (avcodec_open(stream->codec, codec) < 0) { fprintf(stderr, "Error while opening codec for input stream %d\n", @@ -353,9 +352,12 @@ static void opt_input_file(const char *arg) static void show_help(void) { + av_log_set_callback(log_callback_help); show_usage(); show_help_options(options, "Main options:\n", 0, 0); printf("\n"); + av_opt_show2(avformat_opts, NULL, + AV_OPT_FLAG_DECODING_PARAM, 0); } static void opt_pretty(void) @@ -368,7 +370,6 @@ static void opt_pretty(void) static const OptionDef options[] = { #include "cmdutils_common_opts.h" - { "convert_tags", OPT_BOOL, {(void*)&convert_tags}, "convert tag names to the FFmpeg generic tag names" }, { "f", HAS_ARG, {(void*)opt_format}, "force format", "format" }, { "unit", OPT_BOOL, {(void*)&show_value_unit}, "show unit of the displayed values" }, { "prefix", OPT_BOOL, {(void*)&use_value_prefix}, "use SI prefixes for the displayed values" }, @@ -381,16 +382,21 @@ static const OptionDef options[] = { { "show_format", OPT_BOOL, {(void*)&do_show_format} , "show format/container info" }, { "show_packets", OPT_BOOL, {(void*)&do_show_packets}, "show packets info" }, { "show_streams", OPT_BOOL, {(void*)&do_show_streams}, "show streams info" }, + { "default", OPT_FUNC2 | HAS_ARG | OPT_AUDIO | OPT_VIDEO | OPT_EXPERT, {(void*)opt_default}, "generic catch all option", "" }, { NULL, }, }; int main(int argc, char **argv) { + int ret; + av_register_all(); #if CONFIG_AVDEVICE avdevice_register_all(); #endif + avformat_opts = avformat_alloc_context(); + show_banner(); parse_options(argc, argv, options, opt_input_file); @@ -401,5 +407,9 @@ int main(int argc, char **argv) exit(1); } - return probe_file(input_filename); + ret = probe_file(input_filename); + + av_free(avformat_opts); + + return ret; }