some jack fixes, alsa touchups, and add rtp by default to the build if there are...
authorAndy Wingo <wingo@pobox.com>
Sat, 4 May 2002 18:57:44 +0000 (18:57 +0000)
committerAndy Wingo <wingo@pobox.com>
Sat, 4 May 2002 18:57:44 +0000 (18:57 +0000)
Original commit message from CVS:
some jack fixes, alsa touchups, and add rtp by default to the build

if there are any problems building rtp, we're moving it back to experimental ;)

configure.ac
ext/jack/gstjack.c
ext/jack/gstjack.h
ext/jack/gstjackbin.c

index 5a39384..3afe7dc 100644 (file)
@@ -49,11 +49,9 @@ GST_CHECK_FEATURE(EXPERIMENTAL, [enable building of experimental plugins],,
 [HAVE_EXPERIMENTAL=yes],disabled,
 [
   AC_MSG_WARN(building experimental plugins)
-  USE_RTP="yes"
   USE_TARKIN="yes"
 ],[
   AC_MSG_NOTICE(not building experimental plugins)
-  USE_RTP="no"
   USE_TARKIN="no"
 ])
 
index 87ce638..1258e23 100644 (file)
@@ -1,3 +1,4 @@
+/* -*- Mode: C; c-basic-offset: 4 -*- */
 /*
     Copyright (C) 2002 Andy Wingo <wingo@pobox.com>
 
index 38763cd..9d07f86 100644 (file)
@@ -1,3 +1,4 @@
+/* -*- Mode: C; c-basic-offset: 4 -*- */
 /*
     Copyright (C) 2002 Andy Wingo <wingo@pobox.com>
                             
@@ -109,6 +110,10 @@ struct _GstJackBin {
 
     guint rate;
     nframes_t nframes;
+
+    /* the scheduler needs to be setup from within the jack client thread; this
+       variable is to keep track of whether or not we have been set up yet */
+    gboolean sched_setup;
 };
 
 struct _GstJackBinClass {
index 8a4cc76..dbaac66 100644 (file)
@@ -1,3 +1,4 @@
+/* -*- Mode: C; c-basic-offset: 4 -*- */
 /*
     Copyright (C) 2002 Andy Wingo <wingo@pobox.com>
 
@@ -37,23 +38,23 @@ static void shutdown (void *arg);
 GType
 gst_jack_bin_get_type (void) 
 {
-  static GType jack_bin_type = 0;
-
-  if (!jack_bin_type) {
-    static const GTypeInfo jack_bin_info = {
-      sizeof(GstJackBinClass),
-      NULL,
-      NULL,
-      (GClassInitFunc)gst_jack_bin_class_init,
-      NULL,
-      NULL,
-      sizeof(GstJackBin),
-      0,
-      (GInstanceInitFunc)gst_jack_bin_init,
-    };
-    jack_bin_type = g_type_register_static (GST_TYPE_BIN, "GstJackBin", &jack_bin_info, 0);
-  }
-  return jack_bin_type;
+    static GType jack_bin_type = 0;
+
+    if (!jack_bin_type) {
+        static const GTypeInfo jack_bin_info = {
+            sizeof(GstJackBinClass),
+            NULL,
+            NULL,
+            (GClassInitFunc)gst_jack_bin_class_init,
+            NULL,
+            NULL,
+            sizeof(GstJackBin),
+            0,
+            (GInstanceInitFunc)gst_jack_bin_init,
+        };
+        jack_bin_type = g_type_register_static (GST_TYPE_BIN, "GstJackBin", &jack_bin_info, 0);
+    }
+    return jack_bin_type;
 }
 
 static void
@@ -73,6 +74,14 @@ gst_jack_bin_class_init(GstJackClass *klass)
 static void
 gst_jack_bin_init(GstJack *this)
 {
+    GST_DEBUG (GST_CAT_THREAD, "initializing jack bin");
+    
+    /* jack bins are managing bins and iterate themselves */
+    GST_FLAG_SET (this, GST_BIN_FLAG_MANAGER);
+    GST_FLAG_SET (this, GST_BIN_SELF_SCHEDULABLE);
+    
+    /* make a new scheduler and associate it with the bin */
+    gst_scheduler_factory_make (NULL, GST_ELEMENT (this));
 }
 
 static GstElementStateReturn
@@ -237,6 +246,12 @@ sample_rate (nframes_t nframes, void *arg)
     GstJackBin *bin = (GstJackBin*) arg;
     printf ("the sample rate is now %lu/sec\n", nframes);
     bin->rate = nframes;
+
+    if (!bin->sched_setup) {
+        gst_scheduler_setup (GST_ELEMENT_SCHED (bin));
+        bin->sched_setup = TRUE;
+    }
+    
     return 0;
 }