diff options
author | wm4 <wm4@nowhere> | 2014-12-30 14:04:53 +0100 |
---|---|---|
committer | Diogo Franco (Kovensky) <diogomfranco@gmail.com> | 2015-01-25 17:00:09 +0900 |
commit | 74a3d29f21d9faf290ba0fd6e86abb9682c0ac17 (patch) | |
tree | 1ae1e11c1b1eb594ab538565c5c0e5dbdc93d5d4 /player/command.c | |
parent | 07acf5cb9aceb028043ccb25ce89b6ad22713259 (diff) | |
download | mpv-74a3d29f21d9faf290ba0fd6e86abb9682c0ac17.tar.bz2 mpv-74a3d29f21d9faf290ba0fd6e86abb9682c0ac17.tar.xz |
command: make empty vf-metadata not an error
If a filter exists, but has no metadata, just return success. This
allows the user to distinguish between no metadata available, and filter
not inserted.
See #1408.
Diffstat (limited to 'player/command.c')
-rw-r--r-- | player/command.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/player/command.c b/player/command.c index b44d218f52..893bbd9a94 100644 --- a/player/command.c +++ b/player/command.c @@ -1034,8 +1034,10 @@ static int tag_property(int action, void *arg, struct mp_tags *tags) res = talloc_asprintf_append_buffer(res, "%s: %s\n", tags->keys[n], tags->values[n]); } + if (!res) + res = talloc_strdup(NULL, "(empty)"); *(char **)arg = res; - return res ? M_PROPERTY_OK : M_PROPERTY_UNAVAILABLE; + return M_PROPERTY_OK; } case M_PROPERTY_KEY_ACTION: { struct m_property_action_arg *ka = arg; @@ -1102,22 +1104,16 @@ static int mp_property_vf_metadata(void *ctx, struct m_property *prop, return M_PROPERTY_UNAVAILABLE; struct vf_chain *vf = mpctx->d_video->vfilter; - switch(action) { - case M_PROPERTY_GET_TYPE: - case M_PROPERTY_GET: - case M_PROPERTY_GET_NODE: - return M_PROPERTY_NOT_IMPLEMENTED; - case M_PROPERTY_KEY_ACTION: { + if (action == M_PROPERTY_KEY_ACTION) { struct m_property_action_arg *ka = arg; bstr key; char *rem; m_property_split_path(ka->key, &key, &rem); - struct mp_tags vf_metadata; + struct mp_tags vf_metadata = {0}; switch (vf_control_by_label(vf, VFCTRL_GET_METADATA, &vf_metadata, key)) { - case CONTROL_NA: - return M_PROPERTY_UNAVAILABLE; case CONTROL_UNKNOWN: return M_PROPERTY_UNKNOWN; + case CONTROL_NA: // empty case CONTROL_OK: if (strlen(rem)) { struct m_property_action_arg next_ka = *ka; @@ -1131,7 +1127,6 @@ static int mp_property_vf_metadata(void *ctx, struct m_property *prop, return M_PROPERTY_ERROR; } } - } return M_PROPERTY_NOT_IMPLEMENTED; } |