cdio-cd-text-api.patch 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. From 649bd92cd2600719862ad5189899212409dd0a67 Mon Sep 17 00:00:00 2001
  2. From: Leon Merten Lohse <leon@green-side.de>
  3. Date: Thu, 03 May 2012 22:50:30 +0000
  4. Subject: cdio: compensate for libcdio's recent cd-text api changes
  5. https://bugzilla.gnome.org/show_bug.cgi?id=675112
  6. Conflicts:
  7. ext/cdio/gstcdiocddasrc.c
  8. ---
  9. diff --git a/ext/cdio/gstcdio.c b/ext/cdio/gstcdio.c
  10. index 2f58d18..483ebf5 100644
  11. --- a/ext/cdio/gstcdio.c
  12. +++ b/ext/cdio/gstcdio.c
  13. @@ -30,12 +30,16 @@
  14. GST_DEBUG_CATEGORY (gst_cdio_debug);
  15. void
  16. -gst_cdio_add_cdtext_field (GstObject * src, cdtext_t * cdtext,
  17. +gst_cdio_add_cdtext_field (GstObject * src, cdtext_t * cdtext, track_t track,
  18. cdtext_field_t field, const gchar * gst_tag, GstTagList ** p_tags)
  19. {
  20. const gchar *txt;
  21. +#if LIBCDIO_VERSION_NUM > 83
  22. + txt = cdtext_get_const (cdtext, field, track);
  23. +#else
  24. txt = cdtext_get_const (field, cdtext);
  25. +#endif
  26. if (txt == NULL || *txt == '\0') {
  27. GST_DEBUG_OBJECT (src, "empty CD-TEXT field %u (%s)", field, gst_tag);
  28. return;
  29. @@ -57,6 +61,12 @@ gst_cdio_add_cdtext_field (GstObject * src, cdtext_t * cdtext,
  30. }
  31. GstTagList *
  32. +#if LIBCDIO_VERSION_NUM > 83
  33. +gst_cdio_get_cdtext (GstObject * src, cdtext_t * t, track_t track)
  34. +{
  35. + GstTagList *tags = NULL;
  36. +
  37. +#else
  38. gst_cdio_get_cdtext (GstObject * src, CdIo * cdio, track_t track)
  39. {
  40. GstTagList *tags = NULL;
  41. @@ -67,14 +77,22 @@ gst_cdio_get_cdtext (GstObject * src, CdIo * cdio, track_t track)
  42. GST_DEBUG_OBJECT (src, "no CD-TEXT for track %u", track);
  43. return NULL;
  44. }
  45. +#endif
  46. - gst_cdio_add_cdtext_field (src, t, CDTEXT_PERFORMER, GST_TAG_ARTIST, &tags);
  47. - gst_cdio_add_cdtext_field (src, t, CDTEXT_TITLE, GST_TAG_TITLE, &tags);
  48. + gst_cdio_add_cdtext_field (src, t, track, CDTEXT_FIELD_PERFORMER,
  49. + GST_TAG_ARTIST, &tags);
  50. + gst_cdio_add_cdtext_field (src, t, track, CDTEXT_FIELD_TITLE, GST_TAG_TITLE,
  51. + &tags);
  52. return tags;
  53. }
  54. void
  55. +#if LIBCDIO_VERSION_NUM > 83
  56. +gst_cdio_add_cdtext_album_tags (GstObject * src, cdtext_t * t,
  57. + GstTagList * tags)
  58. +{
  59. +#else
  60. gst_cdio_add_cdtext_album_tags (GstObject * src, CdIo * cdio, GstTagList * tags)
  61. {
  62. cdtext_t *t;
  63. @@ -84,11 +102,14 @@ gst_cdio_add_cdtext_album_tags (GstObject * src, CdIo * cdio, GstTagList * tags)
  64. GST_DEBUG_OBJECT (src, "no CD-TEXT for album");
  65. return;
  66. }
  67. +#endif
  68. - /* FIXME: map CDTEXT_PERFORMER to GST_TAG_ALBUM_ARTIST once we have that */
  69. - gst_cdio_add_cdtext_field (src, t, CDTEXT_TITLE, GST_TAG_ALBUM, &tags);
  70. - gst_cdio_add_cdtext_field (src, t, CDTEXT_GENRE, GST_TAG_GENRE, &tags);
  71. -
  72. + gst_cdio_add_cdtext_field (src, t, 0, CDTEXT_FIELD_PERFORMER,
  73. + GST_TAG_ALBUM_ARTIST, &tags);
  74. + gst_cdio_add_cdtext_field (src, t, 0, CDTEXT_FIELD_TITLE, GST_TAG_ALBUM,
  75. + &tags);
  76. + gst_cdio_add_cdtext_field (src, t, 0, CDTEXT_FIELD_GENRE, GST_TAG_GENRE,
  77. + &tags);
  78. GST_DEBUG ("CD-TEXT album tags: %" GST_PTR_FORMAT, tags);
  79. }
  80. diff --git a/ext/cdio/gstcdio.h b/ext/cdio/gstcdio.h
  81. index ef31ed0..c6da580 100644
  82. --- a/ext/cdio/gstcdio.h
  83. +++ b/ext/cdio/gstcdio.h
  84. @@ -24,22 +24,38 @@
  85. #include <gst/gst.h>
  86. #include <cdio/cdio.h>
  87. #include <cdio/cdtext.h>
  88. +#include <cdio/version.h>
  89. +
  90. +#if LIBCDIO_VERSION_NUM <= 83
  91. + #define CDTEXT_FIELD_PERFORMER CDTEXT_PERFORMER
  92. + #define CDTEXT_FIELD_GENRE CDTEXT_GENRE
  93. + #define CDTEXT_FIELD_TITLE CDTEXT_TITLE
  94. +#endif
  95. GST_DEBUG_CATEGORY_EXTERN (gst_cdio_debug);
  96. #define GST_CAT_DEFAULT gst_cdio_debug
  97. void gst_cdio_add_cdtext_field (GstObject * src,
  98. cdtext_t * cdtext,
  99. + track_t track,
  100. cdtext_field_t field,
  101. const gchar * gst_tag,
  102. GstTagList ** p_tags);
  103. GstTagList * gst_cdio_get_cdtext (GstObject * src,
  104. +#if LIBCDIO_VERSION_NUM > 83
  105. + cdtext_t * t,
  106. +#else
  107. CdIo * cdio,
  108. +#endif
  109. track_t track);
  110. void gst_cdio_add_cdtext_album_tags (GstObject * src,
  111. +#if LIBCDIO_VERSION_NUM > 83
  112. + cdtext_t * t,
  113. +#else
  114. CdIo * cdio,
  115. +#endif
  116. GstTagList * tags);
  117. #endif /* __GST_CDIO_H__ */
  118. diff --git a/ext/cdio/gstcdiocddasrc.c b/ext/cdio/gstcdiocddasrc.c
  119. index 615a0c8..830839e 100644
  120. --- a/ext/cdio/gstcdiocddasrc.c
  121. +++ b/ext/cdio/gstcdiocddasrc.c
  122. @@ -206,6 +206,9 @@ gst_cdio_cdda_src_open (GstAudioCdSrc * audiocdsrc, const gchar * device)
  123. GstCdioCddaSrc *src;
  124. discmode_t discmode;
  125. gint first_track, num_tracks, i;
  126. +#if LIBCDIO_VERSION_NUM > 83
  127. + cdtext_t *cdtext;
  128. +#endif
  129. src = GST_CDIO_CDDA_SRC (audiocdsrc);
  130. @@ -232,8 +235,18 @@ gst_cdio_cdda_src_open (GstAudioCdSrc * audiocdsrc, const gchar * device)
  131. if (src->read_speed != -1)
  132. cdio_set_speed (src->cdio, src->read_speed);
  133. +#if LIBCDIO_VERSION_NUM > 83
  134. + cdtext = cdio_get_cdtext (src->cdio);
  135. +
  136. + if (NULL == cdtext)
  137. + GST_DEBUG_OBJECT (src, "no CD-TEXT on disc");
  138. + else
  139. + gst_cdio_add_cdtext_album_tags (GST_OBJECT_CAST (src), cdtext,
  140. + cddabasesrc->tags);
  141. +#else
  142. gst_cdio_add_cdtext_album_tags (GST_OBJECT_CAST (src), src->cdio,
  143. cddabasesrc->tags);
  144. +#endif
  145. GST_LOG_OBJECT (src, "%u tracks, first track: %d", num_tracks, first_track);
  146. @@ -250,8 +263,14 @@ gst_cdio_cdda_src_open (GstAudioCdSrc * audiocdsrc, const gchar * device)
  147. * the right thing here (for cddb id calculations etc. as well) */
  148. track.start = cdio_get_track_lsn (src->cdio, i + first_track);
  149. track.end = track.start + len_sectors - 1; /* -1? */
  150. +#if LIBCDIO_VERSION_NUM > 83
  151. + if (NULL != cdtext)
  152. + track.tags = gst_cdio_get_cdtext (GST_OBJECT (src), cdtext,
  153. + i + first_track);
  154. +#else
  155. track.tags = gst_cdio_get_cdtext (GST_OBJECT (src), src->cdio,
  156. i + first_track);
  157. +#endif
  158. gst_audio_cd_src_add_track (GST_AUDIO_CD_SRC (src), &track);
  159. }
  160. --
  161. cgit v0.9.0.2-2-gbebe