? ext/taglib/gstid3v2mux.alex.cc
Index: ext/taglib/gstid3v2mux.cc
===================================================================
RCS file: /cvs/gstreamer/gst-plugins-good/ext/taglib/gstid3v2mux.cc,v
retrieving revision 1.8
diff -u -r1.8 gstid3v2mux.cc
--- ext/taglib/gstid3v2mux.cc	19 Jul 2006 11:52:53 -0000	1.8
+++ ext/taglib/gstid3v2mux.cc	25 Jul 2006 08:46:06 -0000
@@ -54,7 +54,7 @@
 #endif
 
 #include "gstid3v2mux.h"
-
+#include "gst/id3demux/id3tags.h"
 #include <string.h>
 
 #include <textidentificationframe.h>
@@ -446,7 +446,28 @@
       GST_WARNING ("NULL image or no caps on image buffer (%p, caps=%"
           GST_PTR_FORMAT ")", image, (image) ? GST_BUFFER_CAPS (image) : NULL);
     }
-  } else {
+  } else if (strcmp (tag, GST_ID3_DEMUX_TAG_ID3V2_FRAME) == 0) {
+    const GValue *val;
+    GstBuffer *frame_data;
+    ID3v2::FrameFactory * framefactory;  
+    ID3v2::Frame * frame; 
+    const gchar *mime_type;
+    GstStructure *s;
+
+    val = gst_tag_list_get_value_index (list, tag, 0);
+    frame_data = (GstBuffer *) gst_value_get_mini_object (val);
+
+    s = gst_caps_get_structure (GST_BUFFER_CAPS (frame_data), 0);
+    mime_type = gst_structure_get_name (s);
+    
+    GST_DEBUG("Setting binary blob of length %u and mime-type %s", GST_BUFFER_DATA (frame_data), mime_type);
+
+    framefactory = ID3v2::FrameFactory::instance(); 
+    frame = framefactory->createFrame (ByteVector ((const char *) GST_BUFFER_DATA (frame_data),
+						   GST_BUFFER_SIZE (frame_data)), false);
+    id3v2tag->addFrame (frame); 
+  } 
+  else {
     GST_WARNING ("Unsupported tag: %s", tag);
   }
 }
