From bc1a18ee245ec2243d4b7b0fa22894f4326b3758 Mon Sep 17 00:00:00 2001 From: wm4 Date: Thu, 9 Apr 2020 11:27:38 +0200 Subject: options: cleanup .min use for OPT_CHANNELS Replace use of .min==1 with a proper flag. This is a good idea, because it has nothing to do with numeric limits (also see commit 9d32d62b61547 for how this can go wrong). With this, m_option.min/max are strictly used for numeric limits. --- options/m_option.c | 3 +-- options/m_option.h | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-) (limited to 'options') diff --git a/options/m_option.c b/options/m_option.c index aa1ac71ae6..51e3c38801 100644 --- a/options/m_option.c +++ b/options/m_option.c @@ -2493,8 +2493,7 @@ const m_option_type_t m_option_type_afmt = { static int parse_channels(struct mp_log *log, const m_option_t *opt, struct bstr name, struct bstr param, void *dst) { - // see OPT_CHANNELS for semantics. - bool limited = opt->min; + bool limited = opt->flags & M_OPT_CHANNELS_LIMITED; struct m_channels res = {0}; diff --git a/options/m_option.h b/options/m_option.h index 8a8b54b510..f51ca95fa8 100644 --- a/options/m_option.h +++ b/options/m_option.h @@ -372,7 +372,6 @@ struct m_option { // -/+INFINITY, the range can be extended to INFINITY. (This part is buggy // for "float".) // Preferably use M_RANGE() to set these fields. - // Some types will abuse the min or max field for unrelated things. double min, max; // Type dependent data (for all kinds of extended settings). @@ -432,6 +431,9 @@ char *format_file_size(int64_t size); // type time: string "no" maps to MP_NOPTS_VALUE (if unset, NOPTS is rejected) #define M_OPT_ALLOW_NO (1 << 26) +// type channels: disallow "auto" (still accept ""), limit list to at most 1 item. +#define M_OPT_CHANNELS_LIMITED (1 << 27) + // Like M_OPT_TYPE_OPTIONAL_PARAM. #define M_OPT_OPTIONAL_PARAM (1 << 30) @@ -655,8 +657,6 @@ extern const char m_option_path_separator; #define OPT_AUDIOFORMAT(field) \ OPT_TYPED_FIELD(m_option_type_afmt, int, field) -// If .min==1, then passing auto is disallowed, but "" is still accepted, and -// limit channel list to 1 item. #define OPT_CHANNELS(field) \ OPT_TYPED_FIELD(m_option_type_channels, struct m_channels, field) -- cgit v1.2.3