mirror of https://github.com/mpv-player/mpv
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 9d32d62b61
for how this can go wrong).
With this, m_option.min/max are strictly used for numeric limits.
This commit is contained in:
parent
823e5205ea
commit
bc1a18ee24
|
@ -130,9 +130,11 @@ const struct mp_user_filter_entry af_format = {
|
|||
.options = (const struct m_option[]) {
|
||||
{"format", OPT_AUDIOFORMAT(in_format)},
|
||||
{"srate", OPT_INT(in_srate), M_RANGE(1000, 8*48000)},
|
||||
{"channels", OPT_CHANNELS(in_channels), .min = 1},
|
||||
{"channels", OPT_CHANNELS(in_channels),
|
||||
.flags = M_OPT_CHANNELS_LIMITED},
|
||||
{"out-srate", OPT_INT(out_srate), M_RANGE(1000, 8*48000)},
|
||||
{"out-channels", OPT_CHANNELS(out_channels), .min = 1},
|
||||
{"out-channels", OPT_CHANNELS(out_channels),
|
||||
.flags = M_OPT_CHANNELS_LIMITED},
|
||||
{"fail", OPT_FLAG(fail)},
|
||||
{0}
|
||||
},
|
||||
|
|
|
@ -54,7 +54,7 @@ struct demux_rawaudio_opts {
|
|||
#define OPT_BASE_STRUCT struct demux_rawaudio_opts
|
||||
const struct m_sub_options demux_rawaudio_conf = {
|
||||
.opts = (const m_option_t[]) {
|
||||
{"channels", OPT_CHANNELS(channels), .min = 1},
|
||||
{"channels", OPT_CHANNELS(channels), .flags = M_OPT_CHANNELS_LIMITED},
|
||||
{"rate", OPT_INT(samplerate), M_RANGE(1000, 8 * 48000)},
|
||||
{"format", OPT_CHOICE(aformat,
|
||||
{"u8", PCM(0, 0, 8, 0)},
|
||||
|
|
|
@ -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};
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
Loading…
Reference in New Issue