mirror of
https://github.com/mpv-player/mpv
synced 2024-12-25 00:02:13 +00:00
3f006eced4
Today, validation is only possible for string type options. But there's no particular reason why it needs to be restricted in this way, and there are potential uses, to allow other options to be validated without forcing the option to have to reimplement parsing from scratch. The first part, simply making the validation function an explicit field instead of overloading priv is simple enough. But if we only do that, then the validation function still needs to deal with the raw pre-parsed string. Instead, we want to allow the value to be parsed before it is validated. That in turn leads to us having validator functions that should be type aware. Unfortunately, that means we need to keep the explicit macro like OPT_STRING_VALIDATE() as a way to enforce the correct typing of the function. Otherwise, we'd have to have the validator take a void * and hope the implementation can cast it correctly. For help, we don't have this problem, as help doesn't look at the value. Then, we turn validators that are really help generators into explicit help functions and where a validator is help + validation, we split them into two parts. I have, however, left functions that need to query information for both help and validation as single functions to avoid code duplication. In this change, I have not added an other OPT_FOO_VALIDATE() macros as they are not needed, but I will add some in a separate change to illustrate the pattern. |
||
---|---|---|
.. | ||
f_async_queue.c | ||
f_async_queue.h | ||
f_auto_filters.c | ||
f_auto_filters.h | ||
f_autoconvert.c | ||
f_autoconvert.h | ||
f_decoder_wrapper.c | ||
f_decoder_wrapper.h | ||
f_demux_in.c | ||
f_demux_in.h | ||
f_hwtransfer.c | ||
f_hwtransfer.h | ||
f_lavfi.c | ||
f_lavfi.h | ||
f_output_chain.c | ||
f_output_chain.h | ||
f_swresample.c | ||
f_swresample.h | ||
f_swscale.c | ||
f_swscale.h | ||
f_utils.c | ||
f_utils.h | ||
filter_internal.h | ||
filter.c | ||
filter.h | ||
frame.c | ||
frame.h | ||
user_filters.c | ||
user_filters.h |