/** * gst_navigation_query_parse_commands_nth: * @query: a #GstQuery * @nth: the nth command to retrieve. * @cmd: a pointer to store the nth command into. * * Parse the #GstNavigation command query and retrieve the @nth command from * it into @cmd. If the list contains less elements than @nth, @cmd will be * set to #GST_NAVIGATION_COMMAND_INVALID. * * Returns: %TRUE if the query could be successfully parsed. %FALSE if not. */ gboolean gst_navigation_query_parse_commands_nth (GstQuery * query, guint nth, GstNavigationCommand * cmd) { const 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; }
static gboolean handle_queued_objects (APP_STATE_T * state) { GstMiniObject *object = NULL; g_mutex_lock (&state->queue_lock); if (state->flushing) { g_cond_broadcast (&state->cond); goto beach; } else if (g_async_queue_length (state->queue) == 0) { goto beach; } if ((object = g_async_queue_try_pop (state->queue))) { if (GST_IS_BUFFER (object)) { GstBuffer *buffer = GST_BUFFER_CAST (object); update_image (state, buffer); render_scene (state); gst_buffer_unref (buffer); if (!SYNC_BUFFERS) { object = NULL; } } else if (GST_IS_QUERY (object)) { GstQuery *query = GST_QUERY_CAST (object); GstStructure *s = (GstStructure *) gst_query_get_structure (query); if (gst_structure_has_name (s, "not-used")) { g_assert_not_reached (); } else { g_assert_not_reached (); } } else if (GST_IS_EVENT (object)) { GstEvent *event = GST_EVENT_CAST (object); g_print ("\nevent %p %s\n", event, gst_event_type_get_name (GST_EVENT_TYPE (event))); switch (GST_EVENT_TYPE (event)) { case GST_EVENT_EOS: flush_internal (state); break; default: break; } gst_event_unref (event); object = NULL; } } if (object) { state->popped_obj = object; g_cond_broadcast (&state->cond); } beach: g_mutex_unlock (&state->queue_lock); return FALSE; }
gboolean gst_droid_query_parse_video_color_format (GstQuery * query, gint * format) { GstStructure *structure; structure = gst_query_get_structure (query); return gst_structure_get_int (structure, "color-format", format); }
/** * gst_query_set_uri: * @query: a #GstQuery with query type GST_QUERY_URI * @uri: the URI to set * * Answer a URI query by setting the requested URI. * * Since: 0.10.22 */ void gst_query_set_uri (GstQuery * query, const gchar * uri) { GstStructure *structure; g_return_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_URI); g_return_if_fail (gst_uri_is_valid (uri)); structure = gst_query_get_structure (query); gst_structure_id_set (structure, GST_QUARK (URI), G_TYPE_STRING, uri, NULL); }
/** * 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_query_set_duration: * @query: a #GstQuery * @format: the #GstFormat for the duration * @duration: the duration of the stream * * Answer a duration query by setting the requested value in the given format. */ void gst_query_set_duration (GstQuery * query, GstFormat format, gint64 duration) { GstStructure *structure; g_return_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_DURATION); structure = gst_query_get_structure (query); gst_structure_id_set (structure, GST_QUARK (FORMAT), GST_TYPE_FORMAT, format, GST_QUARK (DURATION), G_TYPE_INT64, duration, NULL); }
/** * gst_query_parse_uri: * @query: a #GstQuery * @uri: the storage for the current URI (may be NULL) * * Parse an URI query, writing the URI into @uri as a newly * allocated string, if the respective parameters are non-NULL. * Free the string with g_free() after usage. * * Since: 0.10.22 */ void gst_query_parse_uri (GstQuery * query, gchar ** uri) { GstStructure *structure; g_return_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_URI); structure = gst_query_get_structure (query); if (uri) *uri = g_value_dup_string (gst_structure_id_get_value (structure, GST_QUARK (URI))); }
/** * gst_query_set_position: * @query: a #GstQuery with query type GST_QUERY_POSITION * @format: the requested #GstFormat * @cur: the position to set * * Answer a position query by setting the requested value in the given format. */ void gst_query_set_position (GstQuery * query, GstFormat format, gint64 cur) { GstStructure *structure; g_return_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_POSITION); structure = gst_query_get_structure (query); gst_structure_id_set (structure, GST_QUARK (FORMAT), GST_TYPE_FORMAT, format, GST_QUARK (CURRENT), G_TYPE_INT64, cur, NULL); }
/** * gst_query_set_latency: * @query: a #GstQuery * @live: if there is a live element upstream * @min_latency: the minimal latency of the live element * @max_latency: the maximal latency of the live element * * Answer a latency query by setting the requested values in the given format. * * Since: 0.10.12 */ void gst_query_set_latency (GstQuery * query, gboolean live, GstClockTime min_latency, GstClockTime max_latency) { GstStructure *structure; g_return_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_LATENCY); structure = gst_query_get_structure (query); gst_structure_id_set (structure, GST_QUARK (LIVE), G_TYPE_BOOLEAN, live, GST_QUARK (MIN_LATENCY), G_TYPE_UINT64, min_latency, GST_QUARK (MAX_LATENCY), G_TYPE_UINT64, max_latency, NULL); }
/** * gst_query_parse_position: * @query: a #GstQuery * @format: the storage for the #GstFormat of the position values (may be NULL) * @cur: the storage for the current position (may be NULL) * * Parse a position query, writing the format into @format, and the position * into @cur, if the respective parameters are non-NULL. */ void gst_query_parse_position (GstQuery * query, GstFormat * format, gint64 * cur) { GstStructure *structure; g_return_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_POSITION); structure = gst_query_get_structure (query); if (format) *format = g_value_get_enum (gst_structure_id_get_value (structure, GST_QUARK (FORMAT))); if (cur) *cur = g_value_get_int64 (gst_structure_id_get_value (structure, GST_QUARK (CURRENT))); }
/** * gst_query_set_convert: * @query: a #GstQuery * @src_format: the source #GstFormat * @src_value: the source value * @dest_format: the destination #GstFormat * @dest_value: the destination value * * Answer a convert query by setting the requested values. */ void gst_query_set_convert (GstQuery * query, GstFormat src_format, gint64 src_value, GstFormat dest_format, gint64 dest_value) { GstStructure *structure; g_return_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_CONVERT); structure = gst_query_get_structure (query); gst_structure_id_set (structure, GST_QUARK (SRC_FORMAT), GST_TYPE_FORMAT, src_format, GST_QUARK (SRC_VALUE), G_TYPE_INT64, src_value, GST_QUARK (DEST_FORMAT), GST_TYPE_FORMAT, dest_format, GST_QUARK (DEST_VALUE), G_TYPE_INT64, dest_value, NULL); }
/** * gst_query_set_seeking: * @query: a #GstQuery * @format: the format to set for the @segment_start and @segment_end values * @seekable: the seekable flag to set * @segment_start: the segment_start to set * @segment_end: the segment_end to set * * Set the seeking query result fields in @query. */ void gst_query_set_seeking (GstQuery * query, GstFormat format, gboolean seekable, gint64 segment_start, gint64 segment_end) { GstStructure *structure; g_return_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_SEEKING); structure = gst_query_get_structure (query); gst_structure_id_set (structure, GST_QUARK (FORMAT), GST_TYPE_FORMAT, format, GST_QUARK (SEEKABLE), G_TYPE_BOOLEAN, seekable, GST_QUARK (SEGMENT_START), G_TYPE_INT64, segment_start, GST_QUARK (SEGMENT_END), G_TYPE_INT64, segment_end, NULL); }
/** * gst_query_set_segment: * @query: a #GstQuery * @rate: the rate of the segment * @format: the #GstFormat of the segment values (@start_value and @stop_value) * @start_value: the start value * @stop_value: the stop value * * Answer a segment query by setting the requested values. The normal * playback segment of a pipeline is 0 to duration at the default rate of * 1.0. If a seek was performed on the pipeline to play a different * segment, this query will return the range specified in the last seek. * * @start_value and @stop_value will respectively contain the configured * playback range start and stop values expressed in @format. * The values are always between 0 and the duration of the media and * @start_value <= @stop_value. @rate will contain the playback rate. For * negative rates, playback will actually happen from @stop_value to * @start_value. */ void gst_query_set_segment (GstQuery * query, gdouble rate, GstFormat format, gint64 start_value, gint64 stop_value) { GstStructure *structure; g_return_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_SEGMENT); structure = gst_query_get_structure (query); gst_structure_id_set (structure, GST_QUARK (RATE), G_TYPE_DOUBLE, rate, GST_QUARK (FORMAT), GST_TYPE_FORMAT, format, GST_QUARK (START_VALUE), G_TYPE_INT64, start_value, GST_QUARK (STOP_VALUE), G_TYPE_INT64, stop_value, NULL); }
/** * gst_query_set_buffering_range: * @query: a #GstQuery * @format: the format to set for the @start and @stop values * @start: the start to set * @stop: the stop to set * @estimated_total: estimated total amount of download time * * Set the available query result fields in @query. * * Since: 0.10.20 */ void gst_query_set_buffering_range (GstQuery * query, GstFormat format, gint64 start, gint64 stop, gint64 estimated_total) { GstStructure *structure; g_return_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_BUFFERING); structure = gst_query_get_structure (query); gst_structure_id_set (structure, GST_QUARK (FORMAT), GST_TYPE_FORMAT, format, GST_QUARK (START_VALUE), G_TYPE_INT64, start, GST_QUARK (STOP_VALUE), G_TYPE_INT64, stop, GST_QUARK (ESTIMATED_TOTAL), G_TYPE_INT64, estimated_total, NULL); }
/** * gst_query_parse_duration: * @query: a #GstQuery * @format: the storage for the #GstFormat of the duration value, or NULL. * @duration: the storage for the total duration, or NULL. * * Parse a duration query answer. Write the format of the duration into @format, * and the value into @duration, if the respective variables are non-NULL. */ void gst_query_parse_duration (GstQuery * query, GstFormat * format, gint64 * duration) { GstStructure *structure; g_return_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_DURATION); structure = gst_query_get_structure (query); if (format) *format = g_value_get_enum (gst_structure_id_get_value (structure, GST_QUARK (FORMAT))); if (duration) *duration = g_value_get_int64 (gst_structure_id_get_value (structure, GST_QUARK (DURATION))); }
static void do_query_stats (GstStatsTracer * self, GstPad * this_pad, GstPadStats * this_pad_stats, GstPad * that_pad, GstPadStats * that_pad_stats, GstQuery * qry, GstClockTime elapsed, gboolean have_res, gboolean res) { GstElement *this_elem = get_real_pad_parent (this_pad); GstElementStats *this_elem_stats = get_element_stats (self, this_elem); GstElement *that_elem = get_real_pad_parent (that_pad); GstElementStats *that_elem_stats = get_element_stats (self, that_elem); gst_tracer_record_log (tr_query, (guint64) (guintptr) g_thread_self (), elapsed, this_pad_stats->index, this_elem_stats->index, that_pad_stats->index, that_elem_stats->index, GST_QUERY_TYPE_NAME (qry), gst_query_get_structure (qry), have_res, res); }
/** * gst_query_parse_formats_length: * @query: a #GstQuery * @n_formats: the number of formats in this query. * * Parse the number of formats in the formats @query. * * Since: 0.10.4 */ void gst_query_parse_formats_length (GstQuery * query, guint * n_formats) { GstStructure *structure; g_return_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_FORMATS); if (n_formats) { const GValue *list; structure = gst_query_get_structure (query); list = gst_structure_get_value (structure, "formats"); if (list == NULL) *n_formats = 0; else *n_formats = gst_value_list_get_size (list); } }
/** * gst_query_set_formatsv: * @query: a #GstQuery * @n_formats: the number of formats to set. * @formats: An array containing @n_formats @GstFormat values. * * Set the formats query result fields in @query. The number of formats passed * in the @formats array must be equal to @n_formats. * * Since: 0.10.4 */ void gst_query_set_formatsv (GstQuery * query, gint n_formats, GstFormat * formats) { GValue list = { 0, }; GstStructure *structure; gint i; g_return_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_FORMATS); g_value_init (&list, GST_TYPE_LIST); for (i = 0; i < n_formats; i++) { gst_query_list_add_format (&list, formats[i]); } structure = gst_query_get_structure (query); gst_structure_set_value (structure, "formats", &list); g_value_unset (&list); }
/** * 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_query_parse_latency: * @query: a #GstQuery * @live: storage for live or NULL * @min_latency: the storage for the min latency or NULL * @max_latency: the storage for the max latency or NULL * * Parse a latency query answer. * * Since: 0.10.12 */ void gst_query_parse_latency (GstQuery * query, gboolean * live, GstClockTime * min_latency, GstClockTime * max_latency) { GstStructure *structure; g_return_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_LATENCY); structure = gst_query_get_structure (query); if (live) *live = g_value_get_boolean (gst_structure_id_get_value (structure, GST_QUARK (LIVE))); if (min_latency) *min_latency = g_value_get_uint64 (gst_structure_id_get_value (structure, GST_QUARK (MIN_LATENCY))); if (max_latency) *max_latency = g_value_get_uint64 (gst_structure_id_get_value (structure, GST_QUARK (MAX_LATENCY))); }
/** * 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; }
/** * gst_query_parse_formats_nth: * @query: a #GstQuery * @nth: the nth format to retrieve. * @format: a pointer to store the nth format * * Parse the format query and retrieve the @nth format from it into * @format. If the list contains less elements than @nth, @format will be * set to GST_FORMAT_UNDEFINED. * * Since: 0.10.4 */ void gst_query_parse_formats_nth (GstQuery * query, guint nth, GstFormat * format) { GstStructure *structure; g_return_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_FORMATS); if (format) { const GValue *list; structure = gst_query_get_structure (query); list = gst_structure_get_value (structure, "formats"); if (list == NULL) { *format = GST_FORMAT_UNDEFINED; } else { if (nth < gst_value_list_get_size (list)) { *format = g_value_get_enum (gst_value_list_get_value (list, nth)); } else *format = GST_FORMAT_UNDEFINED; } } }
/** * gst_query_parse_seeking: * @query: a GST_QUERY_SEEKING type query #GstQuery * @format: the format to set for the @segment_start and @segment_end values * @seekable: the seekable flag to set * @segment_start: the segment_start to set * @segment_end: the segment_end to set * * Parse a seeking query, writing the format into @format, and * other results into the passed parameters, if the respective parameters * are non-NULL */ void gst_query_parse_seeking (GstQuery * query, GstFormat * format, gboolean * seekable, gint64 * segment_start, gint64 * segment_end) { GstStructure *structure; g_return_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_SEEKING); structure = gst_query_get_structure (query); if (format) *format = g_value_get_enum (gst_structure_id_get_value (structure, GST_QUARK (FORMAT))); if (seekable) *seekable = g_value_get_boolean (gst_structure_id_get_value (structure, GST_QUARK (SEEKABLE))); if (segment_start) *segment_start = g_value_get_int64 (gst_structure_id_get_value (structure, GST_QUARK (SEGMENT_START))); if (segment_end) *segment_end = g_value_get_int64 (gst_structure_id_get_value (structure, GST_QUARK (SEGMENT_END))); }
/** * gst_query_parse_segment: * @query: a #GstQuery * @rate: the storage for the rate of the segment, or NULL * @format: the storage for the #GstFormat of the values, or NULL * @start_value: the storage for the start value, or NULL * @stop_value: the storage for the stop value, or NULL * * Parse a segment query answer. Any of @rate, @format, @start_value, and * @stop_value may be NULL, which will cause this value to be omitted. * * See gst_query_set_segment() for an explanation of the function arguments. */ void gst_query_parse_segment (GstQuery * query, gdouble * rate, GstFormat * format, gint64 * start_value, gint64 * stop_value) { GstStructure *structure; g_return_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_SEGMENT); structure = gst_query_get_structure (query); if (rate) *rate = g_value_get_double (gst_structure_id_get_value (structure, GST_QUARK (RATE))); if (format) *format = g_value_get_enum (gst_structure_id_get_value (structure, GST_QUARK (FORMAT))); if (start_value) *start_value = g_value_get_int64 (gst_structure_id_get_value (structure, GST_QUARK (START_VALUE))); if (stop_value) *stop_value = g_value_get_int64 (gst_structure_id_get_value (structure, GST_QUARK (STOP_VALUE))); }
static gboolean gst_glimage_sink_query (GstElement * element, GstQuery * query) { GstGLImageSink *glimage_sink = GST_GLIMAGE_SINK (element); gboolean res = FALSE; switch (GST_QUERY_TYPE (query)) { case GST_QUERY_CUSTOM: { GstStructure *structure = gst_query_get_structure (query); gst_structure_set (structure, "gstgldisplay", G_TYPE_POINTER, glimage_sink->display, NULL); res = GST_ELEMENT_CLASS (parent_class)->query (element, query); break; } default: res = GST_ELEMENT_CLASS (parent_class)->query (element, query); break; } return res; }
/** * gst_query_parse_convert: * @query: a #GstQuery * @src_format: the storage for the #GstFormat of the source value, or NULL * @src_value: the storage for the source value, or NULL * @dest_format: the storage for the #GstFormat of the destination value, or NULL * @dest_value: the storage for the destination value, or NULL * * Parse a convert query answer. Any of @src_format, @src_value, @dest_format, * and @dest_value may be NULL, in which case that value is omitted. */ void gst_query_parse_convert (GstQuery * query, GstFormat * src_format, gint64 * src_value, GstFormat * dest_format, gint64 * dest_value) { GstStructure *structure; g_return_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_CONVERT); structure = gst_query_get_structure (query); if (src_format) *src_format = g_value_get_enum (gst_structure_id_get_value (structure, GST_QUARK (SRC_FORMAT))); if (src_value) *src_value = g_value_get_int64 (gst_structure_id_get_value (structure, GST_QUARK (SRC_VALUE))); if (dest_format) *dest_format = g_value_get_enum (gst_structure_id_get_value (structure, GST_QUARK (DEST_FORMAT))); if (dest_value) *dest_value = g_value_get_int64 (gst_structure_id_get_value (structure, GST_QUARK (DEST_VALUE))); }
/** * gst_query_parse_buffering_range: * @query: a GST_QUERY_SEEKING type query #GstQuery * @format: the format to set for the @segment_start and @segment_end values * @start: the start to set * @stop: the stop to set * @estimated_total: estimated total amount of download time * * Parse an available query, writing the format into @format, and * other results into the passed parameters, if the respective parameters * are non-NULL * * Since: 0.10.20 */ void gst_query_parse_buffering_range (GstQuery * query, GstFormat * format, gint64 * start, gint64 * stop, gint64 * estimated_total) { GstStructure *structure; g_return_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_BUFFERING); structure = gst_query_get_structure (query); if (format) *format = g_value_get_enum (gst_structure_id_get_value (structure, GST_QUARK (FORMAT))); if (start) *start = g_value_get_int64 (gst_structure_id_get_value (structure, GST_QUARK (START_VALUE))); if (stop) *stop = g_value_get_int64 (gst_structure_id_get_value (structure, GST_QUARK (STOP_VALUE))); if (estimated_total) *estimated_total = g_value_get_int64 (gst_structure_id_get_value (structure, GST_QUARK (ESTIMATED_TOTAL))); }
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; }
/** * gst_query_set_formats: * @query: a #GstQuery * @n_formats: the number of formats to set. * @...: A number of @GstFormats equal to @n_formats. * * Set the formats query result fields in @query. The number of formats passed * must be equal to @n_formats. */ void gst_query_set_formats (GstQuery * query, gint n_formats, ...) { va_list ap; GValue list = { 0, }; GstStructure *structure; gint i; g_return_if_fail (GST_QUERY_TYPE (query) == GST_QUERY_FORMATS); g_value_init (&list, GST_TYPE_LIST); va_start (ap, n_formats); for (i = 0; i < n_formats; i++) { gst_query_list_add_format (&list, va_arg (ap, GstFormat)); } va_end (ap); structure = gst_query_get_structure (query); gst_structure_set_value (structure, "formats", &list); g_value_unset (&list); }