make more debug catagories static
authorStefan Kost <ensonic@users.sourceforge.net>
Tue, 23 May 2006 20:38:56 +0000 (20:38 +0000)
committerStefan Kost <ensonic@users.sourceforge.net>
Tue, 23 May 2006 20:38:56 +0000 (20:38 +0000)
Original commit message from CVS:
* ext/theora/theoradec.c:
* ext/theora/theoraenc.c:
* ext/theora/theoraparse.c: (gst_theora_parse_class_init):
* gst/audiorate/gstaudiorate.c:
make more debug catagories static
* tests/check/Makefile.am:
* tests/check/elements/adder.c: (message_received),
(test_event_message_received), (GST_START_TEST),
(test_play_twice_message_received), (adder_suite):
added test case for using element twice, extra bonus points for anyone
who can make these test run reliably

ChangeLog
ext/theora/theoradec.c
ext/theora/theoraenc.c
ext/theora/theoraparse.c
gst/audiorate/gstaudiorate.c
tests/check/Makefile.am
tests/check/elements/adder.c

index 65ba81c..31580d6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2006-05-23  Stefan Kost  <ensonic@users.sf.net>
+
+       * ext/theora/theoradec.c:
+       * ext/theora/theoraenc.c:
+       * ext/theora/theoraparse.c: (gst_theora_parse_class_init):
+       * gst/audiorate/gstaudiorate.c:
+         make more debug catagories static
+       
+       * tests/check/Makefile.am:
+       * tests/check/elements/adder.c: (message_received),
+       (test_event_message_received), (GST_START_TEST),
+       (test_play_twice_message_received), (adder_suite):
+         added test case for using element twice, extra bonus points for anyone
+         who can make these test run reliably
+
 2006-05-23  Tim-Philipp Müller  <tim at centricular dot net>
 
        * ext/theora/theoradec.c: (theora_dec_chain):
index f813aef..c58bf60 100644 (file)
@@ -48,8 +48,8 @@
 #include "gsttheoradec.h"
 #include <gst/tag/tag.h>
 
-GST_DEBUG_CATEGORY (theoradec_debug);
 #define GST_CAT_DEFAULT theoradec_debug
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
 
 #define THEORA_DEF_CROP         TRUE
 enum
index a2263cc..7289d9a 100644 (file)
@@ -66,8 +66,8 @@
 
 #include <gst/tag/tag.h>
 
-GST_DEBUG_CATEGORY (theoraenc_debug);
 #define GST_CAT_DEFAULT theoraenc_debug
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
 
 #define GST_TYPE_BORDER_MODE (gst_border_mode_get_type())
 static GType
index 52cb96b..592d452 100644 (file)
@@ -64,6 +64,9 @@
 
 #include "gsttheoraparse.h"
 
+#define GST_CAT_DEFAULT theoraparse_debug
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
+
 static GstElementDetails theora_parse_details = {
   "TheoraParse",
   "Codec/Parser/Video",
@@ -112,6 +115,9 @@ gst_theora_parse_class_init (GstTheoraParseClass * klass)
   GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
 
   gstelement_class->change_state = theora_parse_change_state;
+
+  GST_DEBUG_CATEGORY_INIT (theoraparse_debug, "theoraparse", 0,
+      "Theora parser");
 }
 
 static void
index e24be80..b59052a 100644 (file)
@@ -25,8 +25,8 @@
 #include <gst/gst.h>
 #include <gst/audio/audio.h>
 
-GST_DEBUG_CATEGORY (audio_rate_debug);
 #define GST_CAT_DEFAULT audio_rate_debug
+GST_DEBUG_CATEGORY_STATIC (audio_rate_debug);
 
 #define GST_TYPE_AUDIO_RATE \
   (gst_audio_rate_get_type())
index f66689f..3373373 100644 (file)
@@ -43,6 +43,7 @@ check_PROGRAMS = \
        $(check_alsa) \
        $(check_vorbis) \
        $(check_theora) \
+       elements/adder \
        elements/audioconvert \
        elements/audioresample \
        elements/audiotestsrc \
index 35450c3..7ee89a5 100644 (file)
 #include <gst/check/gstcheck.h>
 
 static GMainLoop *main_loop;
-static GstFormat format = GST_FORMAT_UNDEFINED;
-static gint64 position = -1;
-
-/*
-static void
-event_loop (GstElement * bin)
-{
-  GstBus *bus;
-  GstMessage *message = NULL;
-  GstObject *object;
-  GstState oldstate, newstate, pending;
-  gboolean loop = TRUE;
-
-  bus = gst_element_get_bus (GST_ELEMENT (bin));
-
-  while (loop) {
-    message = gst_bus_poll (bus, GST_MESSAGE_ANY, -1);
-
-    g_assert (message != NULL);
-    object = GST_MESSAGE_SRC (message);
-
-    GST_INFO ("bus message from \"%s\" (%s): ",
-        GST_STR_NULL (GST_ELEMENT_NAME (object)),
-        gst_message_type_get_name (GST_MESSAGE_TYPE (message)));
-
-    switch (message->type) {
-      case GST_MESSAGE_EOS:
-        loop = FALSE;
-        break;
-      case GST_MESSAGE_SEGMENT_DONE:
-        gst_message_parse_segment_done (message, &format, &position);
-        GST_INFO ("received segment_done : %" G_GINT64_FORMAT, position);
-        loop = FALSE;
-        break;
-      case GST_MESSAGE_WARNING:
-      case GST_MESSAGE_ERROR:{
-        GError *gerror;
-        gchar *debug;
-
-        gst_message_parse_error (message, &gerror, &debug);
-        gst_object_default_error (GST_MESSAGE_SRC (message), gerror, debug);
-        g_error_free (gerror);
-        g_free (debug);
-        loop = FALSE;
-      }
-      default:
-        break;
-    }
-    gst_message_unref (message);
-  }
-}
-*/
 
 static void
 message_received (GstBus * bus, GstMessage * message, GstPipeline * bin)
@@ -91,11 +39,6 @@ message_received (GstBus * bus, GstMessage * message, GstPipeline * bin)
     case GST_MESSAGE_EOS:
       g_main_loop_quit (main_loop);
       break;
-    case GST_MESSAGE_SEGMENT_DONE:
-      gst_message_parse_segment_done (message, &format, &position);
-      GST_INFO ("received segment_done : %" G_GINT64_FORMAT, position);
-      g_main_loop_quit (main_loop);
-      break;
     case GST_MESSAGE_WARNING:
     case GST_MESSAGE_ERROR:{
       GError *gerror;
@@ -113,6 +56,31 @@ message_received (GstBus * bus, GstMessage * message, GstPipeline * bin)
 }
 
 
+static GstFormat format = GST_FORMAT_UNDEFINED;
+static gint64 position = -1;
+
+static void
+test_event_message_received (GstBus * bus, GstMessage * message,
+    GstPipeline * bin)
+{
+  GstObject *object = GST_MESSAGE_SRC (message);
+
+  GST_INFO ("bus message from \"%s\" (%s): ",
+      GST_STR_NULL (GST_ELEMENT_NAME (object)),
+      gst_message_type_get_name (GST_MESSAGE_TYPE (message)));
+
+  switch (message->type) {
+    case GST_MESSAGE_SEGMENT_DONE:
+      gst_message_parse_segment_done (message, &format, &position);
+      GST_INFO ("received segment_done : %" G_GINT64_FORMAT, position);
+      g_main_loop_quit (main_loop);
+      break;
+    default:
+      break;
+  }
+}
+
+
 GST_START_TEST (test_event)
 {
   GstElement *bin, *src1, *src2, *adder, *sink;
@@ -120,7 +88,7 @@ GST_START_TEST (test_event)
   GstEvent *seek_event;
   gboolean res;
 
-  GST_INFO ("starting test");
+  GST_INFO ("preparing test");
 
   /* build pipeline */
   bin = gst_pipeline_new ("pipeline");
@@ -130,10 +98,10 @@ GST_START_TEST (test_event)
   /* FIXME, fakesrc with default setting will produce 0 sized
    * buffers and incompatible caps for adder that will make
    * adder EOS and error out */
-  src1 = gst_element_factory_make ("fakesrc", "src1");
-  //g_object_set (src1, "wave", 4, NULL); /* silence */
-  src2 = gst_element_factory_make ("fakesrc", "src2");
-  //g_object_set (src2, "wave", 4, NULL); /* silence */
+  src1 = gst_element_factory_make ("audiotestsrc", "src1");
+  g_object_set (src1, "wave", 4, NULL); /* silence */
+  src2 = gst_element_factory_make ("audiotestsrc", "src2");
+  g_object_set (src2, "wave", 4, NULL); /* silence */
   adder = gst_element_factory_make ("adder", "adder");
   sink = gst_element_factory_make ("fakesink", "sink");
   gst_bin_add_many (GST_BIN (bin), src1, src2, adder, sink, NULL);
@@ -154,17 +122,21 @@ GST_START_TEST (test_event)
   position = -1;
 
   main_loop = g_main_loop_new (NULL, FALSE);
-  g_signal_connect (bus, "message::segment-done", (GCallback) message_received,
-      bin);
+  g_signal_connect (bus, "message::segment-done",
+      (GCallback) test_event_message_received, bin);
   g_signal_connect (bus, "message::error", (GCallback) message_received, bin);
   g_signal_connect (bus, "message::warning", (GCallback) message_received, bin);
   g_signal_connect (bus, "message::eos", (GCallback) message_received, bin);
 
+  GST_INFO ("starting test");
+
   /* prepare playing */
   res = gst_element_set_state (bin, GST_STATE_PAUSED);
   fail_unless (res != GST_STATE_CHANGE_FAILURE, NULL);
 
-  /* FIXME, PAUSED is async and seek might not work before being prerolled. */
+  /* FIXME, PAUSED is async and seek might not work before being prerolled.
+   * though it should work in this case, as audiotestsrc is a live source
+   */
   res = gst_element_send_event (bin, seek_event);
   fail_unless (res == TRUE, NULL);
 
@@ -172,7 +144,6 @@ GST_START_TEST (test_event)
   res = gst_element_set_state (bin, GST_STATE_PLAYING);
   fail_unless (res != GST_STATE_CHANGE_FAILURE, NULL);
 
-  //event_loop (bin);
   g_main_loop_run (main_loop);
 
   res = gst_element_set_state (bin, GST_STATE_NULL);
@@ -188,6 +159,117 @@ GST_START_TEST (test_event)
 
 GST_END_TEST;
 
+static guint play_count = 0;
+static GstEvent *play_seek_event = NULL;
+
+static void
+test_play_twice_message_received (GstBus * bus, GstMessage * message,
+    GstPipeline * bin)
+{
+  GstObject *object = GST_MESSAGE_SRC (message);
+  gboolean res;
+
+  GST_INFO ("bus message from \"%s\" (%s): ",
+      GST_STR_NULL (GST_ELEMENT_NAME (object)),
+      gst_message_type_get_name (GST_MESSAGE_TYPE (message)));
+
+  switch (message->type) {
+    case GST_MESSAGE_SEGMENT_DONE:
+      play_count++;
+      if (play_count == 1) {
+        res = gst_element_set_state (GST_ELEMENT (bin), GST_STATE_READY);
+        fail_unless (res != GST_STATE_CHANGE_FAILURE, NULL);
+
+        /* prepare playing again */
+        res = gst_element_set_state (GST_ELEMENT (bin), GST_STATE_PAUSED);
+        fail_unless (res != GST_STATE_CHANGE_FAILURE, NULL);
+
+        res = gst_element_send_event (GST_ELEMENT (bin), play_seek_event);
+        fail_unless (res == TRUE, NULL);
+
+        res = gst_element_set_state (GST_ELEMENT (bin), GST_STATE_PLAYING);
+        fail_unless (res != GST_STATE_CHANGE_FAILURE, NULL);
+      } else {
+        g_main_loop_quit (main_loop);
+      }
+      break;
+    default:
+      break;
+  }
+}
+
+
+GST_START_TEST (test_play_twice)
+{
+  GstElement *bin, *src1, *src2, *adder, *sink;
+  GstBus *bus;
+  gboolean res;
+
+  GST_INFO ("preparing test");
+
+  /* build pipeline */
+  bin = gst_pipeline_new ("pipeline");
+  bus = gst_element_get_bus (bin);
+  gst_bus_add_signal_watch_full (bus, G_PRIORITY_HIGH);
+
+  src1 = gst_element_factory_make ("audiotestsrc", "src1");
+  g_object_set (src1, "wave", 4, NULL); /* silence */
+  src2 = gst_element_factory_make ("audiotestsrc", "src2");
+  g_object_set (src2, "wave", 4, NULL); /* silence */
+  adder = gst_element_factory_make ("adder", "adder");
+  sink = gst_element_factory_make ("fakesink", "sink");
+  gst_bin_add_many (GST_BIN (bin), src1, src2, adder, sink, NULL);
+
+  res = gst_element_link (src1, adder);
+  fail_unless (res == TRUE, NULL);
+  res = gst_element_link (src2, adder);
+  fail_unless (res == TRUE, NULL);
+  res = gst_element_link (adder, sink);
+  fail_unless (res == TRUE, NULL);
+
+  play_seek_event = gst_event_new_seek (1.0, GST_FORMAT_TIME,
+      GST_SEEK_FLAG_SEGMENT,
+      GST_SEEK_TYPE_SET, (GstClockTime) 0,
+      GST_SEEK_TYPE_SET, (GstClockTime) 2 * GST_SECOND);
+
+  play_count = 0;
+
+  main_loop = g_main_loop_new (NULL, FALSE);
+  g_signal_connect (bus, "message::segment-done",
+      (GCallback) test_play_twice_message_received, bin);
+  g_signal_connect (bus, "message::error", (GCallback) message_received, bin);
+  g_signal_connect (bus, "message::warning", (GCallback) message_received, bin);
+  g_signal_connect (bus, "message::eos", (GCallback) message_received, bin);
+
+  GST_INFO ("starting test");
+
+  /* prepare playing */
+  res = gst_element_set_state (bin, GST_STATE_PAUSED);
+  fail_unless (res != GST_STATE_CHANGE_FAILURE, NULL);
+
+  res = gst_element_send_event (bin, gst_event_ref (play_seek_event));
+  fail_unless (res == TRUE, NULL);
+
+  /* run pipeline */
+  res = gst_element_set_state (bin, GST_STATE_PLAYING);
+  fail_unless (res != GST_STATE_CHANGE_FAILURE, NULL);
+
+  g_main_loop_run (main_loop);
+
+  res = gst_element_set_state (bin, GST_STATE_NULL);
+  fail_unless (res != GST_STATE_CHANGE_FAILURE, NULL);
+
+  fail_unless (play_count == 2, NULL);
+
+  /* cleanup */
+  g_main_loop_unref (main_loop);
+  gst_object_unref (G_OBJECT (bus));
+  gst_object_unref (G_OBJECT (bin));
+}
+
+GST_END_TEST;
+
+
 Suite *
 adder_suite (void)
 {
@@ -196,9 +278,10 @@ adder_suite (void)
 
   suite_add_tcase (s, tc_chain);
   tcase_add_test (tc_chain, test_event);
+  tcase_add_test (tc_chain, test_play_twice);
 
   /* Use a longer timeout */
-  tcase_set_timeout (tc_chain, 4);
+  tcase_set_timeout (tc_chain, 6);
 
   return s;
 }