lavu/opt: factor out printing option default from opt_list()
This commit is contained in:
150
libavutil/opt.c
150
libavutil/opt.c
@@ -1276,6 +1276,83 @@ static void log_type(void *av_log_obj, const AVOption *o,
|
|||||||
av_log(av_log_obj, AV_LOG_INFO, "%-12s ", "");
|
av_log(av_log_obj, AV_LOG_INFO, "%-12s ", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void log_default(void *obj, void *av_log_obj, const AVOption *opt)
|
||||||
|
{
|
||||||
|
if (opt->type == AV_OPT_TYPE_CONST || opt->type == AV_OPT_TYPE_BINARY)
|
||||||
|
return;
|
||||||
|
if ((opt->type == AV_OPT_TYPE_COLOR ||
|
||||||
|
opt->type == AV_OPT_TYPE_IMAGE_SIZE ||
|
||||||
|
opt->type == AV_OPT_TYPE_STRING ||
|
||||||
|
opt->type == AV_OPT_TYPE_DICT ||
|
||||||
|
opt->type == AV_OPT_TYPE_CHLAYOUT ||
|
||||||
|
opt->type == AV_OPT_TYPE_VIDEO_RATE) &&
|
||||||
|
!opt->default_val.str)
|
||||||
|
return;
|
||||||
|
|
||||||
|
av_log(av_log_obj, AV_LOG_INFO, " (default ");
|
||||||
|
switch (opt->type) {
|
||||||
|
case AV_OPT_TYPE_BOOL:
|
||||||
|
av_log(av_log_obj, AV_LOG_INFO, "%s", (char *)av_x_if_null(get_bool_name(opt->default_val.i64), "invalid"));
|
||||||
|
break;
|
||||||
|
case AV_OPT_TYPE_FLAGS: {
|
||||||
|
char *def_flags = get_opt_flags_string(obj, opt->unit, opt->default_val.i64);
|
||||||
|
if (def_flags) {
|
||||||
|
av_log(av_log_obj, AV_LOG_INFO, "%s", def_flags);
|
||||||
|
av_freep(&def_flags);
|
||||||
|
} else {
|
||||||
|
av_log(av_log_obj, AV_LOG_INFO, "%"PRIX64, opt->default_val.i64);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case AV_OPT_TYPE_DURATION: {
|
||||||
|
char buf[25];
|
||||||
|
format_duration(buf, sizeof(buf), opt->default_val.i64);
|
||||||
|
av_log(av_log_obj, AV_LOG_INFO, "%s", buf);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case AV_OPT_TYPE_INT:
|
||||||
|
case AV_OPT_TYPE_UINT64:
|
||||||
|
case AV_OPT_TYPE_INT64: {
|
||||||
|
const char *def_const = get_opt_const_name(obj, opt->unit, opt->default_val.i64);
|
||||||
|
if (def_const)
|
||||||
|
av_log(av_log_obj, AV_LOG_INFO, "%s", def_const);
|
||||||
|
else
|
||||||
|
log_int_value(av_log_obj, AV_LOG_INFO, opt->default_val.i64);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case AV_OPT_TYPE_DOUBLE:
|
||||||
|
case AV_OPT_TYPE_FLOAT:
|
||||||
|
log_value(av_log_obj, AV_LOG_INFO, opt->default_val.dbl);
|
||||||
|
break;
|
||||||
|
case AV_OPT_TYPE_RATIONAL: {
|
||||||
|
AVRational q = av_d2q(opt->default_val.dbl, INT_MAX);
|
||||||
|
av_log(av_log_obj, AV_LOG_INFO, "%d/%d", q.num, q.den); }
|
||||||
|
break;
|
||||||
|
case AV_OPT_TYPE_PIXEL_FMT:
|
||||||
|
av_log(av_log_obj, AV_LOG_INFO, "%s", (char *)av_x_if_null(av_get_pix_fmt_name(opt->default_val.i64), "none"));
|
||||||
|
break;
|
||||||
|
case AV_OPT_TYPE_SAMPLE_FMT:
|
||||||
|
av_log(av_log_obj, AV_LOG_INFO, "%s", (char *)av_x_if_null(av_get_sample_fmt_name(opt->default_val.i64), "none"));
|
||||||
|
break;
|
||||||
|
case AV_OPT_TYPE_COLOR:
|
||||||
|
case AV_OPT_TYPE_IMAGE_SIZE:
|
||||||
|
case AV_OPT_TYPE_STRING:
|
||||||
|
case AV_OPT_TYPE_DICT:
|
||||||
|
case AV_OPT_TYPE_VIDEO_RATE:
|
||||||
|
case AV_OPT_TYPE_CHLAYOUT:
|
||||||
|
av_log(av_log_obj, AV_LOG_INFO, "\"%s\"", opt->default_val.str);
|
||||||
|
break;
|
||||||
|
#if FF_API_OLD_CHANNEL_LAYOUT
|
||||||
|
FF_DISABLE_DEPRECATION_WARNINGS
|
||||||
|
case AV_OPT_TYPE_CHANNEL_LAYOUT:
|
||||||
|
av_log(av_log_obj, AV_LOG_INFO, "0x%"PRIx64, opt->default_val.i64);
|
||||||
|
break;
|
||||||
|
FF_ENABLE_DEPRECATION_WARNINGS
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
av_log(av_log_obj, AV_LOG_INFO, ")");
|
||||||
|
}
|
||||||
|
|
||||||
static void opt_list(void *obj, void *av_log_obj, const char *unit,
|
static void opt_list(void *obj, void *av_log_obj, const char *unit,
|
||||||
int req_flags, int rej_flags, enum AVOptionType parent_type)
|
int req_flags, int rej_flags, enum AVOptionType parent_type)
|
||||||
{
|
{
|
||||||
@@ -1342,78 +1419,7 @@ static void opt_list(void *obj, void *av_log_obj, const char *unit,
|
|||||||
av_opt_freep_ranges(&r);
|
av_opt_freep_ranges(&r);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (opt->type != AV_OPT_TYPE_CONST &&
|
log_default(obj, av_log_obj, opt);
|
||||||
opt->type != AV_OPT_TYPE_BINARY &&
|
|
||||||
!((opt->type == AV_OPT_TYPE_COLOR ||
|
|
||||||
opt->type == AV_OPT_TYPE_IMAGE_SIZE ||
|
|
||||||
opt->type == AV_OPT_TYPE_STRING ||
|
|
||||||
opt->type == AV_OPT_TYPE_DICT ||
|
|
||||||
opt->type == AV_OPT_TYPE_CHLAYOUT ||
|
|
||||||
opt->type == AV_OPT_TYPE_VIDEO_RATE) &&
|
|
||||||
!opt->default_val.str)) {
|
|
||||||
av_log(av_log_obj, AV_LOG_INFO, " (default ");
|
|
||||||
switch (opt->type) {
|
|
||||||
case AV_OPT_TYPE_BOOL:
|
|
||||||
av_log(av_log_obj, AV_LOG_INFO, "%s", (char *)av_x_if_null(get_bool_name(opt->default_val.i64), "invalid"));
|
|
||||||
break;
|
|
||||||
case AV_OPT_TYPE_FLAGS: {
|
|
||||||
char *def_flags = get_opt_flags_string(obj, opt->unit, opt->default_val.i64);
|
|
||||||
if (def_flags) {
|
|
||||||
av_log(av_log_obj, AV_LOG_INFO, "%s", def_flags);
|
|
||||||
av_freep(&def_flags);
|
|
||||||
} else {
|
|
||||||
av_log(av_log_obj, AV_LOG_INFO, "%"PRIX64, opt->default_val.i64);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case AV_OPT_TYPE_DURATION: {
|
|
||||||
char buf[25];
|
|
||||||
format_duration(buf, sizeof(buf), opt->default_val.i64);
|
|
||||||
av_log(av_log_obj, AV_LOG_INFO, "%s", buf);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case AV_OPT_TYPE_INT:
|
|
||||||
case AV_OPT_TYPE_UINT64:
|
|
||||||
case AV_OPT_TYPE_INT64: {
|
|
||||||
const char *def_const = get_opt_const_name(obj, opt->unit, opt->default_val.i64);
|
|
||||||
if (def_const)
|
|
||||||
av_log(av_log_obj, AV_LOG_INFO, "%s", def_const);
|
|
||||||
else
|
|
||||||
log_int_value(av_log_obj, AV_LOG_INFO, opt->default_val.i64);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case AV_OPT_TYPE_DOUBLE:
|
|
||||||
case AV_OPT_TYPE_FLOAT:
|
|
||||||
log_value(av_log_obj, AV_LOG_INFO, opt->default_val.dbl);
|
|
||||||
break;
|
|
||||||
case AV_OPT_TYPE_RATIONAL: {
|
|
||||||
AVRational q = av_d2q(opt->default_val.dbl, INT_MAX);
|
|
||||||
av_log(av_log_obj, AV_LOG_INFO, "%d/%d", q.num, q.den); }
|
|
||||||
break;
|
|
||||||
case AV_OPT_TYPE_PIXEL_FMT:
|
|
||||||
av_log(av_log_obj, AV_LOG_INFO, "%s", (char *)av_x_if_null(av_get_pix_fmt_name(opt->default_val.i64), "none"));
|
|
||||||
break;
|
|
||||||
case AV_OPT_TYPE_SAMPLE_FMT:
|
|
||||||
av_log(av_log_obj, AV_LOG_INFO, "%s", (char *)av_x_if_null(av_get_sample_fmt_name(opt->default_val.i64), "none"));
|
|
||||||
break;
|
|
||||||
case AV_OPT_TYPE_COLOR:
|
|
||||||
case AV_OPT_TYPE_IMAGE_SIZE:
|
|
||||||
case AV_OPT_TYPE_STRING:
|
|
||||||
case AV_OPT_TYPE_DICT:
|
|
||||||
case AV_OPT_TYPE_VIDEO_RATE:
|
|
||||||
case AV_OPT_TYPE_CHLAYOUT:
|
|
||||||
av_log(av_log_obj, AV_LOG_INFO, "\"%s\"", opt->default_val.str);
|
|
||||||
break;
|
|
||||||
#if FF_API_OLD_CHANNEL_LAYOUT
|
|
||||||
FF_DISABLE_DEPRECATION_WARNINGS
|
|
||||||
case AV_OPT_TYPE_CHANNEL_LAYOUT:
|
|
||||||
av_log(av_log_obj, AV_LOG_INFO, "0x%"PRIx64, opt->default_val.i64);
|
|
||||||
break;
|
|
||||||
FF_ENABLE_DEPRECATION_WARNINGS
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
av_log(av_log_obj, AV_LOG_INFO, ")");
|
|
||||||
}
|
|
||||||
|
|
||||||
av_log(av_log_obj, AV_LOG_INFO, "\n");
|
av_log(av_log_obj, AV_LOG_INFO, "\n");
|
||||||
if (opt->unit && opt->type != AV_OPT_TYPE_CONST)
|
if (opt->unit && opt->type != AV_OPT_TYPE_CONST)
|
||||||
|
Reference in New Issue
Block a user