mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 04:36:20 +00:00
cdio: compensate for libcdio's recent cd-text api changes
https://bugzilla.gnome.org/show_bug.cgi?id=675112 Conflicts: ext/cdio/gstcdiocddasrc.c
This commit is contained in:
parent
ccc59fc924
commit
649bd92cd2
3 changed files with 63 additions and 7 deletions
|
@ -30,12 +30,16 @@
|
||||||
GST_DEBUG_CATEGORY (gst_cdio_debug);
|
GST_DEBUG_CATEGORY (gst_cdio_debug);
|
||||||
|
|
||||||
void
|
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)
|
cdtext_field_t field, const gchar * gst_tag, GstTagList ** p_tags)
|
||||||
{
|
{
|
||||||
const gchar *txt;
|
const gchar *txt;
|
||||||
|
|
||||||
|
#if LIBCDIO_VERSION_NUM > 83
|
||||||
|
txt = cdtext_get_const (cdtext, field, track);
|
||||||
|
#else
|
||||||
txt = cdtext_get_const (field, cdtext);
|
txt = cdtext_get_const (field, cdtext);
|
||||||
|
#endif
|
||||||
if (txt == NULL || *txt == '\0') {
|
if (txt == NULL || *txt == '\0') {
|
||||||
GST_DEBUG_OBJECT (src, "empty CD-TEXT field %u (%s)", field, gst_tag);
|
GST_DEBUG_OBJECT (src, "empty CD-TEXT field %u (%s)", field, gst_tag);
|
||||||
return;
|
return;
|
||||||
|
@ -57,6 +61,12 @@ gst_cdio_add_cdtext_field (GstObject * src, cdtext_t * cdtext,
|
||||||
}
|
}
|
||||||
|
|
||||||
GstTagList *
|
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)
|
gst_cdio_get_cdtext (GstObject * src, CdIo * cdio, track_t track)
|
||||||
{
|
{
|
||||||
GstTagList *tags = NULL;
|
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);
|
GST_DEBUG_OBJECT (src, "no CD-TEXT for track %u", track);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
gst_cdio_add_cdtext_field (src, t, CDTEXT_PERFORMER, GST_TAG_ARTIST, &tags);
|
gst_cdio_add_cdtext_field (src, t, track, CDTEXT_FIELD_PERFORMER,
|
||||||
gst_cdio_add_cdtext_field (src, t, CDTEXT_TITLE, GST_TAG_TITLE, &tags);
|
GST_TAG_ARTIST, &tags);
|
||||||
|
gst_cdio_add_cdtext_field (src, t, track, CDTEXT_FIELD_TITLE, GST_TAG_TITLE,
|
||||||
|
&tags);
|
||||||
|
|
||||||
return tags;
|
return tags;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
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)
|
gst_cdio_add_cdtext_album_tags (GstObject * src, CdIo * cdio, GstTagList * tags)
|
||||||
{
|
{
|
||||||
cdtext_t *t;
|
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");
|
GST_DEBUG_OBJECT (src, "no CD-TEXT for album");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* FIXME: map CDTEXT_PERFORMER to GST_TAG_ALBUM_ARTIST once we have that */
|
gst_cdio_add_cdtext_field (src, t, 0, CDTEXT_FIELD_PERFORMER,
|
||||||
gst_cdio_add_cdtext_field (src, t, CDTEXT_TITLE, GST_TAG_ALBUM, &tags);
|
GST_TAG_ALBUM_ARTIST, &tags);
|
||||||
gst_cdio_add_cdtext_field (src, t, CDTEXT_GENRE, GST_TAG_GENRE, &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);
|
GST_DEBUG ("CD-TEXT album tags: %" GST_PTR_FORMAT, tags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,22 +24,38 @@
|
||||||
#include <gst/gst.h>
|
#include <gst/gst.h>
|
||||||
#include <cdio/cdio.h>
|
#include <cdio/cdio.h>
|
||||||
#include <cdio/cdtext.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);
|
GST_DEBUG_CATEGORY_EXTERN (gst_cdio_debug);
|
||||||
#define GST_CAT_DEFAULT gst_cdio_debug
|
#define GST_CAT_DEFAULT gst_cdio_debug
|
||||||
|
|
||||||
void gst_cdio_add_cdtext_field (GstObject * src,
|
void gst_cdio_add_cdtext_field (GstObject * src,
|
||||||
cdtext_t * cdtext,
|
cdtext_t * cdtext,
|
||||||
|
track_t track,
|
||||||
cdtext_field_t field,
|
cdtext_field_t field,
|
||||||
const gchar * gst_tag,
|
const gchar * gst_tag,
|
||||||
GstTagList ** p_tags);
|
GstTagList ** p_tags);
|
||||||
|
|
||||||
GstTagList * gst_cdio_get_cdtext (GstObject * src,
|
GstTagList * gst_cdio_get_cdtext (GstObject * src,
|
||||||
|
#if LIBCDIO_VERSION_NUM > 83
|
||||||
|
cdtext_t * t,
|
||||||
|
#else
|
||||||
CdIo * cdio,
|
CdIo * cdio,
|
||||||
|
#endif
|
||||||
track_t track);
|
track_t track);
|
||||||
|
|
||||||
void gst_cdio_add_cdtext_album_tags (GstObject * src,
|
void gst_cdio_add_cdtext_album_tags (GstObject * src,
|
||||||
|
#if LIBCDIO_VERSION_NUM > 83
|
||||||
|
cdtext_t * t,
|
||||||
|
#else
|
||||||
CdIo * cdio,
|
CdIo * cdio,
|
||||||
|
#endif
|
||||||
GstTagList * tags);
|
GstTagList * tags);
|
||||||
|
|
||||||
#endif /* __GST_CDIO_H__ */
|
#endif /* __GST_CDIO_H__ */
|
||||||
|
|
|
@ -206,6 +206,9 @@ gst_cdio_cdda_src_open (GstAudioCdSrc * audiocdsrc, const gchar * device)
|
||||||
GstCdioCddaSrc *src;
|
GstCdioCddaSrc *src;
|
||||||
discmode_t discmode;
|
discmode_t discmode;
|
||||||
gint first_track, num_tracks, i;
|
gint first_track, num_tracks, i;
|
||||||
|
#if LIBCDIO_VERSION_NUM > 83
|
||||||
|
cdtext_t *cdtext;
|
||||||
|
#endif
|
||||||
|
|
||||||
src = GST_CDIO_CDDA_SRC (audiocdsrc);
|
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)
|
if (src->read_speed != -1)
|
||||||
cdio_set_speed (src->cdio, src->read_speed);
|
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,
|
||||||
|
audiocdsrc->tags);
|
||||||
|
#else
|
||||||
gst_cdio_add_cdtext_album_tags (GST_OBJECT_CAST (src), src->cdio,
|
gst_cdio_add_cdtext_album_tags (GST_OBJECT_CAST (src), src->cdio,
|
||||||
audiocdsrc->tags);
|
audiocdsrc->tags);
|
||||||
|
#endif
|
||||||
|
|
||||||
GST_LOG_OBJECT (src, "%u tracks, first track: %d", num_tracks, first_track);
|
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) */
|
* the right thing here (for cddb id calculations etc. as well) */
|
||||||
track.start = cdio_get_track_lsn (src->cdio, i + first_track);
|
track.start = cdio_get_track_lsn (src->cdio, i + first_track);
|
||||||
track.end = track.start + len_sectors - 1; /* -1? */
|
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,
|
track.tags = gst_cdio_get_cdtext (GST_OBJECT (src), src->cdio,
|
||||||
i + first_track);
|
i + first_track);
|
||||||
|
#endif
|
||||||
|
|
||||||
gst_audio_cd_src_add_track (GST_AUDIO_CD_SRC (src), &track);
|
gst_audio_cd_src_add_track (GST_AUDIO_CD_SRC (src), &track);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue