mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-10-04 17:52:29 +00:00
gst-libs/gst/tag/gstvorbistag.c: When writing out floating-point numbers to vorbis comment tags, always use the same ...
Original commit message from CVS: Patch by: René Stadler <mail at renestadler de> * gst-libs/gst/tag/gstvorbistag.c: (gst_tag_to_vorbis_comments): When writing out floating-point numbers to vorbis comment tags, always use the same character as separator no matter what the current locale is (fixes #423051). * tests/check/libs/tag.c: (GST_START_TEST): Add unit tests for replaygain tags in vorbis comments (closes #423055).
This commit is contained in:
parent
ecab77b7e4
commit
01a1e4bc81
3 changed files with 39 additions and 17 deletions
12
ChangeLog
12
ChangeLog
|
@ -1,3 +1,15 @@
|
||||||
|
2007-03-26 Tim-Philipp Müller <tim at centricular dot net>
|
||||||
|
|
||||||
|
Patch by: René Stadler <mail at renestadler de>
|
||||||
|
|
||||||
|
* gst-libs/gst/tag/gstvorbistag.c: (gst_tag_to_vorbis_comments):
|
||||||
|
When writing out floating-point numbers to vorbis comment tags, always
|
||||||
|
use the same character as separator no matter what the current locale is
|
||||||
|
(fixes #423051).
|
||||||
|
|
||||||
|
* tests/check/libs/tag.c: (GST_START_TEST):
|
||||||
|
Add unit tests for replaygain tags in vorbis comments (closes #423055).
|
||||||
|
|
||||||
2007-03-26 Thomas Vander Stichele <thomas at apestaart dot org>
|
2007-03-26 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||||
|
|
||||||
* ext/vorbis/vorbisdec.c (vorbis_dec_push_forward,
|
* ext/vorbis/vorbisdec.c (vorbis_dec_push_forward,
|
||||||
|
|
|
@ -433,11 +433,12 @@ gst_tag_to_vorbis_comments (const GstTagList * list, const gchar * tag)
|
||||||
}
|
}
|
||||||
case G_TYPE_DOUBLE:{
|
case G_TYPE_DOUBLE:{
|
||||||
gdouble value;
|
gdouble value;
|
||||||
|
gchar buf[G_ASCII_DTOSTR_BUF_SIZE];
|
||||||
|
|
||||||
if (!gst_tag_list_get_double_index (list, tag, i, &value))
|
if (!gst_tag_list_get_double_index (list, tag, i, &value))
|
||||||
g_return_val_if_reached (NULL);
|
g_return_val_if_reached (NULL);
|
||||||
/* FIXME: what about locale-specific floating point separators? */
|
g_ascii_formatd (buf, G_ASCII_DTOSTR_BUF_SIZE, "%f", value);
|
||||||
result = g_strdup_printf ("%s=%f", vorbis_tag, value);
|
result = g_strconcat (vorbis_tag, "=", buf, NULL);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:{
|
default:{
|
||||||
|
|
|
@ -165,6 +165,18 @@ GST_END_TEST;
|
||||||
fail_unless_equals_int (___n, num); \
|
fail_unless_equals_int (___n, num); \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define MATCH_DOUBLE(p1, p2) ((p1 < p2 + 1e-6) && (p2 < p1 + 1e-6))
|
||||||
|
#define ASSERT_TAG_LIST_HAS_DOUBLE(list,field,d) \
|
||||||
|
{ \
|
||||||
|
gdouble ___d; \
|
||||||
|
\
|
||||||
|
fail_unless (gst_tag_list_get_tag_size (list,field) > 0); \
|
||||||
|
fail_unless (gst_tag_list_get_tag_size (list,field) == 1); \
|
||||||
|
fail_unless (gst_tag_list_get_double_index (list, field, 0, &___d)); \
|
||||||
|
fail_unless (MATCH_DOUBLE (d, ___d), \
|
||||||
|
"%f does not match expected %f", ___d, d); \
|
||||||
|
}
|
||||||
|
|
||||||
GST_START_TEST (test_muscibrainz_tag_registration)
|
GST_START_TEST (test_muscibrainz_tag_registration)
|
||||||
{
|
{
|
||||||
GstTagList *list;
|
GstTagList *list;
|
||||||
|
@ -298,20 +310,17 @@ GST_START_TEST (test_vorbis_tags)
|
||||||
ASSERT_TAG_LIST_HAS_STRING (list, GST_TAG_EXTENDED_COMMENT,
|
ASSERT_TAG_LIST_HAS_STRING (list, GST_TAG_EXTENDED_COMMENT,
|
||||||
"RuBuWuHash=1337BA42F91");
|
"RuBuWuHash=1337BA42F91");
|
||||||
|
|
||||||
#if 0
|
gst_vorbis_tag_add (list, "REPLAYGAIN_TRACK_GAIN", "+12.36");
|
||||||
/* TODO: test these as well */
|
ASSERT_TAG_LIST_HAS_DOUBLE (list, GST_TAG_TRACK_GAIN, +12.36);
|
||||||
{
|
gst_vorbis_tag_add (list, "REPLAYGAIN_TRACK_PEAK", "0.96349");
|
||||||
GST_TAG_TRACK_GAIN, "REPLAYGAIN_TRACK_GAIN"}
|
ASSERT_TAG_LIST_HAS_DOUBLE (list, GST_TAG_TRACK_PEAK, 0.96349);
|
||||||
, {
|
gst_vorbis_tag_add (list, "REPLAYGAIN_ALBUM_GAIN", "+10.12");
|
||||||
GST_TAG_TRACK_PEAK, "REPLAYGAIN_TRACK_PEAK"}
|
ASSERT_TAG_LIST_HAS_DOUBLE (list, GST_TAG_ALBUM_GAIN, +10.12);
|
||||||
, {
|
gst_vorbis_tag_add (list, "REPLAYGAIN_ALBUM_PEAK", "0.98107");
|
||||||
GST_TAG_ALBUM_GAIN, "REPLAYGAIN_ALBUM_GAIN"}
|
ASSERT_TAG_LIST_HAS_DOUBLE (list, GST_TAG_ALBUM_PEAK, 0.98107);
|
||||||
, {
|
gst_vorbis_tag_add (list, "REPLAYGAIN_REFERENCE_LOUDNESS", "89.");
|
||||||
GST_TAG_ALBUM_PEAK, "REPLAYGAIN_ALBUM_PEAK"}
|
ASSERT_TAG_LIST_HAS_DOUBLE (list, GST_TAG_REFERENCE_LEVEL, 89.);
|
||||||
, {
|
|
||||||
GST_TAG_LANGUAGE_CODE, "LANGUAGE"}
|
|
||||||
,
|
|
||||||
#endif
|
|
||||||
/* make sure we can convert back and forth without loss */
|
/* make sure we can convert back and forth without loss */
|
||||||
{
|
{
|
||||||
GstTagList *new_list, *even_newer_list;
|
GstTagList *new_list, *even_newer_list;
|
||||||
|
|
Loading…
Reference in a new issue