test-reverseplay: Use uridecodebin for input
authorJan Schmidt <jan@centricular.com>
Thu, 20 Nov 2014 14:47:35 +0000 (01:47 +1100)
committerJan Schmidt <jan@centricular.com>
Fri, 28 Nov 2014 11:03:37 +0000 (22:03 +1100)
Work with any installed URI handler
Add some more debug output

tests/icles/test-reverseplay.c

index 88d0b7a..5b5ea87 100644 (file)
@@ -158,7 +158,7 @@ extend_times (StreamInfo * si, GstClockTime start, GstClockTime end)
         return;
       }
 
-      /* new start > ts->start, so this new entry goes after the first one */
+      /* new start > ts->end, so this new entry goes after the first one */
       GST_LOG ("%p inserting new entry %d %" GST_TIME_FORMAT
           " to %" GST_TIME_FORMAT, si, i + 1, GST_TIME_ARGS (start),
           GST_TIME_ARGS (end));
@@ -244,6 +244,9 @@ handle_output (GstPad * pad, GstPadProbeInfo * info, StreamInfo * si)
   start = gst_segment_to_stream_time (&si->seg, GST_FORMAT_TIME, start);
   end = gst_segment_to_stream_time (&si->seg, GST_FORMAT_TIME, end);
 
+  GST_DEBUG_OBJECT (pad, "new buffer %" GST_TIME_FORMAT
+      " to %" GST_TIME_FORMAT, GST_TIME_ARGS (start), GST_TIME_ARGS (end));
+
   /* Now extend measured time range to include new times */
   extend_times (si, start, end);
 
@@ -287,8 +290,13 @@ pad_added_cb (GstElement * decodebin, GstPad * pad, PlayState * state)
     g_printerr ("Failed to link %s:%s to %s:%s (ret = %d)\n",
         GST_DEBUG_PAD_NAME (pad), GST_DEBUG_PAD_NAME (fakesink_pad), ret);
   } else {
-    g_printerr ("Linked %s:%s to %s:%s\n", GST_DEBUG_PAD_NAME (pad),
-        GST_DEBUG_PAD_NAME (fakesink_pad));
+    GstCaps *caps = gst_pad_get_current_caps (pad);
+    gchar *s = gst_caps_to_string (caps);
+
+    g_print ("Linked %s:%s to %s:%s caps %s\n", GST_DEBUG_PAD_NAME (pad),
+        GST_DEBUG_PAD_NAME (fakesink_pad), s);
+    gst_caps_unref (caps);
+    g_free (s);
   }
 
   gst_object_unref (fakesink_pad);
@@ -299,7 +307,6 @@ main (gint argc, gchar * argv[])
 {
   PlayState state;
   GstElement *decoder;
-  GstElement *source;
   GstStateChangeReturn res;
   GstBus *bus;
 
@@ -332,26 +339,21 @@ main (gint argc, gchar * argv[])
       G_CALLBACK (gst_object_default_deep_notify), NULL);
 #endif
 
-  source = gst_element_factory_make ("giosrc", "source");
-  g_assert (source);
+  decoder = gst_element_factory_make ("uridecodebin", "decoder");
+  g_assert (decoder);
+  gst_bin_add (GST_BIN (state.pipe), decoder);
 
   if (argv[1] && strstr (argv[1], "://") != NULL) {
-    g_object_set (G_OBJECT (source), "location", argv[1], NULL);
+    g_object_set (G_OBJECT (decoder), "uri", argv[1], NULL);
   } else if (argv[1]) {
     gchar *uri = g_strdup_printf ("file://%s", argv[1]);
-
-    g_object_set (G_OBJECT (source), "location", uri, NULL);
+    g_object_set (G_OBJECT (decoder), "uri", uri, NULL);
     g_free (uri);
+  } else {
+    g_print ("Usage: %s <filename|uri>\n", argv[0]);
+    return -1;
   }
 
-  decoder = gst_element_factory_make ("decodebin", "decoder");
-  g_assert (decoder);
-
-  gst_bin_add (GST_BIN (state.pipe), source);
-  gst_bin_add (GST_BIN (state.pipe), decoder);
-
-  gst_element_link_pads (source, "src", decoder, "sink");
-
   g_signal_connect (decoder, "pad-added", G_CALLBACK (pad_added_cb), &state);
 
   res = gst_element_set_state (state.pipe, GST_STATE_PLAYING);