EXPORT_API void gub_ref(const char *gst_debug_string) { gub_log("GST ref (%d -> %d)", gub_ref_count, gub_ref_count + 1); if (gub_ref_count == 0) { GError *err = 0; gchar *version = NULL; if (!gst_init_check(0, 0, &err)) { gub_log("Failed to initialize GStreamer: %s", err ? err->message : "<No error message>"); return; } /* get time we started for debugging messages */ _priv_gst_info_start_time = gst_util_get_timestamp(); gst_debug_remove_log_function(gst_debug_log_default); gst_debug_add_log_function((GstLogFunction)gst_debug_gub, NULL, NULL); if (gst_debug_string) { gub_log("Setting debug level to %s", gst_debug_string); gst_debug_set_active(TRUE); gst_debug_set_threshold_from_string(gst_debug_string, TRUE); } else { gst_debug_set_active(FALSE); } #if defined (__ANDROID__) gst_android_register_static_plugins(); gst_android_load_gio_modules(); #endif gub_main_loop_thread = g_thread_new("GstUnityBridge Main Thread", gub_main_loop_func, NULL); if (!gub_main_loop_thread) { gub_log("Failed to create GLib main thread: %s", err ? err->message : "<No error message>"); return; } version = gst_version_string(); gub_log("%s initialized", version); g_free(version); } gub_ref_count++; }
int main() { gst_init( NULL, NULL ); GST_DEBUG_CATEGORY_INIT (app_debug, "JENKINS-VR", 0, "JENKINS-VR"); FILE* mLogFile = g_fopen( "logfile.txt", "w" ); if ( mLogFile ) { bool result = true; gst_debug_remove_log_function( NULL ); gst_debug_add_log_function( gst_debug_log_default, mLogFile, NULL ); gst_debug_set_threshold_from_string( "GST_TRACER:7,GST_BUFFER*:7,GST_EVENT:7,GST_MESSAGE:7,JENKINS-VR:7,pocketsphinx:7,CGstPlayerPipeline:7,CGstRecognizerPipeline:7", true ); } CLogger::setConsoleLogLevel( LogLevel::LEVEL_DEBUG ); CLogger::fatal() << "Hello fatal! " << "This is on the same line."; CLogger::error() << "Hello error! " << "This is on the same line."; CLogger::warning() << "Hello warning! " << "This is on the same line."; CLogger::info() << "Hello info! " << "This is on the same line."; CLogger::debug() << "Hello debug! " << "This is on the same line."; return 0; }
static gboolean parse_one_option (gint opt, const gchar * arg, GError ** err) { switch (opt) { case ARG_VERSION: g_print ("GStreamer Core Library version %s\n", PACKAGE_VERSION); exit (0); case ARG_FATAL_WARNINGS:{ GLogLevelFlags fatal_mask; fatal_mask = g_log_set_always_fatal (G_LOG_FATAL_MASK); fatal_mask |= G_LOG_LEVEL_WARNING | G_LOG_LEVEL_CRITICAL; g_log_set_always_fatal (fatal_mask); break; } #ifndef GST_DISABLE_GST_DEBUG case ARG_DEBUG_LEVEL:{ GstDebugLevel tmp = GST_LEVEL_NONE; tmp = (GstDebugLevel) strtol (arg, NULL, 0); if (((guint) tmp) < GST_LEVEL_COUNT) { gst_debug_set_default_threshold (tmp); } break; } case ARG_DEBUG: gst_debug_set_threshold_from_string (arg, FALSE); break; case ARG_DEBUG_NO_COLOR: gst_debug_set_colored (FALSE); break; case ARG_DEBUG_COLOR_MODE: gst_debug_set_color_mode_from_string (arg); break; case ARG_DEBUG_DISABLE: gst_debug_set_active (FALSE); break; case ARG_DEBUG_HELP: gst_debug_help (); exit (0); #endif case ARG_PLUGIN_SPEW: break; case ARG_PLUGIN_PATH: #ifndef GST_DISABLE_REGISTRY split_and_iterate (arg, G_SEARCHPATH_SEPARATOR_S, add_path_func, NULL); #endif /* GST_DISABLE_REGISTRY */ break; case ARG_PLUGIN_LOAD: split_and_iterate (arg, ",", prepare_for_load_plugin_func, NULL); break; case ARG_SEGTRAP_DISABLE: _gst_disable_segtrap = TRUE; break; case ARG_REGISTRY_UPDATE_DISABLE: #ifndef GST_DISABLE_REGISTRY _priv_gst_disable_registry_update = TRUE; #endif break; case ARG_REGISTRY_FORK_DISABLE: gst_registry_fork_set_enabled (FALSE); break; default: g_set_error (err, G_OPTION_ERROR, G_OPTION_ERROR_UNKNOWN_OPTION, _("Unknown option")); return FALSE; } return TRUE; }
void gst_debugserver_log_set_threshold (const gchar * threshold) { gst_debug_set_threshold_from_string (threshold, TRUE); }
/* we have no fail cases yet, but maybe in the future */ static gboolean init_pre (GOptionContext * context, GOptionGroup * group, gpointer data, GError ** error) { if (gst_initialized) { GST_DEBUG ("already initialized"); return TRUE; } #if !GLIB_CHECK_VERSION(2, 35, 0) g_type_init (); #endif #ifndef GST_DISABLE_GST_DEBUG _priv_gst_debug_init (); #endif #ifdef ENABLE_NLS bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); #endif /* ENABLE_NLS */ #ifndef GST_DISABLE_GST_DEBUG { const gchar *debug_list; const gchar *color_mode; if (g_getenv ("GST_DEBUG_NO_COLOR") != NULL) gst_debug_set_color_mode (GST_DEBUG_COLOR_MODE_OFF); color_mode = g_getenv ("GST_DEBUG_COLOR_MODE"); if (color_mode) gst_debug_set_color_mode_from_string (color_mode); debug_list = g_getenv ("GST_DEBUG"); if (debug_list) { gst_debug_set_threshold_from_string (debug_list, FALSE); } } priv_gst_dump_dot_dir = g_getenv ("GST_DEBUG_DUMP_DOT_DIR"); #endif /* This is the earliest we can make stuff show up in the logs. * So give some useful info about GStreamer here */ GST_INFO ("Initializing GStreamer Core Library version %s", VERSION); GST_INFO ("Using library installed in %s", LIBDIR); /* Print some basic system details if possible (OS/architecture) */ #ifdef HAVE_SYS_UTSNAME_H { struct utsname sys_details; if (uname (&sys_details) == 0) { GST_INFO ("%s %s %s %s %s", sys_details.sysname, sys_details.nodename, sys_details.release, sys_details.version, sys_details.machine); } } #endif #ifndef G_ATOMIC_LOCK_FREE GST_CAT_WARNING (GST_CAT_PERFORMANCE, "GLib atomic operations are NOT " "implemented using real hardware atomic operations!"); #endif return TRUE; }
/* Plugin implementation */ int janus_source_init(janus_callbacks *callback, const char *config_path) { if (g_atomic_int_get(&stopping)) { /* Still stopping from before */ return -1; } if (callback == NULL || config_path == NULL) { /* Invalid arguments */ return -1; } /* Read configuration */ char filename[255]; g_snprintf(filename, 255, "%s/%s.cfg", config_path, JANUS_SOURCE_PACKAGE); JANUS_LOG(LOG_VERB, "Configuration file: %s\n", filename); janus_config *config = janus_config_parse(filename); if (config != NULL) janus_config_print(config); /* Parse configuration */ if (config != NULL) { GList *cl = janus_config_get_categories(config); while (cl != NULL) { janus_config_category *cat = (janus_config_category *)cl->data; if (cat->name == NULL) { cl = cl->next; continue; } JANUS_LOG(LOG_VERB, "Parsing category '%s'\n", cat->name); janus_source_parse_ports_range(janus_config_get_item(cat, "udp_port_range"), &udp_min_port, &udp_max_port); janus_source_parse_keepalive_interval(janus_config_get_item(cat, "keepalive_interval"), &keepalive_interval); janus_source_parse_status_service_url(janus_config_get_item(cat, "keepalive_service_url"), &keepalive_service_url); janus_source_parse_status_service_url(janus_config_get_item(cat,"status_service_url"),&status_service_url); janus_source_parse_video_codec_priority(janus_config_get_item(cat, "video_codec_priority")); janus_source_parse_rtsp_interface_ip(janus_config_get_item(cat, "interface"),&rtsp_interface_ip); cl = cl->next; } janus_config_destroy(config); config = NULL; } if (udp_min_port <= 0 || udp_max_port <= 0) { udp_min_port = 4000; udp_max_port = 5000; JANUS_LOG(LOG_WARN, "Using default port range: %d-%d\n", udp_min_port, udp_max_port); } sessions = g_hash_table_new(NULL, NULL); janus_mutex_init(&sessions_mutex); messages = g_async_queue_new_full((GDestroyNotify)janus_source_message_free); /* This is the callback we'll need to invoke to contact the gateway */ gateway = callback; g_atomic_int_set(&initialized, 1); GError *error = NULL; /* Start the sessions watchdog */ watchdog = g_thread_try_new("source watchdog", &janus_source_watchdog, NULL, &error); if (error != NULL) { g_atomic_int_set(&initialized, 0); JANUS_LOG(LOG_ERR, "Got error %d (%s) trying to launch the SourcePlugin watchdog thread...\n", error->code, error->message ? error->message : "??"); return -1; } gst_init(NULL, NULL); gst_debug_set_threshold_from_string(gst_debug_str, FALSE); curl_handle = curl_init(); socket_utils_init(udp_min_port, udp_max_port); /* Launch the thread that will handle incoming messages */ handler_thread = g_thread_try_new("janus source handler", janus_source_handler, NULL, &error); if (error != NULL) { g_atomic_int_set(&initialized, 0); JANUS_LOG(LOG_ERR, "Got error %d (%s) trying to launch the Source handler thread...\n", error->code, error->message ? error->message : "??"); return -1; } /* Launch the thread that will handle rtsp clients */ handler_rtsp_thread = g_thread_try_new("rtsp server", janus_source_rtsp_server_thread, NULL, &error); if (error != NULL) { g_atomic_int_set(&initialized, 0); JANUS_LOG(LOG_ERR, "Got error %d (%s) trying to launch the Source rtsp server thread...\n", error->code, error->message ? error->message : "??"); return -1; } /* Set PID */ memset(&PID, 0, JANUS_PID_SIZE); if (0 > janus_set_pid()) { g_atomic_int_set(&initialized, 0); JANUS_LOG(LOG_ERR, "Got an error while plugin id initialize."); return -1; } /*Start the keepalive thread */ keepalive = g_thread_try_new("source keepalive", &janus_source_keepalive, NULL, &error); if (error != NULL) { g_atomic_int_set(&initialized, 0); JANUS_LOG(LOG_ERR, "Got error %d (%s) trying to launch the SourcePlugin keepalive thread...\n", error->code, error->message ? error->message : "??"); return -1; } JANUS_LOG(LOG_INFO, "%s initialized!\n", JANUS_SOURCE_NAME); return 0; }