summaryrefslogtreecommitdiffstats
path: root/options
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2017-03-02 11:32:07 +0100
committerwm4 <wm4@nowhere>2017-03-02 11:32:07 +0100
commit0aa01ca7434ba94bcc3d4093458701d596690d50 (patch)
treeb3c11265abfa1b5075b9b9f9cc166f52cf9a49af /options
parent8fb0d2ee27d3e9026d37aa356acd43b567d3df17 (diff)
downloadmpv-0aa01ca7434ba94bcc3d4093458701d596690d50.tar.bz2
mpv-0aa01ca7434ba94bcc3d4093458701d596690d50.tar.xz
m_option: optionally allow passing "no" to imgfmt option types
Needed for the following commit. Also, fix that uint32_t type - we always assumed int.
Diffstat (limited to 'options')
-rw-r--r--options/m_option.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/options/m_option.c b/options/m_option.c
index 11bb677b97..7f30b73a9a 100644
--- a/options/m_option.c
+++ b/options/m_option.c
@@ -2047,6 +2047,8 @@ const m_option_type_t m_option_type_size_box = {
static int parse_imgfmt(struct mp_log *log, const m_option_t *opt,
struct bstr name, struct bstr param, void *dst)
{
+ bool accept_no = opt->min < 0;
+
if (param.len == 0)
return M_OPT_MISSING_PARAM;
@@ -2055,28 +2057,29 @@ static int parse_imgfmt(struct mp_log *log, const m_option_t *opt,
char **list = mp_imgfmt_name_list();
for (int i = 0; list[i]; i++)
mp_info(log, " %s", list[i]);
+ if (accept_no)
+ mp_info(log, " no");
mp_info(log, "\n");
talloc_free(list);
return M_OPT_EXIT;
}
unsigned int fmt = mp_imgfmt_from_name(param, true);
- if (!fmt) {
+ if (!fmt && !(accept_no && bstr_equals0(param, "no"))) {
mp_err(log, "Option %.*s: unknown format name: '%.*s'\n",
BSTR_P(name), BSTR_P(param));
return M_OPT_INVALID;
}
if (dst)
- *((uint32_t *)dst) = fmt;
+ *((int *)dst) = fmt;
return 1;
}
const m_option_type_t m_option_type_imgfmt = {
- // Please report any missing colorspaces
.name = "Image format",
- .size = sizeof(uint32_t),
+ .size = sizeof(int),
.parse = parse_imgfmt,
.copy = copy_opt,
};