diff options
author | Olivier Crête <olivier.crete@collabora.co.uk> | 2010-05-07 16:42:22 -0400 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.net> | 2012-12-16 16:35:14 +0000 |
commit | 8e58646f5c05bfdec67db1d282e856d6e7ed4265 (patch) | |
tree | f3d943a6a6721c1a13e9e2c21ed0db76688cbf8a /tests | |
parent | 7be57cac3a76e7c2686ae9f819343a88ca7935d1 (diff) |
rtpmux: Aggregate incoming segments
Diffstat (limited to 'tests')
-rw-r--r-- | tests/check/elements/rtpmux.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/check/elements/rtpmux.c b/tests/check/elements/rtpmux.c index b37522c4d..5c55634b2 100644 --- a/tests/check/elements/rtpmux.c +++ b/tests/check/elements/rtpmux.c @@ -60,6 +60,14 @@ setcaps_func (GstPad * pad, GstCaps * caps) return TRUE; } +static gboolean +event_func (GstPad * pad, GstEvent * event) +{ + gst_event_unref (event); + + return TRUE; +} + static void test_basic (const gchar * elem_name, int count, check_cb cb) { @@ -74,6 +82,7 @@ test_basic (const gchar * elem_name, int count, check_cb cb) GstCaps *src2caps = NULL; GstCaps *sinkcaps = NULL; GstCaps *caps; + GstEvent *newsegment; int i; rtpmux = gst_check_setup_element (elem_name); @@ -92,6 +101,7 @@ test_basic (const gchar * elem_name, int count, check_cb cb) gst_pad_set_getcaps_function (src2, getcaps_func); gst_pad_set_getcaps_function (sink, getcaps_func); gst_pad_set_setcaps_function (sink, setcaps_func); + gst_pad_set_event_function (sink, event_func); g_object_set_data (G_OBJECT (src1), "caps", &src1caps); g_object_set_data (G_OBJECT (src2), "caps", &src2caps); g_object_set_data (G_OBJECT (sink), "caps", &sinkcaps); @@ -130,8 +140,17 @@ test_basic (const gchar * elem_name, int count, check_cb cb) "ssrc", G_TYPE_UINT, 66, NULL); fail_unless (gst_pad_set_caps (src1, caps)); + newsegment = gst_event_new_new_segment (FALSE, 1, GST_FORMAT_TIME, + 100000, -1, 0); + fail_unless (gst_pad_push_event (src1, newsegment)); + newsegment = gst_event_new_new_segment (FALSE, 1, GST_FORMAT_TIME, + 50000, -1, 0); + fail_unless (gst_pad_push_event (src2, newsegment)); + for (i = 0; i < count; i++) { inbuf = gst_rtp_buffer_new_allocate (10, 0, 0); + GST_BUFFER_TIMESTAMP (inbuf) = i * 1000 + 100000; + GST_BUFFER_DURATION (inbuf) = 1000; gst_buffer_set_caps (inbuf, caps); gst_rtp_buffer_set_version (inbuf, 2); gst_rtp_buffer_set_payload_type (inbuf, 98); @@ -140,6 +159,10 @@ test_basic (const gchar * elem_name, int count, check_cb cb) gst_rtp_buffer_set_seq (inbuf, 2000 + i); fail_unless (gst_pad_push (src1, inbuf) == GST_FLOW_OK); + if (buffers) + fail_unless (GST_BUFFER_TIMESTAMP (buffers->data) == i * 1000, "%lld", + GST_BUFFER_TIMESTAMP (buffers->data)); + cb (src2, i); g_list_foreach (buffers, (GFunc) gst_buffer_unref, NULL); |