flacdec: don't extract metadata, leave that to the parser or container
authorTim-Philipp Müller <tim.muller@collabora.co.uk>
Sun, 30 Oct 2011 18:49:21 +0000 (18:49 +0000)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Sun, 30 Oct 2011 19:12:44 +0000 (19:12 +0000)
ext/flac/gstflacdec.c
ext/flac/gstflacdec.h

index 2a1f170..cdefba8 100644 (file)
@@ -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);
 
index 87ef18d..8572e8d 100644 (file)
@@ -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 */