diff options
author | Stéphane Cerveau <scerveau@collabora.com> | 2021-02-19 12:00:13 +0100 |
---|---|---|
committer | GStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org> | 2021-03-23 14:19:17 +0000 |
commit | 0a04c215d1172e1c403ec6fcfd557d2b3b2f2b48 (patch) | |
tree | 382028d3969a783c9dbc5c71a686575599c2156a /ext | |
parent | 144623bd4353a0233e703f2d1a39cde97c80b73a (diff) | |
download | gstreamer-plugins-bad-0a04c215d1172e1c403ec6fcfd557d2b3b2f2b48.tar.gz |
rtmp: 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-bad/-/merge_requests/2038>
Diffstat (limited to 'ext')
-rw-r--r-- | ext/rtmp/gstrtmp.c | 80 | ||||
-rw-r--r-- | ext/rtmp/gstrtmpelement.c | 113 | ||||
-rw-r--r-- | ext/rtmp/gstrtmpelements.h | 35 | ||||
-rw-r--r-- | ext/rtmp/gstrtmpsink.c | 3 | ||||
-rw-r--r-- | ext/rtmp/gstrtmpsink.h | 1 | ||||
-rw-r--r-- | ext/rtmp/gstrtmpsrc.c | 3 | ||||
-rw-r--r-- | ext/rtmp/meson.build | 1 |
7 files changed, 160 insertions, 76 deletions
diff --git a/ext/rtmp/gstrtmp.c b/ext/rtmp/gstrtmp.c index 935304d41..4031e768a 100644 --- a/ext/rtmp/gstrtmp.c +++ b/ext/rtmp/gstrtmp.c @@ -31,87 +31,15 @@ #include <gst/gst.h> -#include "gstrtmpsrc.h" -#include "gstrtmpsink.h" - -#ifndef GST_DISABLE_GST_DEBUG -GST_DEBUG_CATEGORY_STATIC (rtmp_debug); - -static void -gst_rtmp_log_callback (int level, const gchar * fmt, va_list vl) -{ - GstDebugLevel gst_level; - - switch (level) { - case RTMP_LOGCRIT: - case RTMP_LOGERROR: - gst_level = GST_LEVEL_ERROR; - break; - case RTMP_LOGWARNING: - gst_level = GST_LEVEL_WARNING; - break; - case RTMP_LOGINFO: - gst_level = GST_LEVEL_INFO; - break; - case RTMP_LOGDEBUG: - gst_level = GST_LEVEL_DEBUG; - break; - case RTMP_LOGDEBUG2: - gst_level = GST_LEVEL_LOG; - break; - default: - gst_level = GST_LEVEL_TRACE; - break; - } - - gst_debug_log_valist (rtmp_debug, gst_level, "", "", 0, NULL, fmt, vl); -} - -static void -_set_debug_level (void) -{ - GstDebugLevel gst_level; - - RTMP_LogSetCallback (gst_rtmp_log_callback); - gst_level = gst_debug_category_get_threshold (rtmp_debug); - - switch (gst_level) { - case GST_LEVEL_ERROR: - RTMP_LogSetLevel (RTMP_LOGERROR); - break; - case GST_LEVEL_WARNING: - case GST_LEVEL_FIXME: - RTMP_LogSetLevel (RTMP_LOGWARNING); - break; - case GST_LEVEL_INFO: - RTMP_LogSetLevel (RTMP_LOGINFO); - break; - case GST_LEVEL_DEBUG: - RTMP_LogSetLevel (RTMP_LOGDEBUG); - break; - case GST_LEVEL_LOG: - RTMP_LogSetLevel (RTMP_LOGDEBUG2); - break; - default: /* _TRACE and beyond */ - RTMP_LogSetLevel (RTMP_LOGALL); - } -} -#endif +#include "gstrtmpelements.h" static gboolean plugin_init (GstPlugin * plugin) { - gboolean ret; - -#ifndef GST_DISABLE_GST_DEBUG - GST_DEBUG_CATEGORY_INIT (rtmp_debug, "rtmp", 0, "libRTMP logging"); - _set_debug_level (); -#endif + gboolean ret = FALSE; - ret = gst_element_register (plugin, "rtmpsrc", GST_RANK_PRIMARY, - GST_TYPE_RTMP_SRC); - ret &= gst_element_register (plugin, "rtmpsink", GST_RANK_PRIMARY, - GST_TYPE_RTMP_SINK); + ret |= GST_ELEMENT_REGISTER (rtmpsrc, plugin); + ret |= GST_ELEMENT_REGISTER (rtmpsink, plugin); return ret; } diff --git a/ext/rtmp/gstrtmpelement.c b/ext/rtmp/gstrtmpelement.c new file mode 100644 index 000000000..486f2d51d --- /dev/null +++ b/ext/rtmp/gstrtmpelement.c @@ -0,0 +1,113 @@ +/* GStreamer + * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu> + * 2000 Wim Taymans <wtay@chello.be> + * 2002 Kristian Rietveld <kris@gtk.org> + * 2002,2003 Colin Walters <walters@gnu.org> + * 2001,2010 Bastien Nocera <hadess@hadess.net> + * 2010 Sebastian Dröge <sebastian.droege@collabora.co.uk> + * 2010 Jan Schmidt <thaytan@noraisin.net> + * + * rtmpsrc.c: + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <gst/gst.h> + +#include "gstrtmpelements.h" +#include "gstrtmpsrc.h" +#include "gstrtmpsink.h" + +#ifndef GST_DISABLE_GST_DEBUG +GST_DEBUG_CATEGORY_STATIC (rtmp_debug); + +static void +gst_rtmp_log_callback (int level, const gchar * fmt, va_list vl) +{ + GstDebugLevel gst_level; + + switch (level) { + case RTMP_LOGCRIT: + case RTMP_LOGERROR: + gst_level = GST_LEVEL_ERROR; + break; + case RTMP_LOGWARNING: + gst_level = GST_LEVEL_WARNING; + break; + case RTMP_LOGINFO: + gst_level = GST_LEVEL_INFO; + break; + case RTMP_LOGDEBUG: + gst_level = GST_LEVEL_DEBUG; + break; + case RTMP_LOGDEBUG2: + gst_level = GST_LEVEL_LOG; + break; + default: + gst_level = GST_LEVEL_TRACE; + break; + } + + gst_debug_log_valist (rtmp_debug, gst_level, "", "", 0, NULL, fmt, vl); +} + +static void +_set_debug_level (void) +{ + GstDebugLevel gst_level; + + RTMP_LogSetCallback (gst_rtmp_log_callback); + gst_level = gst_debug_category_get_threshold (rtmp_debug); + + switch (gst_level) { + case GST_LEVEL_ERROR: + RTMP_LogSetLevel (RTMP_LOGERROR); + break; + case GST_LEVEL_WARNING: + case GST_LEVEL_FIXME: + RTMP_LogSetLevel (RTMP_LOGWARNING); + break; + case GST_LEVEL_INFO: + RTMP_LogSetLevel (RTMP_LOGINFO); + break; + case GST_LEVEL_DEBUG: + RTMP_LogSetLevel (RTMP_LOGDEBUG); + break; + case GST_LEVEL_LOG: + RTMP_LogSetLevel (RTMP_LOGDEBUG2); + break; + default: /* _TRACE and beyond */ + RTMP_LogSetLevel (RTMP_LOGALL); + } +} +#endif + +void +rtmp_element_init (GstPlugin * plugin) +{ + static gsize res = FALSE; + if (g_once_init_enter (&res)) { +#ifndef GST_DISABLE_GST_DEBUG + GST_DEBUG_CATEGORY_INIT (rtmp_debug, "rtmp", 0, "libRTMP logging"); + _set_debug_level (); +#endif + g_once_init_leave (&res, TRUE); + } +} diff --git a/ext/rtmp/gstrtmpelements.h b/ext/rtmp/gstrtmpelements.h new file mode 100644 index 000000000..bab18e17e --- /dev/null +++ b/ext/rtmp/gstrtmpelements.h @@ -0,0 +1,35 @@ +/* GStreamer + * Copyright (C) <2020> Julian Bouzas <julian.bouzas@collabora.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + + +#ifndef __GST_RSVG_H__ +#define __GST_RSVG_H__ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <gst/gst.h> + +void rtmp_element_init (GstPlugin * plugin); + +GST_ELEMENT_REGISTER_DECLARE (rtmpsink); +GST_ELEMENT_REGISTER_DECLARE (rtmpsrc); + +#endif /* __GST_RSVG_H__ */ diff --git a/ext/rtmp/gstrtmpsink.c b/ext/rtmp/gstrtmpsink.c index aed5ab412..ec640ad04 100644 --- a/ext/rtmp/gstrtmpsink.c +++ b/ext/rtmp/gstrtmpsink.c @@ -41,6 +41,7 @@ #include <gst/gst.h> +#include "gstrtmpelements.h" #include "gstrtmpsink.h" #ifdef G_OS_WIN32 @@ -83,6 +84,8 @@ static GstFlowReturn gst_rtmp_sink_render (GstBaseSink * sink, GstBuffer * buf); G_DEFINE_TYPE_WITH_CODE (GstRTMPSink, gst_rtmp_sink, GST_TYPE_BASE_SINK, G_IMPLEMENT_INTERFACE (GST_TYPE_URI_HANDLER, gst_rtmp_sink_uri_handler_init)); +GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (rtmpsink, "rtmpsink", GST_RANK_PRIMARY, + GST_TYPE_RTMP_SINK, rtmp_element_init (plugin)); /* initialize the plugin's class */ static void diff --git a/ext/rtmp/gstrtmpsink.h b/ext/rtmp/gstrtmpsink.h index b9072f500..daaa3bba7 100644 --- a/ext/rtmp/gstrtmpsink.h +++ b/ext/rtmp/gstrtmpsink.h @@ -64,6 +64,7 @@ struct _GstRTMPSinkClass { GType gst_rtmp_sink_get_type (void); + G_END_DECLS #endif /* __GST_RTMP_SINK_H__ */ diff --git a/ext/rtmp/gstrtmpsrc.c b/ext/rtmp/gstrtmpsrc.c index 7efe64c63..ca0c61010 100644 --- a/ext/rtmp/gstrtmpsrc.c +++ b/ext/rtmp/gstrtmpsrc.c @@ -45,6 +45,7 @@ #include <gst/gst-i18n-plugin.h> +#include "gstrtmpelements.h" #include "gstrtmpsrc.h" #include <stdio.h> @@ -104,6 +105,8 @@ static gboolean gst_rtmp_src_query (GstBaseSrc * src, GstQuery * query); G_DEFINE_TYPE_WITH_CODE (GstRTMPSrc, gst_rtmp_src, GST_TYPE_PUSH_SRC, G_IMPLEMENT_INTERFACE (GST_TYPE_URI_HANDLER, gst_rtmp_src_uri_handler_init)); +GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (rtmpsrc, "rtmpsrc", GST_RANK_PRIMARY, + GST_TYPE_RTMP_SRC, rtmp_element_init (plugin)); static void gst_rtmp_src_class_init (GstRTMPSrcClass * klass) diff --git a/ext/rtmp/meson.build b/ext/rtmp/meson.build index 9bc007784..19fc1fd52 100644 --- a/ext/rtmp/meson.build +++ b/ext/rtmp/meson.build @@ -1,5 +1,6 @@ rtmp_sources = [ 'gstrtmp.c', + 'gstrtmpelement.c', 'gstrtmpsink.c', 'gstrtmpsrc.c', ] |