123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- From 649bd92cd2600719862ad5189899212409dd0a67 Mon Sep 17 00:00:00 2001
- From: Leon Merten Lohse <leon@green-side.de>
- Date: Thu, 03 May 2012 22:50:30 +0000
- Subject: cdio: compensate for libcdio's recent cd-text api changes
- https://bugzilla.gnome.org/show_bug.cgi?id=675112
- Conflicts:
- ext/cdio/gstcdiocddasrc.c
- ---
- diff --git a/ext/cdio/gstcdio.c b/ext/cdio/gstcdio.c
- index 2f58d18..483ebf5 100644
- --- a/ext/cdio/gstcdio.c
- +++ b/ext/cdio/gstcdio.c
- @@ -30,12 +30,16 @@
- GST_DEBUG_CATEGORY (gst_cdio_debug);
-
- void
- -gst_cdio_add_cdtext_field (GstObject * src, cdtext_t * cdtext,
- +gst_cdio_add_cdtext_field (GstObject * src, cdtext_t * cdtext, track_t track,
- cdtext_field_t field, const gchar * gst_tag, GstTagList ** p_tags)
- {
- const gchar *txt;
-
- +#if LIBCDIO_VERSION_NUM > 83
- + txt = cdtext_get_const (cdtext, field, track);
- +#else
- txt = cdtext_get_const (field, cdtext);
- +#endif
- if (txt == NULL || *txt == '\0') {
- GST_DEBUG_OBJECT (src, "empty CD-TEXT field %u (%s)", field, gst_tag);
- return;
- @@ -57,6 +61,12 @@ gst_cdio_add_cdtext_field (GstObject * src, cdtext_t * cdtext,
- }
-
- GstTagList *
- +#if LIBCDIO_VERSION_NUM > 83
- +gst_cdio_get_cdtext (GstObject * src, cdtext_t * t, track_t track)
- +{
- + GstTagList *tags = NULL;
- +
- +#else
- gst_cdio_get_cdtext (GstObject * src, CdIo * cdio, track_t track)
- {
- GstTagList *tags = NULL;
- @@ -67,14 +77,22 @@ gst_cdio_get_cdtext (GstObject * src, CdIo * cdio, track_t track)
- GST_DEBUG_OBJECT (src, "no CD-TEXT for track %u", track);
- return NULL;
- }
- +#endif
-
- - gst_cdio_add_cdtext_field (src, t, CDTEXT_PERFORMER, GST_TAG_ARTIST, &tags);
- - gst_cdio_add_cdtext_field (src, t, CDTEXT_TITLE, GST_TAG_TITLE, &tags);
- + gst_cdio_add_cdtext_field (src, t, track, CDTEXT_FIELD_PERFORMER,
- + GST_TAG_ARTIST, &tags);
- + gst_cdio_add_cdtext_field (src, t, track, CDTEXT_FIELD_TITLE, GST_TAG_TITLE,
- + &tags);
-
- return tags;
- }
-
- void
- +#if LIBCDIO_VERSION_NUM > 83
- +gst_cdio_add_cdtext_album_tags (GstObject * src, cdtext_t * t,
- + GstTagList * tags)
- +{
- +#else
- gst_cdio_add_cdtext_album_tags (GstObject * src, CdIo * cdio, GstTagList * tags)
- {
- cdtext_t *t;
- @@ -84,11 +102,14 @@ gst_cdio_add_cdtext_album_tags (GstObject * src, CdIo * cdio, GstTagList * tags)
- GST_DEBUG_OBJECT (src, "no CD-TEXT for album");
- return;
- }
- +#endif
-
- - /* 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_cdio_add_cdtext_field (src, t, 0, CDTEXT_FIELD_PERFORMER,
- + GST_TAG_ALBUM_ARTIST, &tags);
- + gst_cdio_add_cdtext_field (src, t, 0, CDTEXT_FIELD_TITLE, GST_TAG_ALBUM,
- + &tags);
- + gst_cdio_add_cdtext_field (src, t, 0, CDTEXT_FIELD_GENRE, GST_TAG_GENRE,
- + &tags);
- GST_DEBUG ("CD-TEXT album tags: %" GST_PTR_FORMAT, tags);
- }
-
- diff --git a/ext/cdio/gstcdio.h b/ext/cdio/gstcdio.h
- index ef31ed0..c6da580 100644
- --- a/ext/cdio/gstcdio.h
- +++ b/ext/cdio/gstcdio.h
- @@ -24,22 +24,38 @@
- #include <gst/gst.h>
- #include <cdio/cdio.h>
- #include <cdio/cdtext.h>
- +#include <cdio/version.h>
- +
- +#if LIBCDIO_VERSION_NUM <= 83
- + #define CDTEXT_FIELD_PERFORMER CDTEXT_PERFORMER
- + #define CDTEXT_FIELD_GENRE CDTEXT_GENRE
- + #define CDTEXT_FIELD_TITLE CDTEXT_TITLE
- +#endif
-
- GST_DEBUG_CATEGORY_EXTERN (gst_cdio_debug);
- #define GST_CAT_DEFAULT gst_cdio_debug
-
- void gst_cdio_add_cdtext_field (GstObject * src,
- cdtext_t * cdtext,
- + track_t track,
- cdtext_field_t field,
- const gchar * gst_tag,
- GstTagList ** p_tags);
-
- GstTagList * gst_cdio_get_cdtext (GstObject * src,
- +#if LIBCDIO_VERSION_NUM > 83
- + cdtext_t * t,
- +#else
- CdIo * cdio,
- +#endif
- track_t track);
-
- void gst_cdio_add_cdtext_album_tags (GstObject * src,
- +#if LIBCDIO_VERSION_NUM > 83
- + cdtext_t * t,
- +#else
- CdIo * cdio,
- +#endif
- GstTagList * tags);
-
- #endif /* __GST_CDIO_H__ */
- diff --git a/ext/cdio/gstcdiocddasrc.c b/ext/cdio/gstcdiocddasrc.c
- index 615a0c8..830839e 100644
- --- a/ext/cdio/gstcdiocddasrc.c
- +++ b/ext/cdio/gstcdiocddasrc.c
- @@ -206,6 +206,9 @@ gst_cdio_cdda_src_open (GstAudioCdSrc * audiocdsrc, const gchar * device)
- GstCdioCddaSrc *src;
- discmode_t discmode;
- gint first_track, num_tracks, i;
- +#if LIBCDIO_VERSION_NUM > 83
- + cdtext_t *cdtext;
- +#endif
-
- src = GST_CDIO_CDDA_SRC (audiocdsrc);
-
- @@ -232,8 +235,18 @@ gst_cdio_cdda_src_open (GstAudioCdSrc * audiocdsrc, const gchar * device)
- if (src->read_speed != -1)
- cdio_set_speed (src->cdio, src->read_speed);
-
- +#if LIBCDIO_VERSION_NUM > 83
- + cdtext = cdio_get_cdtext (src->cdio);
- +
- + if (NULL == cdtext)
- + GST_DEBUG_OBJECT (src, "no CD-TEXT on disc");
- + else
- + gst_cdio_add_cdtext_album_tags (GST_OBJECT_CAST (src), cdtext,
- + cddabasesrc->tags);
- +#else
- gst_cdio_add_cdtext_album_tags (GST_OBJECT_CAST (src), src->cdio,
- cddabasesrc->tags);
- +#endif
-
- GST_LOG_OBJECT (src, "%u tracks, first track: %d", num_tracks, first_track);
-
- @@ -250,8 +263,14 @@ gst_cdio_cdda_src_open (GstAudioCdSrc * audiocdsrc, const gchar * device)
- * the right thing here (for cddb id calculations etc. as well) */
- track.start = cdio_get_track_lsn (src->cdio, i + first_track);
- track.end = track.start + len_sectors - 1; /* -1? */
- +#if LIBCDIO_VERSION_NUM > 83
- + if (NULL != cdtext)
- + track.tags = gst_cdio_get_cdtext (GST_OBJECT (src), cdtext,
- + i + first_track);
- +#else
- track.tags = gst_cdio_get_cdtext (GST_OBJECT (src), src->cdio,
- i + first_track);
- +#endif
-
- gst_audio_cd_src_add_track (GST_AUDIO_CD_SRC (src), &track);
- }
- --
- cgit v0.9.0.2-2-gbebe
|