diff options
author | Yuqing Zhu <b54851@freescale.com> | 2015-08-10 11:41:33 +0800 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-08-11 09:28:48 -0700 |
commit | bda68cc4c4779b2259d282560d7f39589a3bddc4 (patch) | |
tree | d6488bdf18433256331ddd048a7888e2bed69667 /meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/fix-id3demux-utf16-to-utf8-issue.patch | |
parent | 1f156abf9e275e89538cc70f6bd110a48a4b3c54 (diff) | |
download | poky-bda68cc4c4779b2259d282560d7f39589a3bddc4.tar.gz |
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>
Diffstat (limited to 'meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/fix-id3demux-utf16-to-utf8-issue.patch')
-rwxr-xr-x | meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/fix-id3demux-utf16-to-utf8-issue.patch | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/fix-id3demux-utf16-to-utf8-issue.patch b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/fix-id3demux-utf16-to-utf8-issue.patch new file mode 100755 index 0000000000..ef3f75fba5 --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0-plugins-base/fix-id3demux-utf16-to-utf8-issue.patch | |||
@@ -0,0 +1,54 @@ | |||
1 | Author: Lyon Wang <b12696@freescale.com> | ||
2 | Date: Thu Oct 9 17:37:43 2014 +0800 | ||
3 | |||
4 | [id3v2frames] Bug fix for id3demux issue | ||
5 | |||
6 | Fix the issue that id3 tags utf16 charaters cannot be extreacted in id3demux | ||
7 | when I tried to get the id3v2 tag such as TIT2, TALB etc. it will return extrac | ||
8 | failed. | ||
9 | |||
10 | Checked in id3v2frame.c, When parse the UTF-16 streams, it used g_convert() to | ||
11 | convert the buffer from UTF-16 to UTF-8, however it will return err that this | ||
12 | conversion is not supported which cause the extraction failed with these UTF-16 | ||
13 | characters. | ||
14 | |||
15 | In the patch, use g_utf16_to_utf8() instead of g_convert, which can convert the | ||
16 | character format successfully. | ||
17 | |||
18 | https://bugzilla.gnome.org/show_bug.cgi?id=741144 | ||
19 | |||
20 | Upstream-Status: Backport [1.5.1] | ||
21 | |||
22 | Signed-off-by: Lyon Wang <b12696@freescale.com> | ||
23 | |||
24 | diff --git a/gst-libs/gst/tag/id3v2frames.c b/gst-libs/gst/tag/id3v2frames.c | ||
25 | old mode 100644 | ||
26 | new mode 100755 | ||
27 | index 3785c2a..7b9d8ac | ||
28 | --- a/gst-libs/gst/tag/id3v2frames.c | ||
29 | +++ b/gst-libs/gst/tag/id3v2frames.c | ||
30 | @@ -1057,14 +1057,17 @@ parse_insert_string_field (guint8 encoding, gchar * data, gint data_size, | ||
31 | data_size -= 2; | ||
32 | } | ||
33 | |||
34 | - field = g_convert (data, data_size, "UTF-8", in_encode, NULL, NULL, NULL); | ||
35 | - | ||
36 | - if (field == NULL || g_utf8_validate (field, -1, NULL) == FALSE) { | ||
37 | - /* As a fallback, try interpreting UTF-16 in the other endianness */ | ||
38 | - if (in_encode == utf16beenc) | ||
39 | - field = g_convert (data, data_size, "UTF-8", utf16leenc, | ||
40 | - NULL, NULL, NULL); | ||
41 | + if (in_encode == utf16beenc) { | ||
42 | + gunichar2 *data_utf16; | ||
43 | + guint i; | ||
44 | + data_utf16 = (gunichar2 *) data; | ||
45 | + for (i=0; i<(data_size>>1); i++) { | ||
46 | + data_utf16[i] = GUINT16_TO_LE (data_utf16[i]); | ||
47 | + } | ||
48 | } | ||
49 | + //field = g_convert (data, data_size, "UTF-8", in_encode, NULL, NULL, NULL); | ||
50 | + field = g_utf16_to_utf8((gunichar2 *)data, (glong)(data_size>>1), NULL, NULL, NULL); | ||
51 | + | ||
52 | } | ||
53 | |||
54 | break; | ||