static const char unit_byte_str[] = "byte" ;
static const char unit_bit_per_second_str[] = "bit/s";
-void exit_program(int ret)
+static void exit_program(void)
{
av_dict_free(&fmt_entries_to_show);
- exit(ret);
}
/*
const AVCodec *dec;
const char *profile;
char val_str[128];
- AVRational display_aspect_ratio;
+ AVRational display_aspect_ratio, *sar = NULL;
+ const AVPixFmtDescriptor *desc;
probe_object_header("stream");
probe_int("width", dec_ctx->width);
probe_int("height", dec_ctx->height);
probe_int("has_b_frames", dec_ctx->has_b_frames);
- if (dec_ctx->sample_aspect_ratio.num) {
+ if (dec_ctx->sample_aspect_ratio.num)
+ sar = &dec_ctx->sample_aspect_ratio;
+ else if (stream->sample_aspect_ratio.num)
+ sar = &stream->sample_aspect_ratio;
+
+ if (sar) {
probe_str("sample_aspect_ratio",
- rational_string(val_str, sizeof(val_str), ":",
- &dec_ctx->sample_aspect_ratio));
+ rational_string(val_str, sizeof(val_str), ":", sar));
av_reduce(&display_aspect_ratio.num, &display_aspect_ratio.den,
- dec_ctx->width * dec_ctx->sample_aspect_ratio.num,
- dec_ctx->height * dec_ctx->sample_aspect_ratio.den,
+ dec_ctx->width * sar->num, dec_ctx->height * sar->den,
1024*1024);
probe_str("display_aspect_ratio",
rational_string(val_str, sizeof(val_str), ":",
&display_aspect_ratio));
}
- probe_str("pix_fmt",
- dec_ctx->pix_fmt != PIX_FMT_NONE ? av_pix_fmt_descriptors[dec_ctx->pix_fmt].name
- : "unknown");
+ desc = av_pix_fmt_desc_get(dec_ctx->pix_fmt);
+ probe_str("pix_fmt", desc ? desc->name : "unknown");
probe_int("level", dec_ctx->level);
break;
probe_str("avg_frame_rate",
rational_string(val_str, sizeof(val_str), "/",
&stream->avg_frame_rate));
+ if (dec_ctx->bit_rate)
+ probe_str("bit_rate",
+ value_string(val_str, sizeof(val_str),
+ dec_ctx->bit_rate, unit_bit_per_second_str));
probe_str("time_base",
rational_string(val_str, sizeof(val_str), "/",
&stream->time_base));
printf("\n");
}
-static int opt_format(const char *opt, const char *arg)
+static int opt_format(void *optctx, const char *opt, const char *arg)
{
iformat = av_find_input_format(arg);
if (!iformat) {
return 0;
}
-static int opt_output_format(const char *opt, const char *arg)
+static int opt_output_format(void *optctx, const char *opt, const char *arg)
{
if (!strcmp(arg, "json")) {
return 0;
}
-static int opt_show_format_entry(const char *opt, const char *arg)
+static int opt_show_format_entry(void *optctx, const char *opt, const char *arg)
{
do_show_format = 1;
nb_fmt_entries_to_show++;
show_help_children(avformat_get_class(), AV_OPT_FLAG_DECODING_PARAM);
}
-static int opt_pretty(const char *opt, const char *arg)
+static int opt_pretty(void *optctx, const char *opt, const char *arg)
{
show_value_unit = 1;
use_value_prefix = 1;
if (!buffer)
exit(1);
+ atexit(exit_program);
+
options = real_options;
parse_loglevel(argc, argv, options);
av_register_all();