mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-09-25 21:40:34 +00:00
srtsrc: Add test of port allocation
This commit is contained in:
parent
b5f70619ec
commit
8c1725c961
1 changed files with 54 additions and 14 deletions
|
@ -24,26 +24,16 @@
|
|||
static const gchar elements[][8] = { "srtsrc", "srtsink" };
|
||||
|
||||
static void
|
||||
check_play (const gchar * src_uri,
|
||||
check_play (GstHarness * h_src,
|
||||
GstSRTConnectionMode src_mode,
|
||||
const gchar * sink_uri, GstSRTConnectionMode sink_mode)
|
||||
GstHarness * h_sink, GstSRTConnectionMode sink_mode)
|
||||
{
|
||||
GstHarness *h_src, *h_sink;
|
||||
GstStructure *stats;
|
||||
gint64 packets_received;
|
||||
GstBuffer *in_buf, *out_buf;
|
||||
gchar *src_launchline, *sink_launchline;
|
||||
GstElement *src_element;
|
||||
guint8 data[1316] = { 0 };
|
||||
|
||||
sink_launchline = g_strdup_printf ("srtsink uri=%s", sink_uri);
|
||||
h_sink = gst_harness_new_parse (sink_launchline);
|
||||
g_free (sink_launchline);
|
||||
|
||||
src_launchline = g_strdup_printf ("srtsrc name=src uri=%s", src_uri);
|
||||
h_src = gst_harness_new_parse (src_launchline);
|
||||
g_free (src_launchline);
|
||||
|
||||
gst_harness_set_src_caps_str (h_sink, "video/mpegts");
|
||||
|
||||
if (src_mode == GST_SRT_CONNECTION_MODE_LISTENER) {
|
||||
|
@ -99,6 +89,25 @@ check_play (const gchar * src_uri,
|
|||
gst_harness_teardown (h_sink);
|
||||
}
|
||||
|
||||
static void
|
||||
check_play_uri (const gchar * src_uri,
|
||||
GstSRTConnectionMode src_mode,
|
||||
const gchar * sink_uri, GstSRTConnectionMode sink_mode)
|
||||
{
|
||||
gchar *src_launchline, *sink_launchline;
|
||||
GstHarness *h_src, *h_sink;
|
||||
|
||||
sink_launchline = g_strdup_printf ("srtsink uri=%s", sink_uri);
|
||||
h_sink = gst_harness_new_parse (sink_launchline);
|
||||
g_free (sink_launchline);
|
||||
|
||||
src_launchline = g_strdup_printf ("srtsrc name=src uri=%s", src_uri);
|
||||
h_src = gst_harness_new_parse (src_launchline);
|
||||
g_free (src_launchline);
|
||||
|
||||
check_play (h_src, src_mode, h_sink, sink_mode);
|
||||
}
|
||||
|
||||
GST_START_TEST (test_create_and_unref)
|
||||
{
|
||||
GstElement *e;
|
||||
|
@ -156,7 +165,7 @@ GST_END_TEST;
|
|||
|
||||
GST_START_TEST (test_src_caller_sink_listener)
|
||||
{
|
||||
check_play ("srt://127.0.0.1:3434?mode=caller",
|
||||
check_play_uri ("srt://127.0.0.1:3434?mode=caller",
|
||||
GST_SRT_CONNECTION_MODE_CALLER,
|
||||
"srt://:3434?mode=listener", GST_SRT_CONNECTION_MODE_LISTENER);
|
||||
}
|
||||
|
@ -165,13 +174,43 @@ GST_END_TEST;
|
|||
|
||||
GST_START_TEST (test_src_listener_sink_caller)
|
||||
{
|
||||
check_play ("srt://:4242?mode=listener",
|
||||
check_play_uri ("srt://:4242?mode=listener",
|
||||
GST_SRT_CONNECTION_MODE_LISTENER,
|
||||
"srt://127.0.0.1:4242?mode=caller", GST_SRT_CONNECTION_MODE_CALLER);
|
||||
}
|
||||
|
||||
GST_END_TEST;
|
||||
|
||||
GST_START_TEST (test_src_allocate_port)
|
||||
{
|
||||
GstHarness *h_src, *h_sink;
|
||||
GstElement *src;
|
||||
gchar *sink_launchline;
|
||||
gint local_port = 0;
|
||||
|
||||
h_src = gst_harness_new_parse ("srtsrc name=src localport=0 mode=listener");
|
||||
g_assert_nonnull (h_src);
|
||||
|
||||
src = gst_bin_get_by_name (GST_BIN (h_src->element), "src");
|
||||
gst_element_set_state (src, GST_STATE_PAUSED);
|
||||
g_object_get (src, "localport", &local_port, NULL);
|
||||
g_object_unref (src);
|
||||
|
||||
GST_INFO ("srtsrc localport = %d", local_port);
|
||||
g_assert_cmpint (local_port, !=, 0);
|
||||
|
||||
sink_launchline =
|
||||
g_strdup_printf ("srtsink uri=srt://127.0.0.1:%u?mode=caller",
|
||||
local_port);
|
||||
h_sink = gst_harness_new_parse (sink_launchline);
|
||||
g_free (sink_launchline);
|
||||
|
||||
check_play (h_src, GST_SRT_CONNECTION_MODE_LISTENER, h_sink,
|
||||
GST_SRT_CONNECTION_MODE_CALLER);
|
||||
}
|
||||
|
||||
GST_END_TEST;
|
||||
|
||||
static Suite *
|
||||
srt_suite (void)
|
||||
{
|
||||
|
@ -185,6 +224,7 @@ srt_suite (void)
|
|||
G_N_ELEMENTS (elements));
|
||||
tcase_add_test (tc_chain, test_src_caller_sink_listener);
|
||||
tcase_add_test (tc_chain, test_src_listener_sink_caller);
|
||||
tcase_add_test (tc_chain, test_src_allocate_port);
|
||||
|
||||
return s;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue