summaryrefslogtreecommitdiffstats
path: root/player/command.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2014-03-30 19:09:31 +0200
committerwm4 <wm4@nowhere>2014-03-30 19:21:33 +0200
commit392997fa109ec8b6431b16af070cc2dbd043ae8f (patch)
tree41233f1c723898561855b559c116935c4d5680e8 /player/command.c
parent3fe6426ae0a6c2cd926d37e8b3c704963a573056 (diff)
downloadmpv-392997fa109ec8b6431b16af070cc2dbd043ae8f.tar.bz2
mpv-392997fa109ec8b6431b16af070cc2dbd043ae8f.tar.xz
command: change what the metadata property returns
Change the type of the property from a string list (alternating key/value entries) to a map. Using the client API, this will return MPV_FORMAT_NODE_MAP, while Lua mp.get_property_native returns a dictionary-like table.
Diffstat (limited to 'player/command.c')
-rw-r--r--player/command.c28
1 files changed, 20 insertions, 8 deletions
diff --git a/player/command.c b/player/command.c
index 2807476f47..14654af14b 100644
--- a/player/command.c
+++ b/player/command.c
@@ -827,14 +827,26 @@ static int tag_property(m_option_t *prop, int action, void *arg,
{
switch (action) {
case M_PROPERTY_GET: {
- char **slist = NULL;
- int num = 0;
+ mpv_node_list *list = talloc_zero(NULL, mpv_node_list);
+ mpv_node node = {
+ .format = MPV_FORMAT_NODE_MAP,
+ .u.list = list,
+ };
+ list->num = tags->num_keys;
+ list->values = talloc_array(list, mpv_node, list->num);
+ list->keys = talloc_array(list, char*, list->num);
for (int n = 0; n < tags->num_keys; n++) {
- MP_TARRAY_APPEND(NULL, slist, num, talloc_strdup(NULL, tags->keys[n]));
- MP_TARRAY_APPEND(NULL, slist, num, talloc_strdup(NULL, tags->values[n]));
+ list->keys[n] = talloc_strdup(list, tags->keys[n]);
+ list->values[n] = (struct mpv_node){
+ .format = MPV_FORMAT_STRING,
+ .u.string = talloc_strdup(list, tags->values[n]),
+ };
}
- MP_TARRAY_APPEND(NULL, slist, num, NULL);
- *(char ***)arg = slist;
+ *(mpv_node*)arg = node;
+ return M_PROPERTY_OK;
+ }
+ case M_PROPERTY_GET_TYPE: {
+ *(struct m_option *)arg = (struct m_option){.type = CONF_TYPE_NODE};
return M_PROPERTY_OK;
}
case M_PROPERTY_PRINT: {
@@ -2133,8 +2145,8 @@ static const m_option_t mp_properties[] = {
0, 0, 0, NULL },
{ "editions", mp_property_editions, CONF_TYPE_INT },
{ "angle", mp_property_angle, &m_option_type_dummy },
- { "metadata", mp_property_metadata, CONF_TYPE_STRING_LIST },
- { "chapter-metadata", mp_property_chapter_metadata, CONF_TYPE_STRING_LIST },
+ M_PROPERTY("metadata", mp_property_metadata),
+ M_PROPERTY("chapter-metadata", mp_property_chapter_metadata),
M_OPTION_PROPERTY_CUSTOM("pause", mp_property_pause),
{ "cache", mp_property_cache, CONF_TYPE_INT },
M_OPTION_PROPERTY("pts-association-mode"),