mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-23 10:11:08 +00:00
configure.ac: export [_]*{gst,Gst,GST}.* symbols from plugins
Original commit message from CVS: 2004-02-22 Benjamin Otte <otte@gnome.org> * configure.ac: export [_]*{gst,Gst,GST}.* symbols from plugins 2004-02-22 Christophe Fergeau <teuf@gnome.org> reviewed by: Benjamin Otte <otte@gnome.org> * ext/lame/gstlame.c: (add_one_tag): * ext/mad/gstid3tag.c: (gst_mad_id3_to_tag_list): * ext/vorbis/vorbisenc.c: (gst_vorbisenc_get_tag_value), (gst_vorbisenc_metadata_set1): * gst/tags/gstid3tag.c: * gst/tags/gstvorbistag.c: (gst_vorbis_tag_add): apply fixes from bugs #135042 (lame can't write tags) and #133817 (add GST_ALBUM_VOLUME_{COUNT,NUMBER} tags)
This commit is contained in:
parent
e1a8f471cd
commit
3acef0a88c
5 changed files with 84 additions and 74 deletions
19
ChangeLog
19
ChangeLog
|
@ -1,4 +1,23 @@
|
||||||
|
2004-02-22 Benjamin Otte <otte@gnome.org>
|
||||||
|
|
||||||
|
* configure.ac:
|
||||||
|
export [_]*{gst,Gst,GST}.* symbols from plugins
|
||||||
|
|
||||||
|
2004-02-22 Christophe Fergeau <teuf@gnome.org>
|
||||||
|
|
||||||
|
reviewed by: Benjamin Otte <otte@gnome.org>
|
||||||
|
|
||||||
|
* ext/lame/gstlame.c: (add_one_tag):
|
||||||
|
* ext/mad/gstid3tag.c: (gst_mad_id3_to_tag_list):
|
||||||
|
* ext/vorbis/vorbisenc.c: (gst_vorbisenc_get_tag_value),
|
||||||
|
(gst_vorbisenc_metadata_set1):
|
||||||
|
* gst/tags/gstid3tag.c:
|
||||||
|
* gst/tags/gstvorbistag.c: (gst_vorbis_tag_add):
|
||||||
|
apply fixes from bugs #135042 (lame can't write tags) and #133817
|
||||||
|
(add GST_ALBUM_VOLUME_{COUNT,NUMBER} tags)
|
||||||
|
|
||||||
2004-02-22 Ramon Garcia <ramon_garcia_f@yahoo.com>
|
2004-02-22 Ramon Garcia <ramon_garcia_f@yahoo.com>
|
||||||
|
|
||||||
* configure.ac: Export only gst_plugin_desc from plugins.
|
* configure.ac: Export only gst_plugin_desc from plugins.
|
||||||
Note that this change only makes any effect with Linux using libtool
|
Note that this change only makes any effect with Linux using libtool
|
||||||
1.5.2 or higher. Otherwise it is silently ignored, but it would build
|
1.5.2 or higher. Otherwise it is silently ignored, but it would build
|
||||||
|
|
|
@ -326,7 +326,7 @@ dnl ===========================================================================
|
||||||
plugindir="\$(libdir)/gstreamer-$GST_MAJORMINOR"
|
plugindir="\$(libdir)/gstreamer-$GST_MAJORMINOR"
|
||||||
AC_SUBST(plugindir)
|
AC_SUBST(plugindir)
|
||||||
|
|
||||||
GST_PLUGIN_LDFLAGS='-module -avoid-version -export-symbols-regex gst_plugin_desc'
|
GST_PLUGIN_LDFLAGS='-module -avoid-version -export-symbols-regex [_]*{gst_,Gst,GST_}.*'
|
||||||
AC_SUBST(GST_PLUGIN_LDFLAGS)
|
AC_SUBST(GST_PLUGIN_LDFLAGS)
|
||||||
|
|
||||||
dnl these are all the gst plug-ins, compilable without additional libs
|
dnl these are all the gst plug-ins, compilable without additional libs
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#include <vorbis/vorbisenc.h>
|
#include <vorbis/vorbisenc.h>
|
||||||
|
|
||||||
#include <gst/gsttaginterface.h>
|
#include <gst/gsttaginterface.h>
|
||||||
|
#include <gst/tag/tag.h>
|
||||||
#include "vorbisenc.h"
|
#include "vorbisenc.h"
|
||||||
|
|
||||||
static GstPadTemplate *gst_vorbisenc_src_template, *gst_vorbisenc_sink_template;
|
static GstPadTemplate *gst_vorbisenc_src_template, *gst_vorbisenc_sink_template;
|
||||||
|
@ -462,87 +463,64 @@ gst_vorbisenc_init (VorbisEnc * vorbisenc)
|
||||||
GST_FLAG_SET (vorbisenc, GST_ELEMENT_EVENT_AWARE);
|
GST_FLAG_SET (vorbisenc, GST_ELEMENT_EVENT_AWARE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static gchar *
|
||||||
|
gst_vorbisenc_get_tag_value (const GstTagList *list, const gchar *tag, int index)
|
||||||
|
{
|
||||||
|
gchar *vorbisvalue = NULL;
|
||||||
|
|
||||||
|
if (tag == NULL) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* get tag name right */
|
||||||
|
if ((strcmp (tag, GST_TAG_TRACK_NUMBER) == 0)
|
||||||
|
|| (strcmp (tag, GST_TAG_ALBUM_VOLUME_NUMBER) == 0)
|
||||||
|
|| (strcmp (tag, GST_TAG_TRACK_COUNT) == 0)
|
||||||
|
|| (strcmp (tag, GST_TAG_ALBUM_VOLUME_COUNT) == 0)) {
|
||||||
|
guint track_no;
|
||||||
|
g_assert (gst_tag_list_get_uint_index (list, tag, index, &track_no));
|
||||||
|
vorbisvalue = g_strdup_printf ("%u", track_no);
|
||||||
|
} else if (strcmp (tag, GST_TAG_DATE) == 0) {
|
||||||
|
/* FIXME: how are dates represented in vorbis files? */
|
||||||
|
GDate *date;
|
||||||
|
guint u;
|
||||||
|
|
||||||
|
g_assert (gst_tag_list_get_uint_index (list, tag, index, &u));
|
||||||
|
date = g_date_new_julian (u);
|
||||||
|
vorbisvalue = g_strdup_printf ("%04d-%02d-%02d", (gint) g_date_get_year (date),
|
||||||
|
(gint) g_date_get_month (date), (gint) g_date_get_day (date));
|
||||||
|
g_date_free (date);
|
||||||
|
} else if (gst_tag_get_type (tag) == G_TYPE_STRING) {
|
||||||
|
g_assert (gst_tag_list_get_string_index (list, tag, index, &vorbisvalue));
|
||||||
|
}
|
||||||
|
|
||||||
|
return vorbisvalue;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gst_vorbisenc_metadata_set1 (const GstTagList *list, const gchar *tag, gpointer vorbisenc)
|
gst_vorbisenc_metadata_set1 (const GstTagList *list, const gchar *tag, gpointer vorbisenc)
|
||||||
{
|
{
|
||||||
gchar *vorbistag = NULL;
|
const gchar *vorbistag = NULL;
|
||||||
gchar *vorbisvalue = NULL;
|
gchar *vorbisvalue = NULL;
|
||||||
guint i, count;
|
guint i, count;
|
||||||
VorbisEnc *enc = GST_VORBISENC (vorbisenc);
|
VorbisEnc *enc = GST_VORBISENC (vorbisenc);
|
||||||
|
|
||||||
count = gst_tag_list_get_tag_size (list, tag);
|
vorbistag = gst_tag_to_vorbis_tag (tag);
|
||||||
for (i = 0; i < count; i++) {
|
if (vorbistag == NULL) {
|
||||||
/* get tag name right */
|
return;
|
||||||
if (strcmp (tag, GST_TAG_TITLE) == 0) {
|
|
||||||
vorbistag = g_strdup ("TITLE");
|
|
||||||
g_assert (gst_tag_list_get_string_index (list, tag, i, &vorbisvalue));
|
|
||||||
} else if (strcmp (tag, GST_TAG_VERSION) == 0) {
|
|
||||||
vorbistag = g_strdup ("VERSION");
|
|
||||||
g_assert (gst_tag_list_get_string_index (list, tag, i, &vorbisvalue));
|
|
||||||
} else if (strcmp (tag, GST_TAG_ALBUM) == 0) {
|
|
||||||
vorbistag = g_strdup ("ALBUM");
|
|
||||||
g_assert (gst_tag_list_get_string_index (list, tag, i, &vorbisvalue));
|
|
||||||
} else if (strcmp (tag, GST_TAG_TRACK_NUMBER) == 0) {
|
|
||||||
guint track_no;
|
|
||||||
vorbistag = g_strdup ("TRACKNUMBER");
|
|
||||||
g_assert (gst_tag_list_get_uint_index (list, tag, i, &track_no));
|
|
||||||
vorbisvalue = g_strdup_printf ("%u", track_no);
|
|
||||||
} else if (strcmp (tag, GST_TAG_ARTIST) == 0) {
|
|
||||||
vorbistag = g_strdup ("ARTIST");
|
|
||||||
g_assert (gst_tag_list_get_string_index (list, tag, i, &vorbisvalue));
|
|
||||||
} else if (strcmp (tag, GST_TAG_PERFORMER) == 0) {
|
|
||||||
vorbistag = g_strdup ("PERFORMER");
|
|
||||||
g_assert (gst_tag_list_get_string_index (list, tag, i, &vorbisvalue));
|
|
||||||
} else if (strcmp (tag, GST_TAG_COPYRIGHT) == 0) {
|
|
||||||
vorbistag = g_strdup ("COPYRIGHT");
|
|
||||||
g_assert (gst_tag_list_get_string_index (list, tag, i, &vorbisvalue));
|
|
||||||
} else if (strcmp (tag, GST_TAG_LICENSE) == 0) {
|
|
||||||
vorbistag = g_strdup ("LICENSE");
|
|
||||||
g_assert (gst_tag_list_get_string_index (list, tag, i, &vorbisvalue));
|
|
||||||
} else if (strcmp (tag, GST_TAG_ORGANIZATION) == 0) {
|
|
||||||
vorbistag = g_strdup ("ORGANIZATION");
|
|
||||||
g_assert (gst_tag_list_get_string_index (list, tag, i, &vorbisvalue));
|
|
||||||
} else if (strcmp (tag, GST_TAG_DESCRIPTION) == 0) {
|
|
||||||
vorbistag = g_strdup ("DESCRIPTION");
|
|
||||||
g_assert (gst_tag_list_get_string_index (list, tag, i, &vorbisvalue));
|
|
||||||
} else if (strcmp (tag, GST_TAG_GENRE) == 0) {
|
|
||||||
vorbistag = g_strdup ("GENRE");
|
|
||||||
g_assert (gst_tag_list_get_string_index (list, tag, i, &vorbisvalue));
|
|
||||||
} else if (strcmp (tag, GST_TAG_DATE) == 0) {
|
|
||||||
/* FIXME: how are dates represented in vorbis files? */
|
|
||||||
GDate *date;
|
|
||||||
guint u;
|
|
||||||
|
|
||||||
vorbistag = g_strdup ("DATE");
|
|
||||||
g_assert (gst_tag_list_get_uint_index (list, tag, i, &u));
|
|
||||||
date = g_date_new_julian (u);
|
|
||||||
vorbisvalue = g_strdup_printf ("%04d-%02d-%02d", (gint) g_date_get_year (date),
|
|
||||||
(gint) g_date_get_month (date), (gint) g_date_get_day (date));
|
|
||||||
g_date_free (date);
|
|
||||||
/* NOTE: GST_TAG_LOCATION != vorbis' location
|
|
||||||
} else if (strcmp (tag, PLACE) == 0) {
|
|
||||||
vorbistag = g_strdup ("LOCATION");
|
|
||||||
g_assert (gst_tag_list_get_string_index (list, tag, i, &vorbisvalue));
|
|
||||||
*/
|
|
||||||
} else if (strcmp (tag, GST_TAG_CONTACT) == 0) {
|
|
||||||
vorbistag = g_strdup ("CONTACT");
|
|
||||||
g_assert (gst_tag_list_get_string_index (list, tag, i, &vorbisvalue));
|
|
||||||
} else if (strcmp (tag, GST_TAG_ISRC) == 0) {
|
|
||||||
vorbistag = g_strdup ("ISRC");
|
|
||||||
g_assert (gst_tag_list_get_string_index (list, tag, i, &vorbisvalue));
|
|
||||||
} else {
|
|
||||||
vorbistag = g_ascii_strup (tag, -1);
|
|
||||||
if (gst_tag_get_type (tag) == G_TYPE_STRING) {
|
|
||||||
g_assert (gst_tag_list_get_string_index (list, tag, i, &vorbisvalue));
|
|
||||||
} else {
|
|
||||||
const GValue *value = gst_tag_list_get_value_index (list, tag, i);
|
|
||||||
vorbisvalue = g_strdup_value_contents (value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
vorbis_comment_add_tag (&enc->vc, vorbistag, vorbisvalue);
|
count = gst_tag_list_get_tag_size (list, tag);
|
||||||
|
for (i = 0; i < count; i++) {
|
||||||
|
vorbisvalue = gst_vorbisenc_get_tag_value (list, tag, i);
|
||||||
|
|
||||||
|
if (vorbisvalue != NULL) {
|
||||||
|
vorbis_comment_add_tag (&enc->vc, g_strdup (vorbistag), vorbisvalue);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gst_vorbisenc_set_metadata (VorbisEnc *vorbisenc)
|
gst_vorbisenc_set_metadata (VorbisEnc *vorbisenc)
|
||||||
{
|
{
|
||||||
|
|
|
@ -186,6 +186,7 @@ static GstTagEntryMatch tag_matches[] = {
|
||||||
{ GST_TAG_GENRE, "TCON" },
|
{ GST_TAG_GENRE, "TCON" },
|
||||||
{ GST_TAG_DATE, "TDRC" },
|
{ GST_TAG_DATE, "TDRC" },
|
||||||
{ GST_TAG_COMMENT, "COMM" },
|
{ GST_TAG_COMMENT, "COMM" },
|
||||||
|
{ GST_TAG_ALBUM_VOLUME_NUMBER, "TPOS" },
|
||||||
{ NULL, NULL }
|
{ NULL, NULL }
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -177,6 +177,9 @@ static GstTagEntryMatch tag_matches[] = {
|
||||||
{ GST_TAG_VERSION, "VERSION" },
|
{ GST_TAG_VERSION, "VERSION" },
|
||||||
{ GST_TAG_ALBUM, "ALBUM" },
|
{ GST_TAG_ALBUM, "ALBUM" },
|
||||||
{ GST_TAG_TRACK_NUMBER, "TRACKNUMBER" },
|
{ GST_TAG_TRACK_NUMBER, "TRACKNUMBER" },
|
||||||
|
{ GST_TAG_ALBUM_VOLUME_NUMBER, "DISCNUMBER" },
|
||||||
|
{ GST_TAG_TRACK_COUNT, "TRACKTOTAL" },
|
||||||
|
{ GST_TAG_ALBUM_VOLUME_COUNT, "DISCTOTAL" },
|
||||||
{ GST_TAG_ARTIST, "ARTIST" },
|
{ GST_TAG_ARTIST, "ARTIST" },
|
||||||
{ GST_TAG_PERFORMER, "PERFORMER" },
|
{ GST_TAG_PERFORMER, "PERFORMER" },
|
||||||
{ GST_TAG_COPYRIGHT, "COPYRIGHT" },
|
{ GST_TAG_COPYRIGHT, "COPYRIGHT" },
|
||||||
|
@ -277,13 +280,22 @@ gst_vorbis_tag_add (GstTagList *list, const gchar *tag, const gchar *value)
|
||||||
} else {
|
} else {
|
||||||
guint tmp;
|
guint tmp;
|
||||||
gchar *check;
|
gchar *check;
|
||||||
|
gboolean is_track_number_tag;
|
||||||
|
gboolean is_disc_number_tag;
|
||||||
|
|
||||||
|
is_track_number_tag = (strcmp (gst_tag, GST_TAG_TRACK_NUMBER) == 0);
|
||||||
|
is_disc_number_tag = (strcmp (gst_tag, GST_TAG_ALBUM_VOLUME_NUMBER) == 0);
|
||||||
tmp = strtoul (value, &check, 10);
|
tmp = strtoul (value, &check, 10);
|
||||||
if (*check == '/' && strcmp (gst_tag, GST_TAG_TRACK_NUMBER) == 0) {
|
if (*check == '/' && (is_track_number_tag || is_disc_number_tag)) {
|
||||||
guint count;
|
guint count;
|
||||||
check++;
|
check++;
|
||||||
count = strtoul (check, &check, 10);
|
count = strtoul (check, &check, 10);
|
||||||
if (*check != '\0' || count == 0) break;
|
if (*check != '\0' || count == 0) break;
|
||||||
gst_tag_list_add (list, GST_TAG_MERGE_APPEND, GST_TAG_TRACK_COUNT, count, NULL);
|
if (is_track_number_tag) {
|
||||||
|
gst_tag_list_add (list, GST_TAG_MERGE_APPEND, GST_TAG_TRACK_COUNT, count, NULL);
|
||||||
|
} else {
|
||||||
|
gst_tag_list_add (list, GST_TAG_MERGE_APPEND, GST_TAG_ALBUM_VOLUME_COUNT, count, NULL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (*check != '\0') break;
|
if (*check != '\0') break;
|
||||||
gst_tag_list_add (list, GST_TAG_MERGE_APPEND, gst_tag, tmp, NULL);
|
gst_tag_list_add (list, GST_TAG_MERGE_APPEND, gst_tag, tmp, NULL);
|
||||||
|
|
Loading…
Reference in a new issue