From 5300e59f09a5aa97492862791f18a8afa9277cbd Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Thu, 5 Jun 2014 09:40:38 +0200 Subject: [PATCH] rtmp: proxy logging from librtmp Helps with debugging various librtmp issues --- ext/rtmp/gstrtmp.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/ext/rtmp/gstrtmp.c b/ext/rtmp/gstrtmp.c index 2b9dfbe28a..76173f3ed8 100644 --- a/ext/rtmp/gstrtmp.c +++ b/ext/rtmp/gstrtmp.c @@ -34,11 +34,61 @@ #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_LOGDEBUG: + gst_level = GST_LEVEL_DEBUG; + break; + default: + gst_level = GST_LEVEL_INFO; + 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); + if (gst_level >= GST_LEVEL_LOG) + RTMP_LogSetLevel (RTMP_LOGALL); + else if (gst_level >= GST_LEVEL_DEBUG) + RTMP_LogSetLevel (RTMP_LOGDEBUG); + else if (gst_level >= GST_LEVEL_INFO) + RTMP_LogSetLevel (RTMP_LOGINFO); + else if (gst_level >= GST_LEVEL_WARNING) + RTMP_LogSetLevel (RTMP_LOGWARNING); +} +#endif + 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 + ret = gst_element_register (plugin, "rtmpsrc", GST_RANK_PRIMARY, GST_TYPE_RTMP_SRC); ret &= gst_element_register (plugin, "rtmpsink", GST_RANK_PRIMARY,