From ab591b6d536d5ede62d6629dc8ed2a1d58a222ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Sun, 30 Oct 2011 18:49:21 +0000 Subject: [PATCH] flacdec: don't extract metadata, leave that to the parser or container --- ext/flac/gstflacdec.c | 91 ------------------------------------------- ext/flac/gstflacdec.h | 2 - 2 files changed, 93 deletions(-) diff --git a/ext/flac/gstflacdec.c b/ext/flac/gstflacdec.c index 2a1f170fb5..cdefba8cf8 100644 --- a/ext/flac/gstflacdec.c +++ b/ext/flac/gstflacdec.c @@ -189,19 +189,12 @@ gst_flac_dec_start (GstAudioDecoder * audio_dec) dec = GST_FLAC_DEC (audio_dec); - ///////////// FIXME: - dec->tags = gst_tag_list_new (GST_TAG_AUDIO_CODEC, "FLAC", NULL); - dec->adapter = gst_adapter_new (); dec->decoder = FLAC__stream_decoder_new (); /* no point calculating MD5 since it's never checked here */ FLAC__stream_decoder_set_md5_checking (dec->decoder, false); - FLAC__stream_decoder_set_metadata_respond (dec->decoder, - FLAC__METADATA_TYPE_VORBIS_COMMENT); - FLAC__stream_decoder_set_metadata_respond (dec->decoder, - FLAC__METADATA_TYPE_PICTURE); GST_DEBUG_OBJECT (dec, "initializing decoder"); s = FLAC__stream_decoder_init_stream (dec->decoder, @@ -235,11 +228,6 @@ gst_flac_dec_stop (GstAudioDecoder * dec) flacdec->adapter = NULL; } - if (flacdec->tags) { - gst_tag_list_free (flacdec->tags); - flacdec->tags = NULL; - } - return TRUE; } @@ -264,41 +252,6 @@ gst_flac_dec_set_format (GstAudioDecoder * dec, GstCaps * caps) return TRUE; } -static gboolean -gst_flac_dec_update_metadata (GstFlacDec * flacdec, - const FLAC__StreamMetadata * metadata) -{ - GstTagList *list; - guint num, i; - - if (flacdec->tags) - list = flacdec->tags; - else - flacdec->tags = list = gst_tag_list_new_empty (); - - num = metadata->data.vorbis_comment.num_comments; - GST_DEBUG_OBJECT (flacdec, "%u tag(s) found", num); - - for (i = 0; i < num; ++i) { - gchar *vc, *name, *value; - - vc = g_strndup ((gchar *) metadata->data.vorbis_comment.comments[i].entry, - metadata->data.vorbis_comment.comments[i].length); - - if (gst_tag_parse_extended_comment (vc, &name, NULL, &value, TRUE)) { - GST_DEBUG_OBJECT (flacdec, "%s : %s", name, value); - if (value && strlen (value)) - gst_vorbis_tag_add (list, name, value); - g_free (name); - g_free (value); - } - - g_free (vc); - } - - return TRUE; -} - /* CRC-8, poly = x^8 + x^2 + x^1 + x^0, init = 0 */ static const guint8 crc8_table[256] = { 0x00, 0x07, 0x0E, 0x09, 0x1C, 0x1B, 0x12, 0x15, @@ -434,37 +387,6 @@ gst_flac_dec_scan_got_frame (GstFlacDec * flacdec, guint8 * data, guint size, return TRUE; } -/* FIXME: let parser extract tags */ -static void -gst_flac_extract_picture_buffer (GstFlacDec * dec, - const FLAC__StreamMetadata * metadata) -{ - FLAC__StreamMetadata_Picture picture; - GstTagList *tags; - - g_return_if_fail (metadata->type == FLAC__METADATA_TYPE_PICTURE); - - GST_LOG_OBJECT (dec, "Got PICTURE block"); - picture = metadata->data.picture; - - GST_DEBUG_OBJECT (dec, "declared MIME type is: '%s'", - GST_STR_NULL (picture.mime_type)); - GST_DEBUG_OBJECT (dec, "image data is %u bytes", picture.data_length); - - tags = gst_tag_list_new_empty (); - - gst_tag_list_add_id3_image (tags, (guint8 *) picture.data, - picture.data_length, picture.type); - - if (!gst_tag_list_is_empty (tags)) { - gst_element_found_tags_for_pad (GST_ELEMENT (dec), - GST_AUDIO_DECODER_SRC_PAD (dec), tags); - } else { - GST_DEBUG_OBJECT (dec, "problem parsing PICTURE block, skipping"); - gst_tag_list_free (tags); - } -} - static void gst_flac_dec_metadata_cb (const FLAC__StreamDecoder * decoder, const FLAC__StreamMetadata * metadata, void *client_data) @@ -503,13 +425,6 @@ gst_flac_dec_metadata_cb (const FLAC__StreamDecoder * decoder, GST_DEBUG_OBJECT (flacdec, "total samples = %" G_GINT64_FORMAT, samples); break; } - case FLAC__METADATA_TYPE_PICTURE:{ - gst_flac_extract_picture_buffer (flacdec, metadata); - break; - } - case FLAC__METADATA_TYPE_VORBIS_COMMENT: - gst_flac_dec_update_metadata (flacdec, metadata); - break; default: break; } @@ -660,12 +575,6 @@ gst_flac_dec_write (GstFlacDec * flacdec, const FLAC__Frame * frame, gst_caps_unref (caps); } - if (flacdec->tags) { - gst_element_found_tags_for_pad (GST_ELEMENT (flacdec), - GST_AUDIO_DECODER_SRC_PAD (flacdec), flacdec->tags); - flacdec->tags = NULL; - } - GST_LOG_OBJECT (flacdec, "alloc_buffer_and_set_caps"); outbuf = gst_buffer_new_allocate (NULL, samples * channels * (width / 8), 0); diff --git a/ext/flac/gstflacdec.h b/ext/flac/gstflacdec.h index 87ef18d026..8572e8db84 100644 --- a/ext/flac/gstflacdec.h +++ b/ext/flac/gstflacdec.h @@ -47,8 +47,6 @@ struct _GstFlacDec { gboolean got_headers; /* have we received all the header buffers yet? */ - GstTagList *tags; - GstFlowReturn last_flow; /* to marshal flow return from finis_frame to * handle_frame via flac callbacks */