diff options
author | wm4 <wm4@nowhere> | 2016-08-28 19:42:03 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2016-08-28 19:46:54 +0200 |
commit | f42e4374d55a3b68b0c4fcb342d9cdcd5d15c9c7 (patch) | |
tree | d5fd210634c38901cb5eaf97b8313647520a53b6 /options | |
parent | a9a55ea7f28894d9e72be5e8b2d5a9331f1e7be4 (diff) | |
download | mpv-f42e4374d55a3b68b0c4fcb342d9cdcd5d15c9c7.tar.bz2 mpv-f42e4374d55a3b68b0c4fcb342d9cdcd5d15c9c7.tar.xz |
command: export profile list as a property
Targeted at scripts, which can do whatever they want with it. This comes
with the promise that they could get randomly broken any time.
See #977.
Diffstat (limited to 'options')
-rw-r--r-- | options/m_config.c | 27 | ||||
-rw-r--r-- | options/m_config.h | 2 |
2 files changed, 29 insertions, 0 deletions
diff --git a/options/m_config.c b/options/m_config.c index 1cb01ebfdc..3dbbb5020a 100644 --- a/options/m_config.c +++ b/options/m_config.c @@ -36,6 +36,7 @@ #include "options/m_option.h" #include "common/msg.h" #include "common/msg_control.h" +#include "misc/node.h" static const union m_option_value default_value; @@ -933,6 +934,32 @@ int m_config_set_profile(struct m_config *config, char *name, int flags) return 0; } +struct mpv_node m_config_get_profiles(struct m_config *config) +{ + struct mpv_node root; + node_init(&root, MPV_FORMAT_NODE_ARRAY, NULL); + + for (m_profile_t *profile = config->profiles; profile; profile = profile->next) + { + struct mpv_node *entry = node_array_add(&root, MPV_FORMAT_NODE_MAP); + + node_map_add_string(entry, "name", profile->name); + if (profile->desc) + node_map_add_string(entry, "profile-desc", profile->desc); + + struct mpv_node *opts = + node_map_add(entry, "options", MPV_FORMAT_NODE_ARRAY); + + for (int n = 0; n < profile->num_opts; n++) { + struct mpv_node *opt_entry = node_array_add(opts, MPV_FORMAT_NODE_MAP); + node_map_add_string(opt_entry, "key", profile->opts[n * 2 + 0]); + node_map_add_string(opt_entry, "value", profile->opts[n * 2 + 1]); + } + } + + return root; +} + void *m_config_alloc_struct(void *talloc_ctx, const struct m_sub_options *subopts) { diff --git a/options/m_config.h b/options/m_config.h index ed34389921..5937a4492e 100644 --- a/options/m_config.h +++ b/options/m_config.h @@ -247,6 +247,8 @@ int m_config_set_profile_option(struct m_config *config, struct m_profile *p, */ int m_config_set_profile(struct m_config *config, char *name, int flags); +struct mpv_node m_config_get_profiles(struct m_config *config); + void *m_config_alloc_struct(void *talloc_ctx, const struct m_sub_options *subopts); |