From c2dddd0201c8eafb89219defe186904a5c4ee102 Mon Sep 17 00:00:00 2001 From: Jan Schmidt Date: Fri, 11 Jan 2008 21:08:59 +0000 Subject: Generate the image-type values correctly. Leave them out of the caps when outputting a "preview image" tag, since it ... Original commit message from CVS: * ext/flac/gstflacdec.c: (gst_flac_extract_picture_buffer): * gst/id3demux/id3v2frames.c: (parse_picture_frame): Generate the image-type values correctly. Leave them out of the caps when outputting a "preview image" tag, since it only makes sense to have one of those - the type is irrelevant. * sys/sunaudio/gstsunaudiomixerctrl.c: (gst_sunaudiomixer_ctrl_open): If we can, mark the mixer multiple open when we use it, in case (for some reason) the process wants to open it again elsewhere. --- ext/flac/gstflacdec.c | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) (limited to 'ext/flac') diff --git a/ext/flac/gstflacdec.c b/ext/flac/gstflacdec.c index c21caa4a..fd4126a7 100644 --- a/ext/flac/gstflacdec.c +++ b/ext/flac/gstflacdec.c @@ -663,28 +663,27 @@ gst_flac_extract_picture_buffer (GstFlacDec * flacdec, g_free (mime_type); if (image && image_caps) { - GstTagList *tags; - FLAC__StreamMetadata_Picture_Type pic_type = picture.type; + GstTagList *tags = gst_tag_list_new (); - tags = gst_tag_list_new (); - - if (pic_type > 20) { - pic_type = GST_TAG_IMAGE_TYPE_UNDEFINED; - } - - gst_structure_set (gst_caps_get_structure (image_caps, 0), - "image-type", GST_TYPE_TAG_IMAGE_TYPE, - (GstTagImageType) pic_type, NULL); - - gst_buffer_set_caps (image, image_caps); - gst_caps_unref (image_caps); - if (pic_type == 1 || pic_type == 2) { - /* file icon of some sort */ + if (picture.type == 1 || picture.type == 2) { + /* file icon for preview. Don't add image-type to caps, since it only + * makes sense for there to be one of these. */ + gst_buffer_set_caps (image, image_caps); gst_tag_list_add (tags, GST_TAG_MERGE_APPEND, GST_TAG_PREVIEW_IMAGE, image, NULL); } else { + GstTagImageType gst_tag_pic_type = GST_TAG_IMAGE_TYPE_UNDEFINED; + + if (picture.type >= 0x03 && picture.type <= 0x14) + gst_tag_pic_type = (GstTagImageType) ((gint) (picture.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 (tags, GST_TAG_MERGE_APPEND, GST_TAG_IMAGE, image, NULL); } + gst_caps_unref (image_caps); gst_buffer_unref (image); /* Announce discovered tags */ -- cgit