/** * gst_tag_setter_get_tag_list: * @setter: a #GstTagSetter * * Returns the current list of tags the setter uses. The list should not be * modified or freed. * * Returns: a current snapshot of the taglist used in the setter * or NULL if none is used. */ G_CONST_RETURN GstTagList * gst_tag_setter_get_tag_list (GstTagSetter * setter) { g_return_val_if_fail (GST_IS_TAG_SETTER (setter), NULL); return gst_tag_setter_get_data (setter)->list; }
/** * gst_tag_setter_get_tag_merge_mode: * @setter: a #GstTagSetter * * Queries the mode by which tags inside the setter are overwritten by tags * from events * * Returns: the merge mode used inside the element. */ GstTagMergeMode gst_tag_setter_get_tag_merge_mode (GstTagSetter * setter) { g_return_val_if_fail (GST_IS_TAG_SETTER (setter), FALSE); return gst_tag_setter_get_data (setter)->mode; }
/** * gst_tag_setter_set_tag_merge_mode: * @setter: a #GstTagSetter * @mode: The mode with which tags are added * * Sets the given merge mode that is used for adding tags from events to tags * specified by this interface. The default is #GST_TAG_MERGE_KEEP, which keeps * the tags set with this interface and discards tags from events. */ void gst_tag_setter_set_tag_merge_mode (GstTagSetter * setter, GstTagMergeMode mode) { g_return_if_fail (GST_IS_TAG_SETTER (setter)); g_return_if_fail (GST_TAG_MODE_IS_VALID (mode)); gst_tag_setter_get_data (setter)->mode = mode; }
/** * gst_tag_setter_reset_tags: * @setter: a #GstTagSetter * * Reset the internal taglist. Elements should call this from within the * state-change handler. * * Since: 0.10.22 */ void gst_tag_setter_reset_tags (GstTagSetter * setter) { GstTagData *data; g_return_if_fail (GST_IS_TAG_SETTER (setter)); data = gst_tag_setter_get_data (setter); if (data->list) { gst_tag_list_free (data->list); data->list = NULL; } }
/** * gst_tag_setter_set_tag_merge_mode: * @setter: a #GstTagSetter * @mode: The mode with which tags are added * * Sets the given merge mode that is used for adding tags from events to tags * specified by this interface. The default is #GST_TAG_MERGE_KEEP, which keeps * the tags set with this interface and discards tags from events. */ void gst_tag_setter_set_tag_merge_mode (GstTagSetter * setter, GstTagMergeMode mode) { GstTagData *data; g_return_if_fail (GST_IS_TAG_SETTER (setter)); g_return_if_fail (GST_TAG_MODE_IS_VALID (mode)); data = gst_tag_setter_get_data (setter); g_static_mutex_lock (&data->lock); data->mode = mode; g_static_mutex_unlock (&data->lock); }
/** * gst_tag_setter_add_tag_valist_values: * @setter: a #GstTagSetter * @mode: the mode to use * @tag: tag to set * @var_args: tag / GValue pairs to set * * Adds the given tag / GValue pairs on the setter using the given merge mode. * The list must be terminated with NULL. */ void gst_tag_setter_add_tag_valist_values (GstTagSetter * setter, GstTagMergeMode mode, const gchar * tag, va_list var_args) { GstTagData *data; g_return_if_fail (GST_IS_TAG_SETTER (setter)); g_return_if_fail (GST_TAG_MODE_IS_VALID (mode)); data = gst_tag_setter_get_data (setter); if (!data->list) data->list = gst_tag_list_new (); gst_tag_list_add_valist_values (data->list, mode, tag, var_args); }
/** * gst_tag_setter_get_tag_merge_mode: * @setter: a #GstTagSetter * * Queries the mode by which tags inside the setter are overwritten by tags * from events * * Returns: the merge mode used inside the element. */ GstTagMergeMode gst_tag_setter_get_tag_merge_mode (GstTagSetter * setter) { GstTagMergeMode mode; GstTagData *data; g_return_val_if_fail (GST_IS_TAG_SETTER (setter), FALSE); data = gst_tag_setter_get_data (setter); g_static_mutex_lock (&data->lock); mode = data->mode; g_static_mutex_unlock (&data->lock); return mode; }
/** * gst_tag_setter_merge_tags: * @setter: a #GstTagSetter * @list: a tag list to merge from * @mode: the mode to merge with * * Merges the given list into the setter's list using the given mode. */ void gst_tag_setter_merge_tags (GstTagSetter * setter, const GstTagList * list, GstTagMergeMode mode) { GstTagData *data; g_return_if_fail (GST_IS_TAG_SETTER (setter)); g_return_if_fail (GST_TAG_MODE_IS_VALID (mode)); g_return_if_fail (GST_IS_TAG_LIST (list)); data = gst_tag_setter_get_data (setter); if (data->list == NULL) { if (mode != GST_TAG_MERGE_KEEP_ALL) data->list = gst_tag_list_copy (list); } else { gst_tag_list_insert (data->list, list, mode); } }
/** * gst_tag_setter_add_tag_value: * @setter: a #GstTagSetter * @mode: the mode to use * @tag: tag to set * @value: GValue to set for the tag * * Adds the given tag / GValue pair on the setter using the given merge mode. * * Since: 0.10.24 */ void gst_tag_setter_add_tag_value (GstTagSetter * setter, GstTagMergeMode mode, const gchar * tag, const GValue * value) { GstTagData *data; g_return_if_fail (GST_IS_TAG_SETTER (setter)); g_return_if_fail (GST_TAG_MODE_IS_VALID (mode)); data = gst_tag_setter_get_data (setter); g_static_mutex_lock (&data->lock); if (!data->list) data->list = gst_tag_list_new (); gst_tag_list_add_value (data->list, mode, tag, value); g_static_mutex_unlock (&data->lock); }