mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-24 17:20:36 +00:00
make tag encoding use utf-8. Use glib functions for character conversion
Original commit message from CVS: make tag encoding use utf-8. Use glib functions for character conversion
This commit is contained in:
parent
6eeca5fecf
commit
3199346aaf
1 changed files with 9 additions and 5 deletions
|
@ -514,10 +514,13 @@ tag_list_to_id3_tag_foreach (const GstTagList *list, const gchar *tag_name, gpoi
|
||||||
GST_WARNING ("could not attach frame (%s) to id3 tag", id);
|
GST_WARNING ("could not attach frame (%s) to id3 tag", id);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
/* encode in UTF-8 - libid3tag uses Latin1 by default... */
|
||||||
|
field = id3_frame_field (frame, 0);
|
||||||
|
id3_field_settextencoding (field, ID3_FIELD_TEXTENCODING_UTF_8);
|
||||||
field = id3_frame_field (frame, 1);
|
field = id3_frame_field (frame, 1);
|
||||||
g_assert (field);
|
g_assert (field);
|
||||||
while (values-- > 0) {
|
while (values-- > 0) {
|
||||||
id3_ucs4_t *put;
|
gunichar *put;
|
||||||
|
|
||||||
if (strcmp (tag_name, GST_TAG_DATE) == 0) {
|
if (strcmp (tag_name, GST_TAG_DATE) == 0) {
|
||||||
gchar *str;
|
gchar *str;
|
||||||
|
@ -527,7 +530,7 @@ tag_list_to_id3_tag_foreach (const GstTagList *list, const gchar *tag_name, gpoi
|
||||||
g_assert (gst_tag_list_get_uint_index (list, tag_name, values, &u));
|
g_assert (gst_tag_list_get_uint_index (list, tag_name, values, &u));
|
||||||
d = g_date_new_julian (u);
|
d = g_date_new_julian (u);
|
||||||
str = g_strdup_printf ("%u", (guint) (g_date_get_year (d)));
|
str = g_strdup_printf ("%u", (guint) (g_date_get_year (d)));
|
||||||
put = id3_utf8_ucs4duplicate (str);
|
put = g_utf8_to_ucs4_fast (str, -1, NULL);
|
||||||
g_date_free (d);
|
g_date_free (d);
|
||||||
g_free (str);
|
g_free (str);
|
||||||
} else if (strcmp (tag_name, GST_TAG_TRACK_NUMBER) == 0) {
|
} else if (strcmp (tag_name, GST_TAG_TRACK_NUMBER) == 0) {
|
||||||
|
@ -536,7 +539,7 @@ tag_list_to_id3_tag_foreach (const GstTagList *list, const gchar *tag_name, gpoi
|
||||||
|
|
||||||
g_assert (gst_tag_list_get_uint_index (list, tag_name, values, &u));
|
g_assert (gst_tag_list_get_uint_index (list, tag_name, values, &u));
|
||||||
str = g_strdup_printf ("%u", u);
|
str = g_strdup_printf ("%u", u);
|
||||||
put = id3_utf8_ucs4duplicate (str);
|
put = g_utf8_to_ucs4_fast (str, -1, NULL);
|
||||||
g_free (str);
|
g_free (str);
|
||||||
} else {
|
} else {
|
||||||
gchar *str;
|
gchar *str;
|
||||||
|
@ -546,14 +549,15 @@ tag_list_to_id3_tag_foreach (const GstTagList *list, const gchar *tag_name, gpoi
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
g_assert (gst_tag_list_get_string_index (list, tag_name, values, &str));
|
g_assert (gst_tag_list_get_string_index (list, tag_name, values, &str));
|
||||||
put = id3_utf8_ucs4duplicate (str);
|
put = g_utf8_to_ucs4_fast (str, -1, NULL);
|
||||||
g_free (str);
|
g_free (str);
|
||||||
}
|
}
|
||||||
if (id3_field_addstring (field, put) != 0) {
|
if (id3_field_addstring (field, (id3_ucs4_t *) put) != 0) {
|
||||||
GST_WARNING ("could not add a string to id3 tag field");
|
GST_WARNING ("could not add a string to id3 tag field");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
id3_field_settextencoding (field, ID3_FIELD_TEXTENCODING_UTF_8);
|
||||||
}
|
}
|
||||||
struct id3_tag *
|
struct id3_tag *
|
||||||
gst_mad_tag_list_to_id3_tag (GstTagList *list)
|
gst_mad_tag_list_to_id3_tag (GstTagList *list)
|
||||||
|
|
Loading…
Reference in a new issue