mirror of
https://git.yoctoproject.org/poky
synced 2026-05-09 05:29:32 +00:00
gstreamer1.0-plugins-base: Bug fix for id3demux issue
Use g_utf16_to_utf8() instead of g_convert to fix the issue that id3 tags utf16 charaters cannot be extreacted in id3demux when try to get the id3v2 tag such as TIT2, TALB etc. (From OE-Core rev: 9f8c49862ee67f7f618f102f29f067ec2d712136) Signed-off-by: Yuqing Zhu <b54851@freescale.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
1f156abf9e
commit
bda68cc4c4
Executable
+54
@@ -0,0 +1,54 @@
|
||||
Author: Lyon Wang <b12696@freescale.com>
|
||||
Date: Thu Oct 9 17:37:43 2014 +0800
|
||||
|
||||
[id3v2frames] Bug fix for id3demux issue
|
||||
|
||||
Fix the issue that id3 tags utf16 charaters cannot be extreacted in id3demux
|
||||
when I tried to get the id3v2 tag such as TIT2, TALB etc. it will return extrac
|
||||
failed.
|
||||
|
||||
Checked in id3v2frame.c, When parse the UTF-16 streams, it used g_convert() to
|
||||
convert the buffer from UTF-16 to UTF-8, however it will return err that this
|
||||
conversion is not supported which cause the extraction failed with these UTF-16
|
||||
characters.
|
||||
|
||||
In the patch, use g_utf16_to_utf8() instead of g_convert, which can convert the
|
||||
character format successfully.
|
||||
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=741144
|
||||
|
||||
Upstream-Status: Backport [1.5.1]
|
||||
|
||||
Signed-off-by: Lyon Wang <b12696@freescale.com>
|
||||
|
||||
diff --git a/gst-libs/gst/tag/id3v2frames.c b/gst-libs/gst/tag/id3v2frames.c
|
||||
old mode 100644
|
||||
new mode 100755
|
||||
index 3785c2a..7b9d8ac
|
||||
--- a/gst-libs/gst/tag/id3v2frames.c
|
||||
+++ b/gst-libs/gst/tag/id3v2frames.c
|
||||
@@ -1057,14 +1057,17 @@ parse_insert_string_field (guint8 encoding, gchar * data, gint data_size,
|
||||
data_size -= 2;
|
||||
}
|
||||
|
||||
- field = g_convert (data, data_size, "UTF-8", in_encode, NULL, NULL, NULL);
|
||||
-
|
||||
- if (field == NULL || g_utf8_validate (field, -1, NULL) == FALSE) {
|
||||
- /* As a fallback, try interpreting UTF-16 in the other endianness */
|
||||
- if (in_encode == utf16beenc)
|
||||
- field = g_convert (data, data_size, "UTF-8", utf16leenc,
|
||||
- NULL, NULL, NULL);
|
||||
+ if (in_encode == utf16beenc) {
|
||||
+ gunichar2 *data_utf16;
|
||||
+ guint i;
|
||||
+ data_utf16 = (gunichar2 *) data;
|
||||
+ for (i=0; i<(data_size>>1); i++) {
|
||||
+ data_utf16[i] = GUINT16_TO_LE (data_utf16[i]);
|
||||
+ }
|
||||
}
|
||||
+ //field = g_convert (data, data_size, "UTF-8", in_encode, NULL, NULL, NULL);
|
||||
+ field = g_utf16_to_utf8((gunichar2 *)data, (glong)(data_size>>1), NULL, NULL, NULL);
|
||||
+
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -8,6 +8,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=c54ce9345727175ff66d17b67ff51f58 \
|
||||
SRC_URI += "file://do-not-change-eos-event-to-gap-event-if.patch \
|
||||
file://get-caps-from-src-pad-when-query-caps.patch \
|
||||
file://taglist-not-send-to-down-stream-if-all-the-frame-cor.patch \
|
||||
file://fix-id3demux-utf16-to-utf8-issue.patch \
|
||||
"
|
||||
|
||||
SRC_URI[md5sum] = "357165af625c0ca353ab47c5d843920e"
|
||||
|
||||
Reference in New Issue
Block a user