From: Sebastian Dröge Date: Mon, 26 Sep 2011 14:02:51 +0000 (+0200) Subject: Revert "audioencoder: Use GST_BOILERPLATE instead of custom GObject boilerplate code" X-Git-Tag: 1.19.3~511^2~6555^2~448 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f3f416004f70190449a9d9353cbb80620411e754;p=platform%2Fupstream%2Fgstreamer.git Revert "audioencoder: Use GST_BOILERPLATE instead of custom GObject boilerplate code" 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(). --- diff --git a/gst-libs/gst/audio/gstaudioencoder.c b/gst-libs/gst/audio/gstaudioencoder.c index b3ad1d4..57f6460 100644 --- a/gst-libs/gst/audio/gstaudioencoder.c +++ b/gst-libs/gst/audio/gstaudioencoder.c @@ -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;