+2006-09-23 Tim-Philipp Müller <tim at centricular dot net>
+
+ * 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 <wim@fluendo.com>
* gst/playback/gstplaybasebin.c: (gen_preroll_element):
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
<SUBSECTION Standard>
GST_CDDA_BASE_SRC
GST_CDDA_BASE_SRC_CLASS
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
G_OBJECT_CLASS (parent_class)->dispose (object);
}
-static GstAudioChannelPosition vorbischannelpositions[][6] = {
+static const GstAudioChannelPosition vorbischannelpositions[][6] = {
{ /* Mono */
GST_AUDIO_CHANNEL_POSITION_FRONT_MONO},
{ /* Stereo */
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);
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)
* 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).
* </para>
+ * <title>Tags and meta-information</title>
+ * <para>
+ * 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.
+ * </para>
* </refsect2>
*/
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? ///////
#include <gst/gst.h>
#include <gst/base/gstpushsrc.h>
+/* must include this for backwards-compatibility so the
+ * GST_TAG_CDDA_* defines are included. Remove in 0.11 */
+#include <gst/tag/tag.h>
+
G_BEGIN_DECLS
#define GST_TYPE_CDDA_BASE_SRC (gst_cdda_base_src_get_type())
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:
{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}
};
*/
#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 */
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,
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,
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
*
{
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