tests: capsfilter-renegotiation: New renegotiation use cases

Adds some new tests for renegotiation use cases that would
use the new renegotiate event
This commit is contained in:
Thiago Santos 2011-01-17 14:12:06 -03:00 committed by Sebastian Dröge
parent 081202b9d3
commit 213050e53c

View file

@ -88,7 +88,11 @@ buffer_probe (GstPad * pad, GstMiniObject * obj, gpointer data)
return TRUE;
}
GST_START_TEST (test_capsfilter_renegotiation)
/* launch line is a pipeline that must have a capsfilter named 'cf' that
* will be used to trigger the renegotiation */
static void
run_capsfilter_renegotiation (const gchar * launch_line,
gboolean reset_buffer_alloc)
{
GstElement *capsfilter;
GstElement *sink;
@ -96,6 +100,7 @@ GST_START_TEST (test_capsfilter_renegotiation)
GstBus *bus;
GstMessage *msg;
GstPad *pad;
GstPad *sinkpad;
caps_change = 0;
buffer_count = 0;
@ -103,13 +108,18 @@ GST_START_TEST (test_capsfilter_renegotiation)
gst_caps_unref (current_caps);
current_caps = NULL;
pipeline = gst_parse_launch ("videotestsrc num-buffers=200 ! capsfilter "
"caps=\"" FIRST_CAPS "\" name=cf ! fakesink name=sink", NULL);
pipeline = gst_parse_launch (launch_line, NULL);
g_assert (pipeline);
capsfilter = gst_bin_get_by_name (GST_BIN (pipeline), "cf");
g_assert (capsfilter);
if (reset_buffer_alloc) {
sinkpad = gst_element_get_static_pad (capsfilter, "sink");
gst_pad_set_bufferalloc_function (sinkpad, NULL);
gst_object_unref (sinkpad);
}
sink = gst_bin_get_by_name (GST_BIN (pipeline), "sink");
g_assert (sink);
@ -126,18 +136,32 @@ GST_START_TEST (test_capsfilter_renegotiation)
GST_MESSAGE_EOS | GST_MESSAGE_ERROR);
g_assert (GST_MESSAGE_TYPE (msg) == GST_MESSAGE_EOS);
g_assert (caps_change == 4);
gst_element_set_state (pipeline, GST_STATE_NULL);
if (current_caps)
gst_caps_unref (current_caps);
current_caps = NULL;
gst_message_unref (msg);
g_object_unref (bus);
g_object_unref (G_OBJECT (pipeline));
}
GST_START_TEST (test_capsfilter_renegotiation)
{
run_capsfilter_renegotiation ("videotestsrc num-buffers=200 peer-alloc=true"
" ! capsfilter caps=\"" FIRST_CAPS "\" name=cf ! fakesink name=sink",
FALSE);
run_capsfilter_renegotiation ("videotestsrc num-buffers=200 peer-alloc=false"
" ! capsfilter caps=\"" FIRST_CAPS "\" name=cf ! fakesink name=sink",
FALSE);
run_capsfilter_renegotiation ("videotestsrc num-buffers=200 peer-alloc=false"
" ! capsfilter caps=\"video/x-raw-yuv, format=(fourcc)I420, width=(int)100, height=(int)100\" "
" ! ffmpegcolorspace ! videoscale ! capsfilter caps=\"" FIRST_CAPS
"\" name=cf " " ! fakesink name=sink", TRUE);
}
GST_END_TEST;
static Suite *