EXPORT_C #endif gboolean gst_navigation_query_parse_commands_nth (GstQuery * query, guint nth, GstNavigationCommand * cmd) { GstStructure *structure; const GValue *list; g_return_val_if_fail (GST_NAVIGATION_QUERY_HAS_TYPE (query, COMMANDS), FALSE); if (cmd == NULL) return TRUE; structure = gst_query_get_structure (query); list = gst_structure_get_value (structure, "commands"); if (list == NULL) { *cmd = GST_NAVIGATION_COMMAND_INVALID; } else { if (nth < gst_value_list_get_size (list)) { *cmd = (GstNavigationCommand) g_value_get_enum (gst_value_list_get_value (list, nth)); } else *cmd = GST_NAVIGATION_COMMAND_INVALID; } return TRUE; }
EXPORT_C #endif void gst_navigation_query_set_commands (GstQuery * query, gint n_cmds, ...) { va_list ap; GValue list = { 0, }; GstStructure *structure; gint i; g_return_if_fail (GST_NAVIGATION_QUERY_HAS_TYPE (query, COMMANDS)); g_value_init (&list, GST_TYPE_LIST); va_start (ap, n_cmds); for (i = 0; i < n_cmds; i++) { GstNavigationCommand val = va_arg (ap, GstNavigationCommand); gst_query_list_add_command (&list, val); } va_end (ap); structure = gst_query_get_structure (query); gst_structure_set_value (structure, "commands", &list); g_value_unset (&list); }
/** * gst_navigation_query_set_angles: * @query: a #GstQuery * @cur_angle: the current viewing angle to set. * @n_angles: the number of viewing angles to set. * * Set the #GstNavigation angles query result field in @query. * * Since: 0.10.23 */ void gst_navigation_query_set_angles (GstQuery * query, guint cur_angle, guint n_angles) { GstStructure *structure; g_return_if_fail (GST_NAVIGATION_QUERY_HAS_TYPE (query, ANGLES)); structure = gst_query_get_structure (query); gst_structure_set (structure, "angle", G_TYPE_UINT, cur_angle, "angles", G_TYPE_UINT, n_angles, NULL); }
/** * gst_navigation_query_set_commandsv: * @query: a #GstQuery * @n_cmds: the number of commands to set. * @cmds: An array containing @n_cmds @GstNavigationCommand values. * * Set the #GstNavigation command query result fields in @query. The number * of commands passed must be equal to @n_commands. * * Since: 0.10.23 */ void gst_navigation_query_set_commandsv (GstQuery * query, gint n_cmds, GstNavigationCommand * cmds) { GValue list = { 0, }; GstStructure *structure; gint i; g_return_if_fail (GST_NAVIGATION_QUERY_HAS_TYPE (query, COMMANDS)); g_value_init (&list, GST_TYPE_LIST); for (i = 0; i < n_cmds; i++) { gst_query_list_add_command (&list, cmds[i]); } structure = gst_query_get_structure (query); gst_structure_set_value (structure, "commands", &list); g_value_unset (&list); }
/** * gst_navigation_query_parse_commands_length: * @query: a #GstQuery * @n_cmds: the number of commands in this query. * * Parse the number of commands in the #GstNavigation commands @query. * * Returns: %TRUE if the query could be successfully parsed. %FALSE if not. * Since: 0.10.23 */ gboolean gst_navigation_query_parse_commands_length (GstQuery * query, guint * n_cmds) { GstStructure *structure; const GValue *list; g_return_val_if_fail (GST_NAVIGATION_QUERY_HAS_TYPE (query, COMMANDS), FALSE); if (n_cmds == NULL) return TRUE; structure = gst_query_get_structure (query); list = gst_structure_get_value (structure, "commands"); if (list == NULL) *n_cmds = 0; else *n_cmds = gst_value_list_get_size (list); return TRUE; }
/** * gst_navigation_query_parse_angles: * @query: a #GstQuery * @cur_angle: Pointer to a #guint into which to store the currently selected * angle value from the query, or NULL * @n_angles: Pointer to a #guint into which to store the number of angles * value from the query, or NULL * * Parse the current angle number in the #GstNavigation angles @query into the * #guint pointed to by the @cur_angle variable, and the number of available * angles into the #guint pointed to by the @n_angles variable. * * Returns: %TRUE if the query could be successfully parsed. %FALSE if not. * Since: 0.10.23 */ gboolean gst_navigation_query_parse_angles (GstQuery * query, guint * cur_angle, guint * n_angles) { GstStructure *structure; gboolean ret = TRUE; g_return_val_if_fail (GST_NAVIGATION_QUERY_HAS_TYPE (query, ANGLES), FALSE); structure = gst_query_get_structure (query); if (cur_angle) ret &= gst_structure_get_uint (structure, "angle", cur_angle); if (n_angles) ret &= gst_structure_get_uint (structure, "angles", n_angles); WARN_IF_FAIL (ret, "Couldn't extract details from angles query"); return ret; }
EXPORT_C #endif gboolean gst_navigation_query_parse_angles (GstQuery * query, guint * cur_angle, guint * n_angles) { GstStructure *structure; g_return_val_if_fail (GST_NAVIGATION_QUERY_HAS_TYPE (query, ANGLES), FALSE); structure = gst_query_get_structure (query); if (cur_angle) g_return_val_if_fail (gst_structure_get_uint (structure, "angle", cur_angle), FALSE); if (n_angles) g_return_val_if_fail (gst_structure_get_uint (structure, "angles", n_angles), FALSE); return TRUE; }