Commit 6b332262 authored by Tim-Philipp Müller's avatar Tim-Philipp Müller

tests: fix up unit tests for playbin2/decodebin2 renames and updates

Even if they don't work yet.
parent 59581d46
......@@ -121,15 +121,13 @@ check_PROGRAMS = \
elements/audioresample \
elements/audiotestsrc \
elements/decodebin \
elements/decodebin2 \
$(check_encodebin) \
elements/ffmpegcolorspace \
elements/gdpdepay \
elements/gdppay \
elements/multifdsink \
elements/playbin \
elements/playbin2 \
elements/playbin2-compressed \
elements/playbin-compressed \
$(check_subparse) \
elements/videorate \
elements/videoscale \
......@@ -375,11 +373,8 @@ elements_gdppay_LDADD = $(GST_GDP_LIBS) $(LDADD)
elements_playbin_LDADD = $(GST_BASE_LIBS) $(LDADD)
elements_playbin_CFLAGS = $(GST_BASE_CFLAGS) $(AM_CFLAGS)
elements_playbin2_LDADD = $(GST_BASE_LIBS) $(LDADD)
elements_playbin2_CFLAGS = $(GST_BASE_CFLAGS) $(AM_CFLAGS)
elements_playbin2_compressed_LDADD = $(top_builddir)/gst-libs/gst/interfaces/libgstinterfaces-@GST_MAJORMINOR@.la $(GST_BASE_LIBS) $(LDADD)
elements_playbin2_compressed_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(AM_CFLAGS)
elements_playbin_compressed_LDADD = $(top_builddir)/gst-libs/gst/interfaces/libgstinterfaces-@GST_MAJORMINOR@.la $(GST_BASE_LIBS) $(LDADD)
elements_playbin_compressed_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(AM_CFLAGS)
elements_decodebin_LDADD = $(GST_BASE_LIBS) $(LDADD)
elements_decodebin_CFLAGS = $(GST_BASE_CFLAGS) $(AM_CFLAGS)
......@@ -387,9 +382,6 @@ elements_decodebin_CFLAGS = $(GST_BASE_CFLAGS) $(AM_CFLAGS)
elements_encodebin_LDADD = $(top_builddir)/gst-libs/gst/pbutils/libgstpbutils-@GST_MAJORMINOR@.la $(GST_BASE_LIBS) $(LDADD)
elements_encodebin_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(AM_CFLAGS)
elements_decodebin2_LDADD = $(GST_BASE_LIBS) $(LDADD)
elements_decodebin2_CFLAGS = $(GST_BASE_CFLAGS) $(AM_CFLAGS)
elements_subparse_LDADD = $(LDADD)
elements_subparse_CFLAGS = $(CFLAGS) $(AM_CFLAGS)
......
......@@ -8,7 +8,6 @@ audiorate
audioresample
audiotestsrc
decodebin
decodebin2
encodebin
gdpdepay
gdppay
......@@ -25,6 +24,5 @@ ffmpegcolorspace
videoscale
vorbistag
playbin
playbin2
playbin2-compressed
playbin-compressed
subparse
......@@ -48,7 +48,7 @@ src_need_data_cb (GstElement * src, guint size, gpointer data)
GstFlowReturn ret;
buf = gst_buffer_new ();
gst_buffer_take_memory (buf,
gst_buffer_take_memory (buf, 0,
gst_memory_new_wrapped (GST_MEMORY_FLAG_READONLY,
(gpointer) dummytext, NULL, sizeof (dummytext), 0,
sizeof (dummytext)));
......@@ -61,11 +61,11 @@ src_need_data_cb (GstElement * src, guint size, gpointer data)
}
static void
decodebin_new_decoded_pad_cb (GstElement * decodebin, GstPad * pad,
decodebin_pad_added_cb (GstElement * decodebin, GstPad * pad,
gboolean last, gboolean * p_flag)
{
/* we should not be reached */
fail_unless (decodebin == NULL, "new-decoded-pad should not be emitted");
fail_unless (decodebin == NULL, "pad-added should not be emitted");
}
/* make sure that decodebin errors out instead of creating a new decoded pad
......@@ -88,8 +88,8 @@ GST_START_TEST (test_text_plain_streams)
decodebin = gst_element_factory_make ("decodebin", "decodebin");
fail_unless (decodebin != NULL, "Failed to create decodebin element");
g_signal_connect (decodebin, "new-decoded-pad",
G_CALLBACK (decodebin_new_decoded_pad_cb), NULL);
g_signal_connect (decodebin, "pad-added",
G_CALLBACK (decodebin_pad_added_cb), NULL);
fail_unless (gst_bin_add (GST_BIN (pipe), src));
fail_unless (gst_bin_add (GST_BIN (pipe), decodebin));
......@@ -114,12 +114,14 @@ GST_START_TEST (test_text_plain_streams)
GST_END_TEST;
static void
new_decoded_pad_plug_fakesink_cb (GstElement * decodebin, GstPad * srcpad,
pad_added_plug_fakesink_cb (GstElement * decodebin, GstPad * srcpad,
gboolean last, GstElement * pipeline)
{
GstElement *sink;
GstPad *sinkpad;
GST_LOG ("Linking fakesink");
sink = gst_element_factory_make ("fakesink", "sink");
fail_unless (sink != NULL, "Failed to create fakesink element");
......@@ -145,8 +147,8 @@ GST_START_TEST (test_reuse_without_decoders)
decodebin = gst_element_factory_make ("decodebin", "decodebin");
fail_unless (decodebin != NULL, "Failed to create decodebin element");
g_signal_connect (decodebin, "new-decoded-pad",
G_CALLBACK (new_decoded_pad_plug_fakesink_cb), pipe);
g_signal_connect (decodebin, "pad-added",
G_CALLBACK (pad_added_plug_fakesink_cb), pipe);
fail_unless (gst_bin_add (GST_BIN (pipe), src));
fail_unless (gst_bin_add (GST_BIN (pipe), decodebin));
......@@ -166,10 +168,11 @@ GST_START_TEST (test_reuse_without_decoders)
fail_if (gst_bus_poll (GST_ELEMENT_BUS (pipe), GST_MESSAGE_ERROR, 0) != NULL);
/* reset */
gst_element_set_state (pipe, GST_STATE_NULL);
gst_element_set_state (pipe, GST_STATE_READY);
sink = gst_bin_get_by_name (GST_BIN (pipe), "sink");
gst_bin_remove (GST_BIN (pipe), sink);
gst_element_set_state (sink, GST_STATE_NULL);
gst_object_unref (sink);
GST_LOG ("second try");
......
/* GStreamer unit tests for decodebin2
*
* Copyright (C) 2006 Tim-Philipp Müller <tim centricular net>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <gst/check/gstcheck.h>
#include <unistd.h>
static const gchar dummytext[] =
"Quick Brown Fox Jumps over a Lazy Frog Quick Brown "
"Fox Jumps over a Lazy Frog Quick Brown Fox Jumps over a Lazy Frog Quick "
"Brown Fox Jumps over a Lazy Frog Quick Brown Fox Jumps over a Lazy Frog "
"Quick Brown Fox Jumps over a Lazy Frog Quick Brown Fox Jumps over a Lazy "
"Frog Quick Brown Fox Jumps over a Lazy Frog Quick Brown Fox Jumps over a "
"Lazy Frog Quick Brown Fox Jumps over a Lazy Frog Quick Brown Fox Jumps "
"over a Lazy Frog Quick Brown Fox Jumps over a Lazy Frog Quick Brown Fox "
"jumps over a Lazy Frog Quick Brown Fox Jumps over a Lazy Frog Quick Brown "
"Fox Jumps over a Lazy Frog Quick Brown Fox Jumps over a Lazy Frog Quick "
"Brown Fox Jumps over a Lazy Frog Quick Brown Fox Jumps over a Lazy Frog "
"Quick Brown Fox Jumps over a Lazy Frog Quick Brown Fox Jumps over a Lazy "
"Frog Quick Brown Fox Jumps over a Lazy Frog Quick Brown Fox Jumps over a "
"Lazy Frog Quick Brown Fox Jumps over a Lazy Frog Quick Brown Fox Jumps "
"over a Lazy Frog Quick Brown Fox Jumps over a Lazy Frog Quick Brown Fox ";
static void
src_need_data_cb (GstElement * src, guint size, gpointer data)
{
GstBuffer *buf;
GstFlowReturn ret;
buf = gst_buffer_new ();
gst_buffer_take_memory (buf,
gst_memory_new_wrapped (GST_MEMORY_FLAG_READONLY,
(gpointer) dummytext, NULL, sizeof (dummytext), 0,
sizeof (dummytext)));
GST_BUFFER_OFFSET (buf) = 0;
g_signal_emit_by_name (src, "push-buffer", buf, &ret);
fail_unless (ret == GST_FLOW_OK);
}
static void
decodebin_new_decoded_pad_cb (GstElement * decodebin, GstPad * pad,
gboolean last, gboolean * p_flag)
{
/* we should not be reached */
fail_unless (decodebin == NULL, "new-decoded-pad should not be emitted");
}
/* make sure that decodebin errors out instead of creating a new decoded pad
* if the entire stream is a plain text file */
GST_START_TEST (test_text_plain_streams)
{
GstElement *pipe, *src, *decodebin;
GstMessage *msg;
pipe = gst_pipeline_new (NULL);
fail_unless (pipe != NULL, "failed to create pipeline");
src = gst_element_factory_make ("appsrc", "src");
fail_unless (src != NULL, "Failed to create appsrc element");
g_object_set (src, "emit-signals", TRUE, NULL);
g_object_set (src, "num-buffers", 1, NULL);
g_signal_connect (src, "need-data", G_CALLBACK (src_need_data_cb), NULL);
decodebin = gst_element_factory_make ("decodebin2", "decodebin");
fail_unless (decodebin != NULL, "Failed to create decodebin element");
g_signal_connect (decodebin, "new-decoded-pad",
G_CALLBACK (decodebin_new_decoded_pad_cb), NULL);
fail_unless (gst_bin_add (GST_BIN (pipe), src));
fail_unless (gst_bin_add (GST_BIN (pipe), decodebin));
fail_unless (gst_element_link (src, decodebin), "can't link src<->decodebin");
fail_unless_equals_int (gst_element_set_state (pipe, GST_STATE_READY),
GST_STATE_CHANGE_SUCCESS);
/* it's push-based, so should be async */
fail_unless_equals_int (gst_element_set_state (pipe, GST_STATE_PAUSED),
GST_STATE_CHANGE_ASYNC);
/* it should error out at some point */
msg = gst_bus_poll (GST_ELEMENT_BUS (pipe), GST_MESSAGE_ERROR, -1);
fail_unless (msg != NULL);
fail_unless (GST_MESSAGE_TYPE (msg) == GST_MESSAGE_ERROR);
gst_message_unref (msg);
gst_element_set_state (pipe, GST_STATE_NULL);
gst_object_unref (pipe);
}
GST_END_TEST;
static void
new_decoded_pad_plug_fakesink_cb (GstElement * decodebin, GstPad * srcpad,
gboolean last, GstElement * pipeline)
{
GstElement *sink;
GstPad *sinkpad;
GST_LOG ("Linking fakesink");
sink = gst_element_factory_make ("fakesink", "sink");
fail_unless (sink != NULL, "Failed to create fakesink element");
gst_bin_add (GST_BIN (pipeline), sink);
sinkpad = gst_element_get_static_pad (sink, "sink");
fail_unless_equals_int (gst_pad_link (srcpad, sinkpad), GST_PAD_LINK_OK);
gst_object_unref (sinkpad);
gst_element_set_state (sink, GST_STATE_PLAYING);
}
GST_START_TEST (test_reuse_without_decoders)
{
GstElement *pipe, *src, *decodebin, *sink;
pipe = gst_pipeline_new (NULL);
fail_unless (pipe != NULL, "failed to create pipeline");
src = gst_element_factory_make ("audiotestsrc", "src");
fail_unless (src != NULL, "Failed to create audiotestsrc element");
decodebin = gst_element_factory_make ("decodebin2", "decodebin");
fail_unless (decodebin != NULL, "Failed to create decodebin element");
g_signal_connect (decodebin, "new-decoded-pad",
G_CALLBACK (new_decoded_pad_plug_fakesink_cb), pipe);
fail_unless (gst_bin_add (GST_BIN (pipe), src));
fail_unless (gst_bin_add (GST_BIN (pipe), decodebin));
fail_unless (gst_element_link (src, decodebin), "can't link src<->decodebin");
fail_unless_equals_int (gst_element_set_state (pipe, GST_STATE_READY),
GST_STATE_CHANGE_SUCCESS);
/* it's push-based, so should be async */
fail_unless_equals_int (gst_element_set_state (pipe, GST_STATE_PAUSED),
GST_STATE_CHANGE_ASYNC);
/* wait for state change to complete */
fail_unless_equals_int (gst_element_get_state (pipe, NULL, NULL, -1),
GST_STATE_CHANGE_SUCCESS);
/* there shouldn't be any errors */
fail_if (gst_bus_poll (GST_ELEMENT_BUS (pipe), GST_MESSAGE_ERROR, 0) != NULL);
/* reset */
gst_element_set_state (pipe, GST_STATE_READY);
sink = gst_bin_get_by_name (GST_BIN (pipe), "sink");
gst_bin_remove (GST_BIN (pipe), sink);
gst_element_set_state (sink, GST_STATE_NULL);
gst_object_unref (sink);
GST_LOG ("second try");
fail_unless_equals_int (gst_element_set_state (pipe, GST_STATE_READY),
GST_STATE_CHANGE_SUCCESS);
/* it's push-based, so should be async */
fail_unless_equals_int (gst_element_set_state (pipe, GST_STATE_PAUSED),
GST_STATE_CHANGE_ASYNC);
/* wait for state change to complete */
fail_unless_equals_int (gst_element_get_state (pipe, NULL, NULL, -1),
GST_STATE_CHANGE_SUCCESS);
/* there shouldn't be any errors */
fail_if (gst_bus_poll (GST_ELEMENT_BUS (pipe), GST_MESSAGE_ERROR, 0) != NULL);
gst_element_set_state (pipe, GST_STATE_NULL);
gst_object_unref (pipe);
}
GST_END_TEST;
static Suite *
decodebin2_suite (void)
{
Suite *s = suite_create ("decodebin2");
TCase *tc_chain = tcase_create ("general");
suite_add_tcase (s, tc_chain);
tcase_add_test (tc_chain, test_text_plain_streams);
tcase_add_test (tc_chain, test_reuse_without_decoders);
return s;
}
GST_CHECK_MAIN (decodebin2);
/* GStreamer unit tests for playbin2 compressed stream support
/* GStreamer unit tests for playbin compressed stream support
*
* Copyright (C) 2006 Tim-Philipp Müller <tim centricular net>
* Copyright (C) 2010 Sebastian Dröge <sebastian.droege@collabora.co.uk>
......@@ -647,7 +647,7 @@ create_playbin (const gchar * uri, gboolean set_sink)
{
GstElement *playbin, *sink;
playbin = gst_element_factory_make ("playbin2", "playbin2");
playbin = gst_element_factory_make ("playbin", "playbin");
fail_unless (playbin != NULL, "Failed to create playbin element");
if (set_sink) {
......@@ -2474,9 +2474,9 @@ GST_END_TEST;
#endif
static Suite *
playbin2_compressed_suite (void)
playbin_compressed_suite (void)
{
Suite *s = suite_create ("playbin2_compressed");
Suite *s = suite_create ("playbin_compressed");
TCase *tc_chain = tcase_create ("general");
suite_add_tcase (s, tc_chain);
......@@ -2528,4 +2528,4 @@ playbin2_compressed_suite (void)
return s;
}
GST_CHECK_MAIN (playbin2_compressed);
GST_CHECK_MAIN (playbin_compressed);
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment