diff --git a/ChangeLog b/ChangeLog index 9929e36dcd..37dc76b4a2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,25 @@ +2006-09-23 Tim-Philipp Müller + + * docs/libs/gst-plugins-base-libs-sections.txt: + * gst-libs/gst/cdda/Makefile.am: + * gst-libs/gst/cdda/gstcddabasesrc.c: + (gst_cdda_base_src_base_init): + * gst-libs/gst/cdda/gstcddabasesrc.h: + * gst-libs/gst/tag/tag.h: + * gst-libs/gst/tag/tags.c: (gst_tag_register_tags_internal), + (gst_tag_register_musicbrainz_tags): + Move GST_TAG_CDDA_* tags into libgsttag and make libgstcddabasesrc + depend on libgsttag. This is required so we can extract/read tags like + DISCID without depending on libgstcddabasesrc (which used to register + them). + + * gst-libs/gst/tag/gstvorbistag.c: + Add vorbiscomment mapping for CDDB_DISCID and MUSICBRAINZ_DISCID + tags (also see #347848). + + * ext/vorbis/vorbisenc.c: (gst_vorbis_enc_metadata_set1): + Log vorbis comments we are actually writing. Const-ify array. + 2006-09-23 Wim Taymans * gst/playback/gstplaybasebin.c: (gen_preroll_element): diff --git a/docs/libs/gst-plugins-base-libs-sections.txt b/docs/libs/gst-plugins-base-libs-sections.txt index ab128393c0..bf525506c8 100644 --- a/docs/libs/gst-plugins-base-libs-sections.txt +++ b/docs/libs/gst-plugins-base-libs-sections.txt @@ -215,10 +215,6 @@ GstCddaBaseSrcClass GstCddaBaseSrcTrack GstCddaBaseSrcMode gst_cdda_base_src_add_track -GST_TAG_CDDA_CDDB_DISCID -GST_TAG_CDDA_CDDB_DISCID_FULL -GST_TAG_CDDA_MUSICBRAINZ_DISCID -GST_TAG_CDDA_MUSICBRAINZ_DISCID_FULL GST_CDDA_BASE_SRC GST_CDDA_BASE_SRC_CLASS @@ -851,6 +847,10 @@ GST_TAG_MUSICBRAINZ_ALBUMID GST_TAG_MUSICBRAINZ_ALBUMARTISTID GST_TAG_MUSICBRAINZ_TRMID GST_TAG_MUSICBRAINZ_SORTNAME +GST_TAG_CDDA_CDDB_DISCID +GST_TAG_CDDA_CDDB_DISCID_FULL +GST_TAG_CDDA_MUSICBRAINZ_DISCID +GST_TAG_CDDA_MUSICBRAINZ_DISCID_FULL GST_TAG_CMML_CLIP GST_TAG_CMML_HEAD GST_TAG_CMML_STREAM diff --git a/ext/vorbis/vorbisenc.c b/ext/vorbis/vorbisenc.c index 5fc78f379e..66f26f9d58 100644 --- a/ext/vorbis/vorbisenc.c +++ b/ext/vorbis/vorbisenc.c @@ -237,7 +237,7 @@ gst_vorbis_enc_dispose (GObject * object) G_OBJECT_CLASS (parent_class)->dispose (object); } -static GstAudioChannelPosition vorbischannelpositions[][6] = { +static const GstAudioChannelPosition vorbischannelpositions[][6] = { { /* Mono */ GST_AUDIO_CHANNEL_POSITION_FRONT_MONO}, { /* Stereo */ @@ -637,6 +637,7 @@ gst_vorbis_enc_metadata_set1 (const GstTagList * list, const gchar * tag, const gchar *vc_string = (const gchar *) l->data; gchar *key = NULL, *val = NULL; + GST_LOG_OBJECT (vorbisenc, "vorbis comment: %s", vc_string); if (gst_tag_parse_extended_comment (vc_string, &key, NULL, &val, TRUE)) { vorbis_comment_add_tag (&enc->vc, key, val); g_free (key); diff --git a/gst-libs/gst/cdda/Makefile.am b/gst-libs/gst/cdda/Makefile.am index c70c2bffa6..9f03e79772 100644 --- a/gst-libs/gst/cdda/Makefile.am +++ b/gst-libs/gst/cdda/Makefile.am @@ -11,6 +11,7 @@ libgstcdda_@GST_MAJORMINOR@includedir = $(includedir)/gstreamer-@GST_MAJORMINOR@ libgstcdda_@GST_MAJORMINOR@include_HEADERS = \ gstcddabasesrc.h -libgstcdda_@GST_MAJORMINOR@_la_LIBADD = $(GST_LIBS) $(GST_BASE_LIBS) +libgstcdda_@GST_MAJORMINOR@_la_LIBADD = $(GST_LIBS) $(GST_BASE_LIBS) \ + $(top_builddir)/gst-libs/gst/tag/libgsttag-@GST_MAJORMINOR@.la libgstcdda_@GST_MAJORMINOR@_la_CFLAGS = $(GST_CFLAGS) $(GST_BASE_CFLAGS) libgstcdda_@GST_MAJORMINOR@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS) $(GST_LT_LDFLAGS) diff --git a/gst-libs/gst/cdda/gstcddabasesrc.c b/gst-libs/gst/cdda/gstcddabasesrc.c index bbf6f49eb4..91c0ff0b78 100644 --- a/gst-libs/gst/cdda/gstcddabasesrc.c +++ b/gst-libs/gst/cdda/gstcddabasesrc.c @@ -70,6 +70,14 @@ * setting a new cdda://n+1 URI on playbin (as setting a new URI on playbin * involves closing and re-opening the CD device, which is much much slower). * + * Tags and meta-information + * + * CDDA sources will automatically emit a number of tags, details about which + * can be found in the libgsttag documentation. Those tags are: + * #GST_TAG_CDDA_CDDB_DISCID, #GST_TAG_CDDA_CDDB_DISCID_FULL, + * #GST_TAG_CDDA_MUSICBRAINZ_DISCID, #GST_TAG_CDDA_MUSICBRAINZ_DISCID_FULL, + * among others. + * * */ @@ -182,23 +190,8 @@ gst_cdda_base_src_base_init (gpointer g_class) track_format = gst_format_register ("track", "CD track"); sector_format = gst_format_register ("sector", "CD sector"); - /* tags */ - gst_tag_register (GST_TAG_CDDA_CDDB_DISCID, GST_TAG_FLAG_META, - G_TYPE_STRING, "discid", "CDDB discid for metadata retrieval", - gst_tag_merge_use_first); - - gst_tag_register (GST_TAG_CDDA_CDDB_DISCID_FULL, GST_TAG_FLAG_META, - G_TYPE_STRING, "discid full", - "CDDB discid for metadata retrieval (full)", gst_tag_merge_use_first); - - gst_tag_register (GST_TAG_CDDA_MUSICBRAINZ_DISCID, GST_TAG_FLAG_META, - G_TYPE_STRING, "musicbrainz-discid", - "Musicbrainz discid for metadata retrieval", gst_tag_merge_use_first); - - gst_tag_register (GST_TAG_CDDA_MUSICBRAINZ_DISCID_FULL, GST_TAG_FLAG_META, - G_TYPE_STRING, "musicbrainz-discid-full", - "Musicbrainz discid for metadata retrieval (full)", - gst_tag_merge_use_first); + /* register CDDA tags */ + gst_tag_register_musicbrainz_tags (); #if 0 ///// FIXME: what type to use here? /////// diff --git a/gst-libs/gst/cdda/gstcddabasesrc.h b/gst-libs/gst/cdda/gstcddabasesrc.h index 7129082b4d..93f4a7c23c 100644 --- a/gst-libs/gst/cdda/gstcddabasesrc.h +++ b/gst-libs/gst/cdda/gstcddabasesrc.h @@ -24,6 +24,10 @@ #include #include +/* must include this for backwards-compatibility so the + * GST_TAG_CDDA_* defines are included. Remove in 0.11 */ +#include + G_BEGIN_DECLS #define GST_TYPE_CDDA_BASE_SRC (gst_cdda_base_src_get_type()) @@ -134,37 +138,6 @@ GType gst_cdda_base_src_get_type (void); gboolean gst_cdda_base_src_add_track (GstCddaBaseSrc * src, GstCddaBaseSrcTrack * track); - -/* tags */ - -/** - * GST_TAG_CDDA_CDDB_DISCID: - * - * CDDB disc id in its short form (e.g. 'aa063d0f') - */ -#define GST_TAG_CDDA_CDDB_DISCID "discid" - -/** - * GST_TAG_CDDA_CDDB_DISCID_FULL: - * - * CDDB disc id including all details - */ -#define GST_TAG_CDDA_CDDB_DISCID_FULL "discid-full" - -/** - * GST_TAG_CDDA_MUSICBRAINZ_DISCID: - * - * Musicbrainz disc id (e.g. 'ahg7JUcfR3vCYBphSDIogOOWrr0-') - */ -#define GST_TAG_CDDA_MUSICBRAINZ_DISCID "musicbrainz-discid" - -/** - * GST_TAG_CDDA_MUSICBRAINZ_DISCID_FULL: - * - * Musicbrainz disc id details - */ -#define GST_TAG_CDDA_MUSICBRAINZ_DISCID_FULL "musicbrainz-discid-full" - #if 0 /* * GST_TAG_CDDA_TRACK_TAGS: diff --git a/gst-libs/gst/tag/gstvorbistag.c b/gst-libs/gst/tag/gstvorbistag.c index 0382192aad..547331564f 100644 --- a/gst-libs/gst/tag/gstvorbistag.c +++ b/gst-libs/gst/tag/gstvorbistag.c @@ -71,6 +71,8 @@ static const GstTagEntryMatch tag_matches[] = { {GST_TAG_MUSICBRAINZ_TRMID, "MUSICBRAINZ_TRMID"}, {GST_TAG_MUSICBRAINZ_SORTNAME, "MUSICBRAINZ_SORTNAME"}, {GST_TAG_LANGUAGE_CODE, "LANGUAGE"}, + {GST_TAG_CDDA_MUSICBRAINZ_DISCID, "MUSICBRAINZ_DISCID"}, + {GST_TAG_CDDA_CDDB_DISCID, "DISCID"}, {NULL, NULL} }; diff --git a/gst-libs/gst/tag/tag.h b/gst-libs/gst/tag/tag.h index fa80e60b95..e9f260ce13 100644 --- a/gst-libs/gst/tag/tag.h +++ b/gst-libs/gst/tag/tag.h @@ -83,6 +83,37 @@ G_BEGIN_DECLS */ #define GST_TAG_CMML_CLIP "cmml-clip" +/* CDDA tags */ + +/** + * GST_TAG_CDDA_CDDB_DISCID: + * + * CDDB disc id in its short form (e.g. 'aa063d0f') + */ +#define GST_TAG_CDDA_CDDB_DISCID "discid" + +/** + * GST_TAG_CDDA_CDDB_DISCID_FULL: + * + * CDDB disc id including all details + */ +#define GST_TAG_CDDA_CDDB_DISCID_FULL "discid-full" + +/** + * GST_TAG_CDDA_MUSICBRAINZ_DISCID: + * + * Musicbrainz disc id (e.g. 'ahg7JUcfR3vCYBphSDIogOOWrr0-') + */ +#define GST_TAG_CDDA_MUSICBRAINZ_DISCID "musicbrainz-discid" + +/** + * GST_TAG_CDDA_MUSICBRAINZ_DISCID_FULL: + * + * Musicbrainz disc id details + */ +#define GST_TAG_CDDA_MUSICBRAINZ_DISCID_FULL "musicbrainz-discid-full" + + /* additional information for image tags */ diff --git a/gst-libs/gst/tag/tags.c b/gst-libs/gst/tag/tags.c index 26331bf0e3..1e4cc47bf9 100644 --- a/gst-libs/gst/tag/tags.c +++ b/gst-libs/gst/tag/tags.c @@ -44,7 +44,7 @@ static gpointer -gst_tag_register_musicbrainz_tags_internal (gpointer unused) +gst_tag_register_tags_internal (gpointer unused) { #ifdef ENABLE_NLS GST_DEBUG ("binding text domain %s to locale dir %s", GETTEXT_PACKAGE, @@ -52,6 +52,7 @@ gst_tag_register_musicbrainz_tags_internal (gpointer unused) bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); #endif + /* musicbrainz tags */ gst_tag_register (GST_TAG_MUSICBRAINZ_TRACKID, GST_TAG_FLAG_META, G_TYPE_STRING, _("track ID"), _("MusicBrainz track ID"), NULL); gst_tag_register (GST_TAG_MUSICBRAINZ_ARTISTID, GST_TAG_FLAG_META, @@ -67,9 +68,28 @@ gst_tag_register_musicbrainz_tags_internal (gpointer unused) G_TYPE_STRING, _("artist sortname"), _("MusicBrainz artist sortname"), NULL); + /* CDDA tags */ + gst_tag_register (GST_TAG_CDDA_CDDB_DISCID, GST_TAG_FLAG_META, + G_TYPE_STRING, "discid", "CDDB discid for metadata retrieval", + gst_tag_merge_use_first); + + gst_tag_register (GST_TAG_CDDA_CDDB_DISCID_FULL, GST_TAG_FLAG_META, + G_TYPE_STRING, "discid full", + "CDDB discid for metadata retrieval (full)", gst_tag_merge_use_first); + + gst_tag_register (GST_TAG_CDDA_MUSICBRAINZ_DISCID, GST_TAG_FLAG_META, + G_TYPE_STRING, "musicbrainz-discid", + "Musicbrainz discid for metadata retrieval", gst_tag_merge_use_first); + + gst_tag_register (GST_TAG_CDDA_MUSICBRAINZ_DISCID_FULL, GST_TAG_FLAG_META, + G_TYPE_STRING, "musicbrainz-discid-full", + "Musicbrainz discid for metadata retrieval (full)", + gst_tag_merge_use_first); + return NULL; } +/* FIXME 0.11: rename this to gst_tag_init() or gst_tag_register_tags() */ /** * gst_tag_register_musicbrainz_tags * @@ -82,7 +102,7 @@ gst_tag_register_musicbrainz_tags (void) { static GOnce mb_once = G_ONCE_INIT; - g_once (&mb_once, gst_tag_register_musicbrainz_tags_internal, NULL); + g_once (&mb_once, gst_tag_register_tags_internal, NULL); } static void