summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ext/flac/gstflacenc.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/ext/flac/gstflacenc.c b/ext/flac/gstflacenc.c
index 570c908bf..52525b7d5 100644
--- a/ext/flac/gstflacenc.c
+++ b/ext/flac/gstflacenc.c
@@ -625,6 +625,7 @@ gst_flac_enc_set_metadata (GstFlacEnc * flacenc, GstAudioInfo * info,
if (n_images + n_preview_images > 0) {
GstSample *sample;
GstBuffer *buffer;
+ GstCaps *caps;
const GstStructure *structure;
GstTagImageType image_type = GST_TAG_IMAGE_TYPE_NONE;
gint i;
@@ -641,16 +642,22 @@ gst_flac_enc_set_metadata (GstFlacEnc * flacenc, GstAudioInfo * info,
}
structure = gst_sample_get_info (sample);
- if (!structure) {
- GST_ERROR_OBJECT (flacenc, "No image tag info");
+ caps = gst_sample_get_caps (sample);
+ if (!caps) {
+ GST_FIXME_OBJECT (flacenc, "Image tag without caps");
+ gst_sample_unref (sample);
continue;
}
flacenc->meta[entries] =
FLAC__metadata_object_new (FLAC__METADATA_TYPE_PICTURE);
- gst_structure_get (structure, "image-type", GST_TYPE_TAG_IMAGE_TYPE,
- &image_type, NULL);
+ if (structure)
+ gst_structure_get (structure, "image-type", GST_TYPE_TAG_IMAGE_TYPE,
+ &image_type, NULL);
+ else
+ image_type = GST_TAG_IMAGE_TYPE_NONE;
+
/* Convert to ID3v2 APIC image type */
if (image_type == GST_TAG_IMAGE_TYPE_NONE)
image_type = (i < n_images) ? 0x00 : 0x01;
@@ -665,6 +672,9 @@ gst_flac_enc_set_metadata (GstFlacEnc * flacenc, GstAudioInfo * info,
/* FIXME: There's no way to set the picture type in libFLAC */
flacenc->meta[entries]->data.picture.type = image_type;
+
+ structure = gst_caps_get_structure (caps, 0);
+
FLAC__metadata_object_picture_set_mime_type (flacenc->meta[entries],
(char *) gst_structure_get_name (structure), TRUE);