rtpmanager: 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: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/876>
This commit is contained in:
Stéphane Cerveau 2021-02-16 14:24:33 +01:00
parent 0438b199c8
commit d16e991bf4
31 changed files with 96 additions and 125 deletions

View file

@ -2000,6 +2000,7 @@ static void gst_rtp_bin_handle_message (GstBin * bin, GstMessage * message);
#define gst_rtp_bin_parent_class parent_class
G_DEFINE_TYPE_WITH_PRIVATE (GstRtpBin, gst_rtp_bin, GST_TYPE_BIN);
GST_ELEMENT_REGISTER_DEFINE (rtpbin, "rtpbin", GST_RANK_NONE, GST_TYPE_RTP_BIN);
static gboolean
_gst_element_accumulator (GSignalInvocationHint * ihint,

View file

@ -150,4 +150,6 @@ struct _GstRtpBinClass {
GType gst_rtp_bin_get_type (void);
GST_ELEMENT_REGISTER_DECLARE (rtpbin);
#endif /* __GST_RTP_BIN_H__ */

View file

@ -68,7 +68,11 @@ static gboolean gst_rtp_dtmf_mux_accept_buffer_locked (GstRTPMux * rtp_mux,
static gboolean gst_rtp_dtmf_mux_src_event (GstRTPMux * rtp_mux,
GstEvent * event);
G_DEFINE_TYPE (GstRTPDTMFMux, gst_rtp_dtmf_mux, GST_TYPE_RTP_MUX);
G_DEFINE_TYPE_WITH_CODE (GstRTPDTMFMux, gst_rtp_dtmf_mux, GST_TYPE_RTP_MUX,
GST_DEBUG_CATEGORY_INIT (gst_rtp_dtmf_mux_debug, "rtpdtmfmux", 0,
"rtp dtmf muxer"););
GST_ELEMENT_REGISTER_DEFINE (rtpdtmfmux, "rtpdtmfmux", GST_RANK_NONE,
GST_TYPE_RTP_DTMF_MUX);
static void
gst_rtp_dtmf_mux_init (GstRTPDTMFMux * mux)
@ -222,13 +226,3 @@ gst_rtp_dtmf_mux_change_state (GstElement * element, GstStateChange transition)
return ret;
}
gboolean
gst_rtp_dtmf_mux_plugin_init (GstPlugin * plugin)
{
GST_DEBUG_CATEGORY_INIT (gst_rtp_dtmf_mux_debug, "rtpdtmfmux", 0,
"rtp dtmf muxer");
return gst_element_register (plugin, "rtpdtmfmux", GST_RANK_NONE,
GST_TYPE_RTP_DTMF_MUX);
}

View file

@ -61,7 +61,8 @@ struct _GstRTPDTMFMuxClass
};
GType gst_rtp_dtmf_mux_get_type (void);
gboolean gst_rtp_dtmf_mux_plugin_init (GstPlugin * plugin);
GST_ELEMENT_REGISTER_DECLARE (rtpdtmfmux);
G_END_DECLS
#endif /* __GST_RTP_DTMF_MUX_H__ */

View file

@ -89,6 +89,8 @@ struct _GstRtpFunnelPad
};
G_DEFINE_TYPE (GstRtpFunnelPad, gst_rtp_funnel_pad, GST_TYPE_PAD);
GST_ELEMENT_REGISTER_DEFINE (rtpfunnel, "rtpfunnel", GST_RANK_NONE,
GST_TYPE_RTP_FUNNEL);
static void
gst_rtp_funnel_pad_class_init (G_GNUC_UNUSED GstRtpFunnelPadClass * klass)

View file

@ -35,6 +35,8 @@ typedef struct _GstRtpFunnel GstRtpFunnel;
GType gst_rtp_funnel_get_type (void);
GST_ELEMENT_REGISTER_DECLARE (rtpfunnel);
typedef struct _GstRtpFunnelPadClass GstRtpFunnelPadClass;
typedef struct _GstRtpFunnelPad GstRtpFunnelPad;

View file

@ -58,10 +58,12 @@ struct _GstRTPHeaderExtensionRfc6464
G_DEFINE_TYPE_WITH_CODE (GstRTPHeaderExtensionRfc6464,
gst_rtp_header_extension_rfc6464, GST_TYPE_RTP_HEADER_EXTENSION,
GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "rtphdrextrfc6464", 0,
"RTP RFC 6464 Header Extensions");
)
static void
gst_rtp_header_extension_rfc6464_get_property (GObject * object,
"RTP RFC 6464 Header Extensions"););
GST_ELEMENT_REGISTER_DEFINE (rtphdrextrfc6464, "rtphdrextrfc6464",
GST_RANK_MARGINAL, GST_TYPE_RTP_HEADER_EXTENSION_RFC6464);
static void
gst_rtp_header_extension_rfc6464_get_property (GObject * object,
guint prop_id, GValue * value, GParamSpec * pspec)
{
GstRTPHeaderExtensionRfc6464 *self =

View file

@ -25,6 +25,8 @@ G_BEGIN_DECLS
G_DECLARE_FINAL_TYPE (GstRTPHeaderExtensionRfc6464, gst_rtp_header_extension_rfc6464, GST, RTP_HEADER_EXTENSION_RFC6464, GstRTPHeaderExtension)
GST_ELEMENT_REGISTER_DECLARE (rtphdrextrfc6464);
G_END_DECLS
#endif /* __GST_RTPHDREXT_RFC6464_H__ */

View file

@ -43,6 +43,8 @@ G_DEFINE_TYPE_WITH_CODE (GstRTPHeaderExtensionTWCC,
GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "rtphdrexttwcc", 0,
"RTP TWCC Header Extensions");
);
GST_ELEMENT_REGISTER_DEFINE (rtphdrexttwcc, "rtphdrexttwcc", GST_RANK_MARGINAL,
GST_TYPE_RTP_HEADER_EXTENSION_TWCC);
#define TWCC_EXTMAP_STR "http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01"

View file

@ -76,6 +76,8 @@ struct _GstRTPHeaderExtensionTWCCClass
gpointer _gst_reserved[GST_PADDING];
};
GST_ELEMENT_REGISTER_DECLARE (rtphdrexttwcc);
G_END_DECLS
#endif /* __GST_RTPHDREXT_TWCC_H__ */

View file

@ -453,6 +453,8 @@ static guint gst_rtp_jitter_buffer_signals[LAST_SIGNAL] = { 0 };
#define gst_rtp_jitter_buffer_parent_class parent_class
G_DEFINE_TYPE_WITH_PRIVATE (GstRtpJitterBuffer, gst_rtp_jitter_buffer,
GST_TYPE_ELEMENT);
GST_ELEMENT_REGISTER_DEFINE (rtpjitterbuffer, "rtpjitterbuffer", GST_RANK_NONE,
GST_TYPE_RTP_JITTER_BUFFER);
/* object overrides */
static void gst_rtp_jitter_buffer_set_property (GObject * object,

View file

@ -82,6 +82,8 @@ struct _GstRtpJitterBufferClass
GType gst_rtp_jitter_buffer_get_type (void);
GST_ELEMENT_REGISTER_DECLARE (rtpjitterbuffer);
G_END_DECLS
#endif /* __GST_RTP_JITTER_BUFFER_H__ */

View file

@ -40,65 +40,27 @@
static gboolean
plugin_init (GstPlugin * plugin)
{
if (!gst_element_register (plugin, "rtpbin", GST_RANK_NONE, GST_TYPE_RTP_BIN))
return FALSE;
gboolean ret = FALSE;
if (!gst_element_register (plugin, "rtpjitterbuffer", GST_RANK_NONE,
GST_TYPE_RTP_JITTER_BUFFER))
return FALSE;
ret |= GST_ELEMENT_REGISTER (rtpbin, plugin);
ret |= GST_ELEMENT_REGISTER (rtpjitterbuffer, plugin);
ret |= GST_ELEMENT_REGISTER (rtpptdemux, plugin);
ret |= GST_ELEMENT_REGISTER (rtpsession, plugin);
ret |= GST_ELEMENT_REGISTER (rtprtxqueue, plugin);
ret |= GST_ELEMENT_REGISTER (rtprtxreceive, plugin);
ret |= GST_ELEMENT_REGISTER (rtprtxsend, plugin);
ret |= GST_ELEMENT_REGISTER (rtpssrcdemux, plugin);
ret |= GST_ELEMENT_REGISTER (rtpmux, plugin);
ret |= GST_ELEMENT_REGISTER (rtpdtmfmux, plugin);
ret |= GST_ELEMENT_REGISTER (rtpfunnel, plugin);
ret |= GST_ELEMENT_REGISTER (rtpst2022_1_fecdec, plugin);
ret |= GST_ELEMENT_REGISTER (rtpst2022_1_fecenc, plugin);
ret |= GST_ELEMENT_REGISTER (rtphdrexttwcc, plugin);
ret |= GST_ELEMENT_REGISTER (rtphdrextrfc6464, plugin);
if (!gst_element_register (plugin, "rtpptdemux", GST_RANK_NONE,
GST_TYPE_RTP_PT_DEMUX))
return FALSE;
if (!gst_element_register (plugin, "rtpsession", GST_RANK_NONE,
GST_TYPE_RTP_SESSION))
return FALSE;
if (!gst_rtp_rtx_queue_plugin_init (plugin))
return FALSE;
if (!gst_rtp_rtx_receive_plugin_init (plugin))
return FALSE;
if (!gst_rtp_rtx_send_plugin_init (plugin))
return FALSE;
if (!gst_element_register (plugin, "rtpssrcdemux", GST_RANK_NONE,
GST_TYPE_RTP_SSRC_DEMUX))
return FALSE;
if (!gst_rtp_mux_plugin_init (plugin))
return FALSE;
if (!gst_rtp_dtmf_mux_plugin_init (plugin))
return FALSE;
if (!gst_element_register (plugin, "rtpfunnel", GST_RANK_NONE,
GST_TYPE_RTP_FUNNEL))
return FALSE;
if (!gst_element_register (plugin, "rtpst2022-1-fecdec", GST_RANK_NONE,
GST_TYPE_RTPST_2022_1_FECDEC))
return FALSE;
if (!gst_element_register (plugin, "rtpst2022-1-fecenc", GST_RANK_NONE,
GST_TYPE_RTPST_2022_1_FECENC))
return FALSE;
if (!gst_element_register (plugin, "rtphdrexttwcc", GST_RANK_MARGINAL,
GST_TYPE_RTP_HEADER_EXTENSION_TWCC))
return FALSE;
if (!gst_element_register (plugin, "rtphdrextrfc6464", GST_RANK_MARGINAL,
GST_TYPE_RTP_HEADER_EXTENSION_RFC6464))
return FALSE;
return TRUE;
return ret;
}
GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
GST_VERSION_MINOR,
rtpmanager,
"RTP session management plugin library",
plugin_init, VERSION, "LGPL", GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, GST_VERSION_MINOR, rtpmanager,
"RTP session management plugin library", plugin_init, VERSION, "LGPL",
GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)

View file

@ -112,8 +112,9 @@ static void gst_rtp_mux_dispose (GObject * object);
static gboolean gst_rtp_mux_src_event_real (GstRTPMux * rtp_mux,
GstEvent * event);
G_DEFINE_TYPE (GstRTPMux, gst_rtp_mux, GST_TYPE_ELEMENT);
G_DEFINE_TYPE_WITH_CODE (GstRTPMux, gst_rtp_mux, GST_TYPE_ELEMENT,
GST_DEBUG_CATEGORY_INIT (gst_rtp_mux_debug, "rtpmux", 0, "rtp muxer"));
GST_ELEMENT_REGISTER_DEFINE (rtpmux, "rtpmux", GST_RANK_NONE, GST_TYPE_RTP_MUX);
static void
gst_rtp_mux_class_init (GstRTPMuxClass * klass)
@ -1013,12 +1014,3 @@ gst_rtp_mux_change_state (GstElement * element, GstStateChange transition)
return ret;
}
gboolean
gst_rtp_mux_plugin_init (GstPlugin * plugin)
{
GST_DEBUG_CATEGORY_INIT (gst_rtp_mux_debug, "rtpmux", 0, "rtp muxer");
return gst_element_register (plugin, "rtpmux", GST_RANK_NONE,
GST_TYPE_RTP_MUX);
}

View file

@ -88,9 +88,9 @@ struct _GstRTPMuxClass
gboolean (*src_event) (GstRTPMux *rtp_mux, GstEvent *event);
};
GType gst_rtp_mux_get_type (void);
gboolean gst_rtp_mux_plugin_init (GstPlugin * plugin);
GST_ELEMENT_REGISTER_DECLARE (rtpmux);
G_END_DECLS
#endif /* __GST_RTP_MUX_H__ */

View file

@ -122,6 +122,8 @@ enum
#define gst_rtp_pt_demux_parent_class parent_class
G_DEFINE_TYPE (GstRtpPtDemux, gst_rtp_pt_demux, GST_TYPE_ELEMENT);
GST_ELEMENT_REGISTER_DEFINE (rtpptdemux, "rtpptdemux", GST_RANK_NONE,
GST_TYPE_RTP_PT_DEMUX);
static void gst_rtp_pt_demux_finalize (GObject * object);

View file

@ -60,4 +60,6 @@ struct _GstRtpPtDemuxClass
GType gst_rtp_pt_demux_get_type (void);
GST_ELEMENT_REGISTER_DECLARE (rtpptdemux);
#endif /* __GST_RTP_PT_DEMUX_H__ */

View file

@ -122,7 +122,11 @@ static void gst_rtp_rtx_queue_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * pspec);
static void gst_rtp_rtx_queue_finalize (GObject * object);
G_DEFINE_TYPE (GstRTPRtxQueue, gst_rtp_rtx_queue, GST_TYPE_ELEMENT);
G_DEFINE_TYPE_WITH_CODE (GstRTPRtxQueue, gst_rtp_rtx_queue, GST_TYPE_ELEMENT,
GST_DEBUG_CATEGORY_INIT (gst_rtp_rtx_queue_debug, "rtprtxqueue", 0,
"rtp retransmission queue"));
GST_ELEMENT_REGISTER_DEFINE (rtprtxqueue, "rtprtxqueue", GST_RANK_NONE,
GST_TYPE_RTP_RTX_QUEUE);
static void
gst_rtp_rtx_queue_class_init (GstRTPRtxQueueClass * klass)
@ -514,13 +518,3 @@ gst_rtp_rtx_queue_change_state (GstElement * element, GstStateChange transition)
return ret;
}
gboolean
gst_rtp_rtx_queue_plugin_init (GstPlugin * plugin)
{
GST_DEBUG_CATEGORY_INIT (gst_rtp_rtx_queue_debug, "rtprtxqueue", 0,
"rtp retransmission queue");
return gst_element_register (plugin, "rtprtxqueue", GST_RANK_NONE,
GST_TYPE_RTP_RTX_QUEUE);
}

View file

@ -72,9 +72,9 @@ struct _GstRTPRtxQueueClass
GstElementClass parent_class;
};
GType gst_rtp_rtx_queue_get_type (void);
gboolean gst_rtp_rtx_queue_plugin_init (GstPlugin * plugin);
GST_ELEMENT_REGISTER_DECLARE (rtprtxqueue);
G_END_DECLS
#endif /* __GST_RTP_RTX_QUEUE_H__ */

View file

@ -191,7 +191,11 @@ static void gst_rtp_rtx_receive_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * pspec);
static void gst_rtp_rtx_receive_finalize (GObject * object);
G_DEFINE_TYPE (GstRtpRtxReceive, gst_rtp_rtx_receive, GST_TYPE_ELEMENT);
G_DEFINE_TYPE_WITH_CODE (GstRtpRtxReceive, gst_rtp_rtx_receive,
GST_TYPE_ELEMENT, GST_DEBUG_CATEGORY_INIT (gst_rtp_rtx_receive_debug,
"rtprtxreceive", 0, "rtp retransmission receiver"));
GST_ELEMENT_REGISTER_DEFINE (rtprtxreceive, "rtprtxreceive", GST_RANK_NONE,
GST_TYPE_RTP_RTX_RECEIVE);
static void
gst_rtp_rtx_receive_class_init (GstRtpRtxReceiveClass * klass)
@ -785,13 +789,3 @@ gst_rtp_rtx_receive_change_state (GstElement * element,
return ret;
}
gboolean
gst_rtp_rtx_receive_plugin_init (GstPlugin * plugin)
{
GST_DEBUG_CATEGORY_INIT (gst_rtp_rtx_receive_debug, "rtprtxreceive", 0,
"rtp retransmission receiver");
return gst_element_register (plugin, "rtprtxreceive", GST_RANK_NONE,
GST_TYPE_RTP_RTX_RECEIVE);
}

View file

@ -74,7 +74,8 @@ struct _GstRtpRtxReceiveClass
GType gst_rtp_rtx_receive_get_type (void);
gboolean gst_rtp_rtx_receive_plugin_init (GstPlugin * plugin);
GST_ELEMENT_REGISTER_DECLARE (rtprtxreceive);
G_END_DECLS
#endif /* __GST_RTP_RTX_RECEIVE_H__ */

View file

@ -103,7 +103,11 @@ static void gst_rtp_rtx_send_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * pspec);
static void gst_rtp_rtx_send_finalize (GObject * object);
G_DEFINE_TYPE (GstRtpRtxSend, gst_rtp_rtx_send, GST_TYPE_ELEMENT);
G_DEFINE_TYPE_WITH_CODE (GstRtpRtxSend, gst_rtp_rtx_send, GST_TYPE_ELEMENT,
GST_DEBUG_CATEGORY_INIT (gst_rtp_rtx_send_debug, "rtprtxsend", 0,
"rtp retransmission sender"));
GST_ELEMENT_REGISTER_DEFINE (rtprtxsend, "rtprtxsend", GST_RANK_NONE,
GST_TYPE_RTP_RTX_SEND);
typedef struct
{
@ -994,13 +998,3 @@ gst_rtp_rtx_send_change_state (GstElement * element, GstStateChange transition)
return ret;
}
gboolean
gst_rtp_rtx_send_plugin_init (GstPlugin * plugin)
{
GST_DEBUG_CATEGORY_INIT (gst_rtp_rtx_send_debug, "rtprtxsend", 0,
"rtp retransmission sender");
return gst_element_register (plugin, "rtprtxsend", GST_RANK_NONE,
GST_TYPE_RTP_RTX_SEND);
}

View file

@ -81,9 +81,9 @@ struct _GstRtpRtxSendClass
GstElementClass parent_class;
};
GType gst_rtp_rtx_send_get_type (void);
gboolean gst_rtp_rtx_send_plugin_init (GstPlugin * plugin);
GST_ELEMENT_REGISTER_DECLARE (rtprtxsend);
G_END_DECLS
#endif /* __GST_RTP_RTX_SEND_H__ */

View file

@ -491,6 +491,8 @@ on_notify_stats (RTPSession * session, GParamSpec * spec,
#define gst_rtp_session_parent_class parent_class
G_DEFINE_TYPE_WITH_PRIVATE (GstRtpSession, gst_rtp_session, GST_TYPE_ELEMENT);
GST_ELEMENT_REGISTER_DEFINE (rtpsession, "rtpsession", GST_RANK_NONE,
GST_TYPE_RTP_SESSION);
static void
gst_rtp_session_class_init (GstRtpSessionClass * klass)

View file

@ -80,6 +80,8 @@ struct _GstRtpSessionClass {
GType gst_rtp_session_get_type (void);
GST_ELEMENT_REGISTER_DECLARE (rtpsession);
typedef enum {
GST_RTP_NTP_TIME_SOURCE_NTP,
GST_RTP_NTP_TIME_SOURCE_UNIX,

View file

@ -107,6 +107,8 @@ enum
#define gst_rtp_ssrc_demux_parent_class parent_class
G_DEFINE_TYPE (GstRtpSsrcDemux, gst_rtp_ssrc_demux, GST_TYPE_ELEMENT);
GST_ELEMENT_REGISTER_DEFINE (rtpssrcdemux, "rtpssrcdemux", GST_RANK_NONE,
GST_TYPE_RTP_SSRC_DEMUX);
/* GObject vmethods */
static void gst_rtp_ssrc_demux_dispose (GObject * object);

View file

@ -58,4 +58,6 @@ struct _GstRtpSsrcDemuxClass
GType gst_rtp_ssrc_demux_get_type (void);
GST_ELEMENT_REGISTER_DECLARE (rtpssrcdemux);
#endif /* __GST_RTP_SSRC_DEMUX_H__ */

View file

@ -192,6 +192,8 @@ static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src",
#define gst_rtpst_2022_1_fecdec_parent_class parent_class
G_DEFINE_TYPE (GstRTPST_2022_1_FecDec, gst_rtpst_2022_1_fecdec,
GST_TYPE_ELEMENT);
GST_ELEMENT_REGISTER_DEFINE (rtpst2022_1_fecdec, "rtpst2022-1-fecdec",
GST_RANK_NONE, GST_TYPE_RTPST_2022_1_FECDEC);
static void
trim_items (GstRTPST_2022_1_FecDec * dec)

View file

@ -32,6 +32,8 @@ typedef struct _GstRTPST_2022_1_FecDec GstRTPST_2022_1_FecDec;
GType gst_rtpst_2022_1_fecdec_get_type (void);
GST_ELEMENT_REGISTER_DECLARE (rtpst2022_1_fecdec);
G_END_DECLS
#endif /* __GST_RTPST_2022_1_FECDEC_H__ */

View file

@ -212,6 +212,8 @@ static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src",
#define gst_rtpst_2022_1_fecenc_parent_class parent_class
G_DEFINE_TYPE (GstRTPST_2022_1_FecEnc, gst_rtpst_2022_1_fecenc,
GST_TYPE_ELEMENT);
GST_ELEMENT_REGISTER_DEFINE (rtpst2022_1_fecenc, "rtpst2022-1-fecenc",
GST_RANK_NONE, GST_TYPE_RTPST_2022_1_FECENC);
static void
free_item (Item * item)

View file

@ -32,6 +32,8 @@ typedef struct _GstRTPST_2022_1_FecEnc GstRTPST_2022_1_FecEnc;
GType gst_rtpst_2022_1_fecenc_get_type (void);
GST_ELEMENT_REGISTER_DECLARE (rtpst2022_1_fecenc);
G_END_DECLS
#endif /* __GST_RTPST_2022_1_FECENC_H__ */