mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 20:21:24 +00:00
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.
This commit is contained in:
parent
a206c7bd3e
commit
c2dddd0201
4 changed files with 46 additions and 24 deletions
13
ChangeLog
13
ChangeLog
|
@ -1,3 +1,16 @@
|
|||
2008-01-11 Jan Schmidt <Jan.Schmidt@sun.com>
|
||||
|
||||
* 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.
|
||||
|
||||
2008-01-11 Wim Taymans <wim.taymans@collabora.co.uk>
|
||||
|
||||
Patch by: Olivier Crete <tester at tester dot ca>
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/mixer.h>
|
||||
|
||||
#include <gst/gst-i18n-plugin.h>
|
||||
|
||||
|
@ -60,6 +61,8 @@ gst_sunaudiomixer_ctrl_open (GstSunAudioMixerCtrl * mixer)
|
|||
|
||||
return FALSE;
|
||||
}
|
||||
/* Try to set the multiple open flag if we can, but ignore errors */
|
||||
ioctl (mixer->mixer_fd, AUDIO_MIXER_MULTIPLE_OPEN);
|
||||
|
||||
mixer->mixer_fd = fd;
|
||||
return TRUE;
|
||||
|
|
Loading…
Reference in a new issue