Revert "audioencoder: Use GST_BOILERPLATE instead of custom GObject boilerplate code"
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Mon, 26 Sep 2011 14:02:51 +0000 (16:02 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Mon, 26 Sep 2011 14:02:51 +0000 (16:02 +0200)
This reverts commit 11e375486e07cfa0686a97b5cf6110909b3a828c.

GST_BOILERPLATE() can't define an abstract type and
G_DEFINE_ABSTRACT_TYPE() does not pass the class struct to
the instance_init function and there's no way to get the
class struct of the current type in instance_init().

gst-libs/gst/audio/gstaudioencoder.c

index b3ad1d4..57f6460 100644 (file)
@@ -247,6 +247,45 @@ struct _GstAudioEncoderPrivate
   GList *pending_events;
 };
 
+
+static GstElementClass *parent_class = NULL;
+
+static void gst_audio_encoder_class_init (GstAudioEncoderClass * klass);
+static void gst_audio_encoder_init (GstAudioEncoder * parse,
+    GstAudioEncoderClass * klass);
+
+GType
+gst_audio_encoder_get_type (void)
+{
+  static GType audio_encoder_type = 0;
+
+  if (!audio_encoder_type) {
+    static const GTypeInfo audio_encoder_info = {
+      sizeof (GstAudioEncoderClass),
+      (GBaseInitFunc) NULL,
+      (GBaseFinalizeFunc) NULL,
+      (GClassInitFunc) gst_audio_encoder_class_init,
+      NULL,
+      NULL,
+      sizeof (GstAudioEncoder),
+      0,
+      (GInstanceInitFunc) gst_audio_encoder_init,
+    };
+    const GInterfaceInfo preset_interface_info = {
+      NULL,                     /* interface_init */
+      NULL,                     /* interface_finalize */
+      NULL                      /* interface_data */
+    };
+
+    audio_encoder_type = g_type_register_static (GST_TYPE_ELEMENT,
+        "GstAudioEncoder", &audio_encoder_info, G_TYPE_FLAG_ABSTRACT);
+
+    g_type_add_interface_static (audio_encoder_type, GST_TYPE_PRESET,
+        &preset_interface_info);
+  }
+  return audio_encoder_type;
+}
+
 static void gst_audio_encoder_finalize (GObject * object);
 static void gst_audio_encoder_reset (GstAudioEncoder * enc, gboolean full);
 
@@ -266,20 +305,6 @@ static gboolean gst_audio_encoder_sink_query (GstPad * pad, GstQuery * query);
 static const GstQueryType *gst_audio_encoder_get_query_types (GstPad * pad);
 static GstCaps *gst_audio_encoder_sink_getcaps (GstPad * pad);
 
-static void
-do_init (GType gtype)
-{
-  const GInterfaceInfo preset_interface_info = {
-    NULL,                       /* interface_init */
-    NULL,                       /* interface_finalize */
-    NULL                        /* interface_data */
-  };
-
-  g_type_add_interface_static (gtype, GST_TYPE_PRESET, &preset_interface_info);
-}
-
-GST_BOILERPLATE_FULL (GstAudioEncoder, gst_audio_encoder, GstElement,
-    GST_TYPE_ELEMENT, do_init);
 
 static void
 gst_audio_encoder_class_init (GstAudioEncoderClass * klass)
@@ -287,6 +312,7 @@ gst_audio_encoder_class_init (GstAudioEncoderClass * klass)
   GObjectClass *gobject_class;
 
   gobject_class = G_OBJECT_CLASS (klass);
+  parent_class = g_type_class_peek_parent (klass);
 
   GST_DEBUG_CATEGORY_INIT (gst_audio_encoder_debug, "audioencoder", 0,
       "audio encoder base class");
@@ -319,11 +345,6 @@ gst_audio_encoder_class_init (GstAudioEncoderClass * klass)
 }
 
 static void
-gst_audio_encoder_base_init (gpointer g_class)
-{
-}
-
-static void
 gst_audio_encoder_init (GstAudioEncoder * enc, GstAudioEncoderClass * bclass)
 {
   GstPadTemplate *pad_template;