From 46b01db52eccf4a25a09d969d823203f39362c6a Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Tue, 11 May 2004 04:33:48 +0000 Subject: [PATCH] gst/asfdemux/gstasfdemux.c: Fix some odd cases and fix BE metadata parsing of unicode16 text. Original commit message from CVS: * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_process_comment): Fix some odd cases and fix BE metadata parsing of unicode16 text. --- ChangeLog | 5 +++++ gst/asfdemux/gstasfdemux.c | 8 ++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 313b7ffec8..8ad58d34dd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-05-11 Ronald Bultje + + * gst/asfdemux/gstasfdemux.c: (gst_asf_demux_process_comment): + Fix some odd cases and fix BE metadata parsing of unicode16 text. + 2004-05-11 Benjamin Otte * gst/switch/gstswitch.c: (gst_switch_release_pad), diff --git a/gst/asfdemux/gstasfdemux.c b/gst/asfdemux/gstasfdemux.c index a9f160fc35..84a2066862 100644 --- a/gst/asfdemux/gstasfdemux.c +++ b/gst/asfdemux/gstasfdemux.c @@ -525,7 +525,7 @@ gst_asf_demux_process_comment (GstASFDemux * asf_demux, guint64 * obj_size) GST_TAG_COMMENT, NULL /* ? */ }; guint16 *lengths = (guint16 *) & object; - gint i; + gint i, n; gsize in, out; GstTagList *taglist; const GList *padlist; @@ -539,7 +539,6 @@ gst_asf_demux_process_comment (GstASFDemux * asf_demux, guint64 * obj_size) ("Comment lengths: title=%d author=%d copyright=%d description=%d rating=%d", object.title_length, object.author_length, object.copyright_length, object.description_length, object.rating_length); - g_print ("comment\n"); for (i = 0; i < 5; i++) { /* might be just '/0', '/0'... */ if (lengths[i] > 2 && lengths[i] % 2 == 0) { @@ -552,8 +551,13 @@ gst_asf_demux_process_comment (GstASFDemux * asf_demux, guint64 * obj_size) continue; /* convert to UTF-8 */ + for (n = 0; n < lengths[i] / 2 - 1; n++) + ((gint16 *) data)[n] = GUINT16_FROM_LE (((gint16 *) data)[n]); utf8_comments[i] = g_convert (data, lengths[i], "UTF-8", "Unicode", &in, &out, NULL); + } else { + if (lengths[i] > 0 && !gst_bytestream_flush (bs, lengths[i])) + goto fail; } }