From 2e05af387614b9850a9b0782e5ee1ab1a78362fd Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tim-Philipp=20M=C3=BCller?= Date: Fri, 7 Aug 2009 16:02:23 +0100 Subject: [PATCH] id3demux: fix parsing of unsync'ed ID3 v2.4 tags and frames Reversing the unsynchronisation seems to work slightly differently for ID3 v2.3 tags and v2.4 tags: v2.3 tags don't have syncsafe frame sizes in the frame header, so the unsynchronisation is applied to the whole frame data including all the frame headers. v2.4 frames have sync-safe sizes, however, so the unsynchronisation only needs to be applied to the actual frame data, and it seems that's what's being done as well. So we need to undo the unsynchronisation on a per-frame basis for v2.4 tags for things to work properly. Fixes extraction of coverart/images from APIC frames in ID3 v2.4 tags (#588148). Add unit test for this as well. --- gst/id3demux/id3tags.c | 7 +++-- gst/id3demux/id3tags.h | 2 ++ gst/id3demux/id3v2frames.c | 28 +++++++++++++---- tests/check/elements/id3demux.c | 54 +++++++++++++++++++++++++++++--- tests/files/Makefile.am | 1 + tests/files/id3-588148-unsynced-v24.tag | Bin 0 -> 39000 bytes 6 files changed, 80 insertions(+), 12 deletions(-) create mode 100644 tests/files/id3-588148-unsynced-v24.tag diff --git a/gst/id3demux/id3tags.c b/gst/id3demux/id3tags.c index 1d511f3..96d2552 100644 --- a/gst/id3demux/id3tags.c +++ b/gst/id3demux/id3tags.c @@ -97,7 +97,7 @@ id3demux_calc_id3v2_tag_size (GstBuffer * buf) return size; } -static guint8 * +guint8 * id3demux_ununsync_data (const guint8 * unsync_data, guint32 * size) { const guint8 *end; @@ -195,7 +195,10 @@ id3demux_read_id3v2_tag (GstBuffer * buffer, guint * id3v2_size, else work.hdr.frame_data_size = read_size - ID3V2_HDR_SIZE; - if ((flags & ID3V2_HDR_FLAG_UNSYNC)) { + /* in v2.3 the frame sizes are not syncsafe, so the entire tag had to be + * unsynced. In v2.4 the frame sizes are syncsafe so it's just the frame + * data that needs un-unsyncing, but not the frame headers. */ + if ((flags & ID3V2_HDR_FLAG_UNSYNC) != 0 && ID3V2_VER_MAJOR (version) <= 3) { GST_DEBUG ("Un-unsyncing entire tag"); uu_data = id3demux_ununsync_data (work.hdr.frame_data, &work.hdr.frame_data_size); diff --git a/gst/id3demux/id3tags.h b/gst/id3demux/id3tags.h index b5bc950..14a42de 100644 --- a/gst/id3demux/id3tags.h +++ b/gst/id3demux/id3tags.h @@ -115,6 +115,8 @@ enum { /* From id3v2frames.c */ gboolean id3demux_id3v2_parse_frame (ID3TagsWorking *work); +guint8 * id3demux_ununsync_data (const guint8 * unsync_data, guint32 * size); + G_END_DECLS #endif diff --git a/gst/id3demux/id3v2frames.c b/gst/id3demux/id3v2frames.c index 377d84c..a0331ef 100644 --- a/gst/id3demux/id3v2frames.c +++ b/gst/id3demux/id3v2frames.c @@ -73,6 +73,7 @@ id3demux_id3v2_parse_frame (ID3TagsWorking * work) guint frame_data_size = work->cur_frame_size; gchar *tag_str = NULL; GArray *tag_fields = NULL; + guint8 *uu_data = NULL; #ifdef HAVE_ZLIB guint8 *uncompressed_data = NULL; @@ -86,17 +87,14 @@ id3demux_id3v2_parse_frame (ID3TagsWorking * work) } } - /* Can't handle encrypted frames right now */ + /* Can't handle encrypted frames right now (in case we ever do, we'll have + * to do the decryption after the un-unsynchronisation and decompression, + * not here) */ if (work->frame_flags & ID3V2_FRAME_FORMAT_ENCRYPTION) { GST_WARNING ("Encrypted frames are not supported"); return FALSE; } - if (work->frame_flags & ID3V2_FRAME_FORMAT_UNSYNCHRONISATION) { - GST_WARNING ("ID3v2 frame with unsupported unsynchronisation applied. " - "May fail badly"); - } - tag_name = gst_tag_from_id3_tag (work->frame_id); if (tag_name == NULL && strncmp (work->frame_id, "RVA2", 4) != 0 && @@ -120,6 +118,19 @@ id3demux_id3v2_parse_frame (ID3TagsWorking * work) } } + /* in v2.3 the frame sizes are not syncsafe, so the entire tag had to be + * unsynced. In v2.4 the frame sizes are syncsafe so it's just the frame + * data that needs un-unsyncing, but not the frame headers. */ + if (ID3V2_VER_MAJOR (work->hdr.version) == 4) { + if ((work->hdr.flags & ID3V2_HDR_FLAG_UNSYNC) != 0 || + ((work->frame_flags & ID3V2_FRAME_FORMAT_UNSYNCHRONISATION) != 0)) { + GST_DEBUG ("Un-unsyncing frame %s", work->frame_id); + uu_data = id3demux_ununsync_data (frame_data, &frame_data_size); + frame_data = uu_data; + GST_MEMDUMP ("ID3v2 frame (un-unsyced)", frame_data, frame_data_size); + } + } + work->parse_size = frame_data_size; if (work->frame_flags & ID3V2_FRAME_FORMAT_COMPRESSION) { @@ -134,6 +145,7 @@ id3demux_id3v2_parse_frame (ID3TagsWorking * work) if (uncompress (dest, &destSize, src, frame_data_size) != Z_OK) { g_free (uncompressed_data); + g_free (uu_data); return FALSE; } if (destSize != work->parse_size) { @@ -141,12 +153,14 @@ id3demux_id3v2_parse_frame (ID3TagsWorking * work) ("Decompressing ID3v2 frame %s did not produce expected size %d bytes (got %lu)", tag_name, work->parse_size, destSize); g_free (uncompressed_data); + g_free (uu_data); return FALSE; } work->parse_data = uncompressed_data; #else GST_WARNING ("Compressed ID3v2 tag frame could not be decompressed" " because gstid3demux was compiled without zlib support"); + g_free (uu_data); return FALSE; #endif } else { @@ -209,6 +223,8 @@ id3demux_id3v2_parse_frame (ID3TagsWorking * work) free_tag_strings (tag_fields); } + g_free (uu_data); + return result; } diff --git a/tests/check/elements/id3demux.c b/tests/check/elements/id3demux.c index ef1d453..724461b 100644 --- a/tests/check/elements/id3demux.c +++ b/tests/check/elements/id3demux.c @@ -198,7 +198,7 @@ GST_START_TEST (test_wcop) GST_END_TEST; static void -check_unsync (const GstTagList * tags, const gchar * file) +check_unsync_v23 (const GstTagList * tags, const gchar * file) { gchar *album = NULL; gchar *title = NULL; @@ -220,9 +220,54 @@ check_unsync (const GstTagList * tags, const gchar * file) g_free (artist); } -GST_START_TEST (test_unsync) +GST_START_TEST (test_unsync_v23) { - run_check_for_file ("id3-577468-unsynced-tag.tag", check_unsync); + run_check_for_file ("id3-577468-unsynced-tag.tag", check_unsync_v23); +} + +GST_END_TEST; + +static void +check_unsync_v24 (const GstTagList * tags, const gchar * file) +{ + const GValue *val; + GstBuffer *buf; + gchar *album = NULL; + gchar *title = NULL; + gchar *artist = NULL; + + fail_unless (gst_tag_list_get_string (tags, GST_TAG_TITLE, &title)); + fail_unless (title != NULL); + fail_unless_equals_string (title, "Starlight"); + g_free (title); + + fail_unless (gst_tag_list_get_string (tags, GST_TAG_ALBUM, &album)); + fail_unless (album != NULL); + fail_unless_equals_string (album, "L'albumRockVol.4 CD1"); + g_free (album); + + fail_unless (gst_tag_list_get_string (tags, GST_TAG_ARTIST, &artist)); + fail_unless (artist != NULL); + fail_unless_equals_string (artist, "Muse"); + g_free (artist); + + val = gst_tag_list_get_value_index (tags, GST_TAG_IMAGE, 0); + fail_unless (val != NULL); + fail_unless (GST_VALUE_HOLDS_BUFFER (val)); + buf = gst_value_get_buffer (val); + fail_unless (buf != NULL); + fail_unless (GST_BUFFER_CAPS (buf) != NULL); + fail_unless_equals_int (GST_BUFFER_SIZE (buf), 38022); + /* check for jpeg start/end markers */ + fail_unless_equals_int (GST_BUFFER_DATA (buf)[0], 0xff); + fail_unless_equals_int (GST_BUFFER_DATA (buf)[1], 0xd8); + fail_unless_equals_int (GST_BUFFER_DATA (buf)[38020], 0xff); + fail_unless_equals_int (GST_BUFFER_DATA (buf)[38021], 0xd9); +} + +GST_START_TEST (test_unsync_v24) +{ + run_check_for_file ("id3-588148-unsynced-v24.tag", check_unsync_v24); } GST_END_TEST; @@ -236,7 +281,8 @@ id3demux_suite (void) suite_add_tcase (s, tc_chain); tcase_add_test (tc_chain, test_tdat_tyer); tcase_add_test (tc_chain, test_wcop); - tcase_add_test (tc_chain, test_unsync); + tcase_add_test (tc_chain, test_unsync_v23); + tcase_add_test (tc_chain, test_unsync_v24); return s; } diff --git a/tests/files/Makefile.am b/tests/files/Makefile.am index 73ab4f2..a0a2829 100644 --- a/tests/files/Makefile.am +++ b/tests/files/Makefile.am @@ -5,6 +5,7 @@ EXTRA_DIST = \ id3-407349-2.tag \ id3-447000-wcop.tag \ id3-577468-unsynced-tag.tag \ + id3-588148-unsynced-v24.tag \ pcm16sine.flv \ test-cert.pem \ test-key.pem diff --git a/tests/files/id3-588148-unsynced-v24.tag b/tests/files/id3-588148-unsynced-v24.tag new file mode 100644 index 0000000000000000000000000000000000000000..099d930e7f4022c4622111858f0b27afd8ede56a GIT binary patch literal 39000 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