Ejemplo n.º 1
0
/**
 * 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;
}
Ejemplo n.º 2
0
/**
 * 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;
}
Ejemplo n.º 3
0
/**
 * 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;
}
Ejemplo n.º 4
0
/**
 * 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);
}
Ejemplo n.º 6
0
/**
 * 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;
}
Ejemplo n.º 8
0
/**
 * 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);
}