From d41e8c68bfe9ff981f485698ffb6e4859c18e962 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Cerveau?= Date: Fri, 11 Dec 2020 18:46:20 +0100 Subject: [PATCH] theora: allow per feature registration Split plugin into features including dynamic types which can be indiviually registered during a static build. More details here: https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 Part-of: --- ext/theora/gsttheora.c | 22 ++++++++-------------- ext/theora/gsttheoradec.c | 2 ++ ext/theora/gsttheoradec.h | 2 ++ ext/theora/gsttheoraenc.c | 2 ++ ext/theora/gsttheoraenc.h | 2 ++ ext/theora/gsttheoraparse.c | 2 ++ ext/theora/gsttheoraparse.h | 2 ++ 7 files changed, 20 insertions(+), 14 deletions(-) diff --git a/ext/theora/gsttheora.c b/ext/theora/gsttheora.c index 48096c538e..3c7e2e0f28 100644 --- a/ext/theora/gsttheora.c +++ b/ext/theora/gsttheora.c @@ -23,26 +23,20 @@ #include -extern GType gst_theora_dec_get_type (void); -extern GType gst_theora_enc_get_type (void); -extern GType gst_theora_parse_get_type (void); +#include "gsttheoradec.h" +#include "gsttheoraenc.h" +#include "gsttheoraparse.h" static gboolean plugin_init (GstPlugin * plugin) { - if (!gst_element_register (plugin, "theoradec", GST_RANK_PRIMARY, - gst_theora_dec_get_type ())) - return FALSE; + gboolean ret = FALSE; - if (!gst_element_register (plugin, "theoraenc", GST_RANK_PRIMARY, - gst_theora_enc_get_type ())) - return FALSE; + ret |= GST_ELEMENT_REGISTER (theoradec, plugin); + ret |= GST_ELEMENT_REGISTER (theoraenc, plugin); + ret |= GST_ELEMENT_REGISTER (theoraparse, plugin); - if (!gst_element_register (plugin, "theoraparse", GST_RANK_NONE, - gst_theora_parse_get_type ())) - return FALSE; - - return TRUE; + return ret; } GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, diff --git a/ext/theora/gsttheoradec.c b/ext/theora/gsttheoradec.c index e76374a237..0d61a01ba0 100644 --- a/ext/theora/gsttheoradec.c +++ b/ext/theora/gsttheoradec.c @@ -91,6 +91,8 @@ GST_STATIC_PAD_TEMPLATE ("sink", #define gst_theora_dec_parent_class parent_class G_DEFINE_TYPE (GstTheoraDec, gst_theora_dec, GST_TYPE_VIDEO_DECODER); +GST_ELEMENT_REGISTER_DEFINE (theoradec, "theoradec", + GST_RANK_PRIMARY, GST_TYPE_THEORA_DEC); static void theora_dec_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec); diff --git a/ext/theora/gsttheoradec.h b/ext/theora/gsttheoradec.h index bc97178645..7689b76b09 100644 --- a/ext/theora/gsttheoradec.h +++ b/ext/theora/gsttheoradec.h @@ -87,6 +87,8 @@ struct _GstTheoraDecClass GType gst_theora_dec_get_type (void); +GST_ELEMENT_REGISTER_DECLARE (theoradec); + G_END_DECLS #endif /* __GST_THEORADEC_H__ */ diff --git a/ext/theora/gsttheoraenc.c b/ext/theora/gsttheoraenc.c index ba16890197..c531401160 100644 --- a/ext/theora/gsttheoraenc.c +++ b/ext/theora/gsttheoraenc.c @@ -176,6 +176,8 @@ GST_STATIC_PAD_TEMPLATE ("src", #define gst_theora_enc_parent_class parent_class G_DEFINE_TYPE (GstTheoraEnc, gst_theora_enc, GST_TYPE_VIDEO_ENCODER); +GST_ELEMENT_REGISTER_DEFINE (theoraenc, "theoraenc", + GST_RANK_PRIMARY, GST_TYPE_THEORA_ENC); static gboolean theora_enc_start (GstVideoEncoder * enc); static gboolean theora_enc_stop (GstVideoEncoder * enc); diff --git a/ext/theora/gsttheoraenc.h b/ext/theora/gsttheoraenc.h index 0cbb73ba41..6c0e044c32 100644 --- a/ext/theora/gsttheoraenc.h +++ b/ext/theora/gsttheoraenc.h @@ -113,6 +113,8 @@ struct _GstTheoraEncClass GType gst_theora_enc_get_type (void); +GST_ELEMENT_REGISTER_DECLARE (theoraenc); + G_END_DECLS #endif /* __GST_THEORAENC_H__ */ diff --git a/ext/theora/gsttheoraparse.c b/ext/theora/gsttheoraparse.c index b6f8a50812..3ce2841c1d 100644 --- a/ext/theora/gsttheoraparse.c +++ b/ext/theora/gsttheoraparse.c @@ -91,6 +91,8 @@ enum #define gst_theora_parse_parent_class parent_class G_DEFINE_TYPE (GstTheoraParse, gst_theora_parse, GST_TYPE_ELEMENT); +GST_ELEMENT_REGISTER_DEFINE (theoraparse, "theoraparse", + GST_RANK_NONE, GST_TYPE_THEORA_PARSE); static void theora_parse_dispose (GObject * object); diff --git a/ext/theora/gsttheoraparse.h b/ext/theora/gsttheoraparse.h index 9ab14489bf..ff7ef26eb0 100644 --- a/ext/theora/gsttheoraparse.h +++ b/ext/theora/gsttheoraparse.h @@ -82,6 +82,8 @@ struct _GstTheoraParseClass { GType gst_theora_parse_get_type(void); +GST_ELEMENT_REGISTER_DECLARE (theoraparse); + G_END_DECLS #endif /* __GST_THEORA_PARSE_H__ */