summaryrefslogtreecommitdiffstats
path: root/gst/id3demux
diff options
context:
space:
mode:
authorJan Schmidt <thaytan@mad.scientist.com>2006-08-22 13:53:34 +0000
committerJan Schmidt <thaytan@mad.scientist.com>2006-08-22 13:53:34 +0000
commit66bbbfb7692efd242fb5aa7c48daf98818e56d84 (patch)
treeb2688fda2f2dfb78ffc48ce037b65187f84b22d7 /gst/id3demux
parentad67773c8dbb68281b5dba2ce370e1b97b6dfbba (diff)
gst/id3demux/id3v2frames.c: If strings in text fields are marked ISO8859-1, but contain valid UTF-8 already, then han...
Original commit message from CVS: * gst/id3demux/id3v2frames.c: (parse_text_identification_frame), (parse_insert_string_field): If strings in text fields are marked ISO8859-1, but contain valid UTF-8 already, then handle them as UTF-8 and ignore the encoding. (#351794)
Diffstat (limited to 'gst/id3demux')
-rw-r--r--gst/id3demux/id3v2frames.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/gst/id3demux/id3v2frames.c b/gst/id3demux/id3v2frames.c
index 4e98a5eb..96fa88ec 100644
--- a/gst/id3demux/id3v2frames.c
+++ b/gst/id3demux/id3v2frames.c
@@ -273,12 +273,12 @@ parse_text_identification_frame (ID3TagsWorking * work)
work->parse_size - 1, &fields);
if (fields) {
if (fields->len > 0) {
- GST_LOG ("Read %d fields from Text ID frame of size %d. First is '%s'",
- fields->len, work->parse_size - 1,
+ GST_LOG ("Read %d fields from Text ID frame of size %d with encoding %d"
+ ". First is '%s'", fields->len, work->parse_size - 1, encoding,
g_array_index (fields, gchar *, 0));
} else {
- GST_LOG ("Read %d fields from Text ID frame of size %d", fields->len,
- work->parse_size - 1);
+ GST_LOG ("Read 0 fields from Text ID frame of size %d with encoding %d",
+ work->parse_size - 1, encoding);
}
}
@@ -911,8 +911,11 @@ parse_insert_string_field (guint8 encoding, gchar * data, gint data_size,
break;
case ID3V2_ENCODING_ISO8859:
- field = g_convert (data, data_size, "UTF-8", "ISO-8859-1",
- NULL, NULL, NULL);
+ if (g_utf8_validate (data, data_size, NULL))
+ field = g_strndup (data, data_size);
+ else
+ field = g_convert (data, data_size, "UTF-8", "ISO-8859-1",
+ NULL, NULL, NULL);
break;
default:
field = g_strndup (data, data_size);