summaryrefslogtreecommitdiff
path: root/ext/cdio
diff options
context:
space:
mode:
authorBenjamin Kampmann <benjamin@fluendo.com>2008-06-09 20:02:05 +0000
committerTim-Philipp Müller <tim@centricular.net>2008-06-09 20:02:05 +0000
commitc0da5597153988b62099b78503f0529e554e76e7 (patch)
tree34e04320c73831f57459c7b24bba7b046c191202 /ext/cdio
parent9838809d933b1de8ce706605a33337af33be62ca (diff)
downloadgstreamer-plugins-ugly-c0da5597153988b62099b78503f0529e554e76e7.tar.gz
ext/cdio/: Also extract album title and album genre from CD-TEXT if available (#537021).RELEASE-0_10_10_ROOTRELEASE-0_10_10_BRANCH
Original commit message from CVS: Patch by: Benjamin Kampmann <benjamin at fluendo dot com> * ext/cdio/gstcdio.c: (gst_cdio_get_cdtext), (gst_cdio_add_cdtext_album_tags): * ext/cdio/gstcdio.h: * ext/cdio/gstcdiocddasrc.c: (gst_cdio_cdda_src_open): Also extract album title and album genre from CD-TEXT if available (#537021).
Diffstat (limited to 'ext/cdio')
-rw-r--r--ext/cdio/gstcdio.c18
-rw-r--r--ext/cdio/gstcdio.h4
-rw-r--r--ext/cdio/gstcdiocddasrc.c3
3 files changed, 25 insertions, 0 deletions
diff --git a/ext/cdio/gstcdio.c b/ext/cdio/gstcdio.c
index 1534bda3..a18d350f 100644
--- a/ext/cdio/gstcdio.c
+++ b/ext/cdio/gstcdio.c
@@ -74,6 +74,24 @@ gst_cdio_get_cdtext (GstObject * src, CdIo * cdio, track_t track)
return tags;
}
+void
+gst_cdio_add_cdtext_album_tags (GstObject * src, CdIo * cdio, GstTagList * tags)
+{
+ cdtext_t *t;
+
+ t = cdio_get_cdtext (cdio, 0);
+ if (t == NULL) {
+ GST_DEBUG_OBJECT (src, "no CD-TEXT for album %u");
+ return;
+ }
+
+ /* FIXME: map CDTEXT_PERFORMER to GST_TAG_ALBUM_ARTIST once we have that */
+ gst_cdio_add_cdtext_field (src, t, CDTEXT_TITLE, GST_TAG_ALBUM, &tags);
+ gst_cdio_add_cdtext_field (src, t, CDTEXT_GENRE, GST_TAG_GENRE, &tags);
+
+ GST_DEBUG ("CD-TEXT album tags: %" GST_PTR_FORMAT, tags);
+}
+
static void
gst_cdio_log_handler (cdio_log_level_t level, const char *msg)
{
diff --git a/ext/cdio/gstcdio.h b/ext/cdio/gstcdio.h
index cbef7d93..ef31ed0f 100644
--- a/ext/cdio/gstcdio.h
+++ b/ext/cdio/gstcdio.h
@@ -38,5 +38,9 @@ GstTagList * gst_cdio_get_cdtext (GstObject * src,
CdIo * cdio,
track_t track);
+void gst_cdio_add_cdtext_album_tags (GstObject * src,
+ CdIo * cdio,
+ GstTagList * tags);
+
#endif /* __GST_CDIO_H__ */
diff --git a/ext/cdio/gstcdiocddasrc.c b/ext/cdio/gstcdiocddasrc.c
index d85e792d..d4a6a54d 100644
--- a/ext/cdio/gstcdiocddasrc.c
+++ b/ext/cdio/gstcdiocddasrc.c
@@ -248,6 +248,9 @@ gst_cdio_cdda_src_open (GstCddaBaseSrc * cddabasesrc, const gchar * device)
if (src->read_speed != -1)
cdio_set_speed (src->cdio, src->read_speed);
+ gst_cdio_add_cdtext_album_tags (GST_OBJECT_CAST (src), src->cdio,
+ cddabasesrc->tags);
+
GST_LOG_OBJECT (src, "%u tracks, first track: %d", num_tracks, first_track);
for (i = 0; i < num_tracks; ++i) {