diff options
author | Jan Schmidt <thaytan@mad.scientist.com> | 2008-01-11 21:08:59 +0000 |
---|---|---|
committer | Jan Schmidt <thaytan@mad.scientist.com> | 2008-01-11 21:08:59 +0000 |
commit | c2dddd0201c8eafb89219defe186904a5c4ee102 (patch) | |
tree | c229ad723125453b16ca3d3a5ce3c3277902fce6 /gst/id3demux | |
parent | a206c7bd3e2e3a99048d626308c482db1db6f627 (diff) |
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.
Diffstat (limited to 'gst/id3demux')
-rw-r--r-- | gst/id3demux/id3v2frames.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/gst/id3demux/id3v2frames.c b/gst/id3demux/id3v2frames.c index ec06dd24..0d0944ed 100644 --- a/gst/id3demux/id3v2frames.c +++ b/gst/id3demux/id3v2frames.c @@ -616,22 +616,29 @@ parse_picture_frame (ID3TagsWorking * work) } if (image && image_caps) { - if (pic_type > 0x14) - 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 == 0x01 || pic_type == 0x02) { - /* file icon of some sort */ + /* 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); } |