From a91620dbdf3cf0fb26b5e1090b0b93e95f5cdef3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tim-Philipp=20M=C3=BCller?= Date: Wed, 4 Jun 2008 10:42:46 +0000 Subject: [PATCH] tag: id3v2: Use new utility functions in libgsttag to process coverart (#512333). Original commit message from CVS: * ext/flac/gstflacdec.c: (gst_flac_extract_picture_buffer): * gst-libs/gst/tag/id3v2frames.c: (parse_picture_frame): Use new utility functions in libgsttag to process coverart (#512333). --- gst-libs/gst/tag/id3v2frames.c | 89 +++--------------------------------------- 1 file changed, 5 insertions(+), 84 deletions(-) diff --git a/gst-libs/gst/tag/id3v2frames.c b/gst-libs/gst/tag/id3v2frames.c index 0d0944e..377d84c 100644 --- a/gst-libs/gst/tag/id3v2frames.c +++ b/gst-libs/gst/tag/id3v2frames.c @@ -1,5 +1,5 @@ /* -*- Mode: C; tab-width: 2; indent-tabs-mode: t; c-basic-offset: 2 -*- */ -/* Copyright 2006 Tim-Philipp Müller +/* Copyright 2006-2008 Tim-Philipp Müller * Copyright 2005 Jan Schmidt * Copyright 2002,2003 Scott Wheeler (portions from taglib) * @@ -493,11 +493,8 @@ scan_encoded_string (guint8 encoding, gchar * data, gint data_size) static gboolean parse_picture_frame (ID3TagsWorking * work) { - GstBuffer *image = NULL; - GstCaps *image_caps = NULL; - gboolean is_pic_uri = FALSE; guint8 txt_encoding, pic_type; - gchar *c, *mime_str = NULL; + gchar *mime_str = NULL; gint len, datalen; GST_LOG ("APIC frame (ID3v2.%u)", ID3V2_VER_MAJOR (work->hdr.version)); @@ -524,29 +521,6 @@ parse_picture_frame (ID3TagsWorking * work) ++len; /* for string terminator */ } - /* Fix up 'jpg' => 'jpeg' in mime/media type */ - if (mime_str != NULL && - (g_ascii_strcasecmp (mime_str, "jpg") == 0 || - g_ascii_strcasecmp (mime_str, "image/jpg") == 0)) { - g_free (mime_str); - mime_str = g_strdup ("jpeg"); - } - - /* Make lower-case */ - for (c = mime_str; c != NULL && *c != '\0'; ++c) { - *c = g_ascii_tolower (*c); - } - - is_pic_uri = (mime_str != NULL && strcmp (mime_str, "-->") == 0); - - if (mime_str && *mime_str && strchr (mime_str, '/') == NULL && !is_pic_uri) { - gchar *tmp; - - tmp = g_strdup_printf ("image/%s", mime_str); - g_free (mime_str); - mime_str = tmp; - } - if (work->parse_size < len + 1 + 1 + 1) goto not_enough_data; @@ -584,62 +558,9 @@ parse_picture_frame (ID3TagsWorking * work) if (work->parse_size <= 0) goto not_enough_data; - if (is_pic_uri) { - gchar *uri; - - uri = g_strndup ((gchar *) work->parse_data, work->parse_size); - GST_DEBUG ("image URI: %s", uri); - - image = gst_buffer_new (); - GST_BUFFER_MALLOCDATA (image) = (guint8 *) uri; /* take ownership */ - GST_BUFFER_DATA (image) = (guint8 *) uri; - GST_BUFFER_SIZE (image) = work->parse_size; - - image_caps = gst_caps_new_simple ("text/uri-list", NULL); - } else { - image = gst_buffer_new_and_alloc (work->parse_size); - memcpy (GST_BUFFER_DATA (image), work->parse_data, work->parse_size); - - /* if possible use GStreamer media type rather than declared type */ - image_caps = gst_type_find_helper_for_buffer (NULL, image, NULL); - if (image_caps) { - GST_DEBUG ("Found GStreamer media type: %" GST_PTR_FORMAT, image_caps); - } else if (mime_str && *mime_str) { - GST_DEBUG ("No GStreamer media type found, using declared type"); - image_caps = gst_caps_new_simple (mime_str, NULL); - } else { - GST_DEBUG ("Empty declared mime type, ignoring image frame"); - image = NULL; - image_caps = NULL; - goto error; - } - } - - if (image && image_caps) { - - if (pic_type == 0x01 || pic_type == 0x02) { - /* file icon for preview. Don't add image-type to caps, since there - * is only supposed to be one of these. */ - gst_buffer_set_caps (image, image_caps); - gst_tag_list_add (work->tags, GST_TAG_MERGE_APPEND, - GST_TAG_PREVIEW_IMAGE, image, NULL); - } else { - GstTagImageType gst_tag_pic_type = GST_TAG_IMAGE_TYPE_UNDEFINED; - - /* Remap the ID3v2 APIC type our ImageType enum */ - if (pic_type >= 0x3 && pic_type <= 0x14) - gst_tag_pic_type = (GstTagImageType) (pic_type - 2); - - gst_structure_set (gst_caps_get_structure (image_caps, 0), - "image-type", GST_TYPE_TAG_IMAGE_TYPE, gst_tag_pic_type, NULL); - - gst_buffer_set_caps (image, image_caps); - gst_tag_list_add (work->tags, GST_TAG_MERGE_APPEND, - GST_TAG_IMAGE, image, NULL); - } - - gst_caps_unref (image_caps); - gst_buffer_unref (image); + if (!gst_tag_list_add_id3_image (work->tags, (guint8 *) work->parse_data, + work->parse_size, pic_type)) { + goto error; } g_free (mime_str); -- 2.7.4