demux: add per-demuxer sub-options

Until now, they were all just added to options.c (e.g. demux_mkv_conf).
This adds a mechanism which can be used to add future options in a
(very) slightly more elegant way.
This commit is contained in:
wm4 2020-01-04 19:47:36 +01:00
parent 8150b8552b
commit 5016a1e4a6
2 changed files with 14 additions and 0 deletions

View File

@ -105,6 +105,8 @@ struct demux_opts {
#define MAX_BYTES MPMIN(INT64_MAX, SIZE_MAX / 2)
static bool get_demux_sub_opts(int index, const struct m_sub_options **sub);
const struct m_sub_options demux_conf = {
.opts = (const struct m_option[]){
OPT_CHOICE("cache", enable_cache, 0,
@ -151,6 +153,7 @@ const struct m_sub_options demux_conf = {
},
.meta_cp = "utf-8",
},
.get_sub_options = get_demux_sub_opts,
};
struct demux_internal {
@ -4498,3 +4501,11 @@ static void demux_convert_tags_charset(struct demuxer *demuxer)
talloc_free(data);
}
static bool get_demux_sub_opts(int index, const struct m_sub_options **sub)
{
if (!demuxer_list[index])
return false;
*sub = demuxer_list[index]->options;
return true;
}

View File

@ -98,6 +98,9 @@ typedef struct demuxer_desc {
const char *name; // Demuxer name, used with -demuxer switch
const char *desc; // Displayed to user
// If non-NULL, these are added to the global option list.
const struct m_sub_options *options;
// Return 0 on success, otherwise -1
int (*open)(struct demuxer *demuxer, enum demux_check check);
// The following functions are all optional