mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-17 11:45:25 +00:00
Use new tagging stuff to read and write flac metadata. Only handles vorbiscomment tags, and not (older) id3v2 tags.
Original commit message from CVS: Use new tagging stuff to read and write flac metadata. Only handles vorbiscomment tags, and not (older) id3v2 tags.
This commit is contained in:
parent
40ea47fa69
commit
c3328094e8
3 changed files with 30 additions and 8 deletions
|
@ -55,7 +55,6 @@ enum
|
|||
ARG_MIN_BITRATE,
|
||||
ARG_QUALITY,
|
||||
ARG_SERIAL,
|
||||
ARG_METADATA,
|
||||
ARG_MANAGED,
|
||||
ARG_LAST_MESSAGE,
|
||||
};
|
||||
|
|
|
@ -30,7 +30,12 @@ G_BEGIN_DECLS
|
|||
|
||||
G_CONST_RETURN gchar * gst_tag_from_vorbis_tag (const gchar * vorbis_tag);
|
||||
G_CONST_RETURN gchar * gst_tag_to_vorbis_tag (const gchar * gst_tag);
|
||||
void gst_vorbis_tag_add (GstTagList *list, const gchar *tag, const gchar *value);
|
||||
void gst_vorbis_tag_add (GstTagList * list,
|
||||
const gchar * tag,
|
||||
const gchar * value);
|
||||
|
||||
GList * gst_tag_to_vorbis_comments (const GstTagList * list,
|
||||
const gchar * tag);
|
||||
|
||||
/* functions to convert GstBuffers with vorbiscomment contents to GstTagLists and back */
|
||||
GstTagList * gst_tag_list_from_vorbiscomment_buffer (const GstBuffer * buffer,
|
||||
|
|
|
@ -383,15 +383,16 @@ typedef struct {
|
|||
guint data_count;
|
||||
GList *entries;
|
||||
} MyForEach;
|
||||
static void
|
||||
write_one_tag (const GstTagList *list, const gchar *tag, gpointer user_data)
|
||||
|
||||
GList *
|
||||
gst_tag_to_vorbis_comments (const GstTagList *list, const gchar *tag)
|
||||
{
|
||||
gchar *result;
|
||||
GList *l = NULL;
|
||||
guint i;
|
||||
const gchar *vorbis_tag = gst_tag_to_vorbis_tag (tag);
|
||||
MyForEach *data = (MyForEach *) user_data;
|
||||
|
||||
if (!vorbis_tag) return;
|
||||
if (!vorbis_tag) return NULL;
|
||||
for (i = 0; i < gst_tag_list_get_tag_size (list, tag); i++) {
|
||||
switch (gst_tag_get_type (tag)) {
|
||||
case G_TYPE_UINT:
|
||||
|
@ -420,11 +421,28 @@ write_one_tag (const GstTagList *list, const gchar *tag, gpointer user_data)
|
|||
}
|
||||
default:
|
||||
GST_DEBUG ("Couldn't write tag %s", tag);
|
||||
return;
|
||||
continue;
|
||||
}
|
||||
l = g_list_prepend (l, result);
|
||||
}
|
||||
|
||||
return g_list_reverse (l);
|
||||
}
|
||||
|
||||
static void
|
||||
write_one_tag (const GstTagList *list, const gchar *tag, gpointer user_data)
|
||||
{
|
||||
MyForEach *data = (MyForEach *) user_data;
|
||||
GList *comments;
|
||||
GList *it;
|
||||
|
||||
comments = gst_tag_to_vorbis_comments (list, tag);
|
||||
|
||||
for (it = comments; it != NULL; it = it->next) {
|
||||
gchar *result = it->data;
|
||||
data->count ++;
|
||||
data->data_count += strlen (result);
|
||||
data->entries = g_list_prepend (data->entries, result);
|
||||
data->entries = g_list_prepend (data->entries, result);
|
||||
}
|
||||
}
|
||||
/**
|
||||
|
|
Loading…
Reference in a new issue