From 3ff914844181a756f4c27ddd6241edb24f860704 Mon Sep 17 00:00:00 2001 From: Stefan Kost Date: Wed, 25 Jul 2007 05:55:00 +0000 Subject: ext/timidity/gsttimidity.*: Don't initialize timidity in plugin_init for similar reason as below. Original commit message from CVS: * ext/timidity/gsttimidity.c: (gst_timidity_init), (gst_timidity_change_state), (plugin_init): * ext/timidity/gsttimidity.h: Don't initialize timidity in plugin_init for similar reason as below. --- ChangeLog | 8 +++++++- ext/timidity/gsttimidity.c | 29 ++++++++++++++++------------- ext/timidity/gsttimidity.h | 2 ++ 3 files changed, 25 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0fe53c6a..7c518d53 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-07-25 Stefan Kost + + * ext/timidity/gsttimidity.c: (gst_timidity_init), + (gst_timidity_change_state), (plugin_init): + * ext/timidity/gsttimidity.h: + Don't initialize timidity in plugin_init for similar reason as below. + 2007-07-24 Stefan Kost * ext/timidity/gstwildmidi.c: (wildmidi_open_config), @@ -2923,7 +2930,6 @@ * ext/faad/gstfaad.c: Make our hacks dependent on the fadd lib in use. - 2007-02-11 Stefan Kost * configure.ac: diff --git a/ext/timidity/gsttimidity.c b/ext/timidity/gsttimidity.c index 3b590c90..bbd89c98 100644 --- a/ext/timidity/gsttimidity.c +++ b/ext/timidity/gsttimidity.c @@ -48,6 +48,10 @@ #include "gsttimidity.h" +#ifndef TIMIDITY_CFG +#define TIMIDITY_CFG "/etc/timidity.cfg" +#endif + GST_DEBUG_CATEGORY_STATIC (gst_timidity_debug); #define GST_CAT_DEFAULT gst_timidity_debug @@ -134,6 +138,13 @@ gst_timidity_init (GstTimidity * filter, GstTimidityClass * g_class) { GstElementClass *klass = GST_ELEMENT_GET_CLASS (filter); + /* initialise timidity library */ + if (mid_init (TIMIDITY_CFG) == 0) { + filter->initialized = TRUE; + } else { + GST_WARNING ("can't initialize timidity with config: " TIMIDITY_CFG); + } + filter->sinkpad = gst_pad_new_from_template (gst_element_class_get_pad_template (klass, "sink"), "sink"); @@ -743,6 +754,11 @@ gst_timidity_change_state (GstElement * element, GstStateChange transition) GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS; GstTimidity *timidity = GST_TIMIDITY (element); + if (!timidity->initialized) { + GST_WARNING ("Timidity renderer is not initialized"); + return GST_STATE_CHANGE_FAILURE; + } + switch (transition) { case GST_STATE_CHANGE_NULL_TO_READY: timidity->out_caps = @@ -807,19 +823,6 @@ plugin_init (GstPlugin * plugin) GST_DEBUG_CATEGORY_INIT (gst_timidity_debug, "timidity", 0, "Timidity plugin"); - /* initialise timidity library, fail loading the plugin if this fails */ -#ifdef TIMIDITY_CFG - if (mid_init (TIMIDITY_CFG) != 0) { - GST_WARNING ("can't initialize timidity with config: " TIMIDITY_CFG); - return FALSE; - } -#else - if (mid_init ("/etc/timidity.cfg") != 0) { - GST_WARNING ("can't initialize timidity with config: /etc/timidity.cfg"); - return FALSE; - } -#endif - if (!gst_type_find_register (plugin, "audio/midi", GST_RANK_PRIMARY, gst_timidity_typefind, exts, gst_caps_new_simple ("audio/midi", NULL), NULL, NULL)) { diff --git a/ext/timidity/gsttimidity.h b/ext/timidity/gsttimidity.h index 0e58b3b6..81e16743 100644 --- a/ext/timidity/gsttimidity.h +++ b/ext/timidity/gsttimidity.h @@ -51,6 +51,8 @@ struct _GstTimidity GstPad *sinkpad, *srcpad; + gboolean initialized; + /* input stream properties */ gint64 mididata_size, mididata_offset; gchar *mididata; -- cgit v1.2.1