mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-30 04:00:37 +00:00
rtpsession: Add test for collision on incoming packets
Make sure that the collision is properly detected on incoming packets.
This commit is contained in:
parent
4e18567863
commit
3574e6c176
1 changed files with 47 additions and 0 deletions
|
@ -1002,6 +1002,52 @@ GST_START_TEST (test_ssrc_collision_when_sending)
|
||||||
|
|
||||||
GST_END_TEST;
|
GST_END_TEST;
|
||||||
|
|
||||||
|
|
||||||
|
GST_START_TEST (test_ssrc_collision_when_receiving)
|
||||||
|
{
|
||||||
|
SessionHarness *h = session_harness_new ();
|
||||||
|
GstBuffer *buf;
|
||||||
|
GstEvent *ev;
|
||||||
|
GSocketAddress *saddr;
|
||||||
|
gboolean had_collision = FALSE;
|
||||||
|
|
||||||
|
g_signal_connect (h->internal_session, "on-ssrc-collision",
|
||||||
|
G_CALLBACK (on_ssrc_collision_cb), &had_collision);
|
||||||
|
|
||||||
|
/* Push RTP buffer making our internal SSRC=0x12345678 */
|
||||||
|
buf = generate_test_buffer (0, 0x12345678);
|
||||||
|
fail_unless_equals_int (GST_FLOW_OK, session_harness_send_rtp (h, buf));
|
||||||
|
|
||||||
|
fail_unless (had_collision == FALSE);
|
||||||
|
|
||||||
|
/* Push SDES with identical SSRC as what we used to send RTP,
|
||||||
|
to create a collision */
|
||||||
|
buf = gst_rtcp_buffer_new (1400);
|
||||||
|
add_rtcp_sdes_packet (buf, 0x12345678, "test@foo.bar");
|
||||||
|
saddr = g_inet_socket_address_new_from_string ("127.0.0.1", 8080);
|
||||||
|
gst_buffer_add_net_address_meta (buf, saddr);
|
||||||
|
g_object_unref (saddr);
|
||||||
|
session_harness_recv_rtcp (h, buf);
|
||||||
|
|
||||||
|
fail_unless (had_collision == TRUE);
|
||||||
|
|
||||||
|
/* Verify the packet we just sent is not being boomeranged back to us
|
||||||
|
as a received packet! */
|
||||||
|
fail_unless_equals_int (0, gst_harness_buffers_in_queue (h->recv_rtp_h));
|
||||||
|
|
||||||
|
while ((ev = gst_harness_try_pull_upstream_event (h->send_rtp_h)) != NULL) {
|
||||||
|
if (GST_EVENT_CUSTOM_UPSTREAM == GST_EVENT_TYPE (ev))
|
||||||
|
break;
|
||||||
|
gst_event_unref (ev);
|
||||||
|
}
|
||||||
|
fail_unless (ev != NULL);
|
||||||
|
gst_event_unref (ev);
|
||||||
|
|
||||||
|
session_harness_free (h);
|
||||||
|
}
|
||||||
|
|
||||||
|
GST_END_TEST;
|
||||||
|
|
||||||
GST_START_TEST (test_request_fir)
|
GST_START_TEST (test_request_fir)
|
||||||
{
|
{
|
||||||
SessionHarness *h = session_harness_new ();
|
SessionHarness *h = session_harness_new ();
|
||||||
|
@ -2003,6 +2049,7 @@ rtpsession_suite (void)
|
||||||
tcase_add_test (tc_chain, test_dont_lock_on_stats);
|
tcase_add_test (tc_chain, test_dont_lock_on_stats);
|
||||||
tcase_add_test (tc_chain, test_ignore_suspicious_bye);
|
tcase_add_test (tc_chain, test_ignore_suspicious_bye);
|
||||||
tcase_add_test (tc_chain, test_ssrc_collision_when_sending);
|
tcase_add_test (tc_chain, test_ssrc_collision_when_sending);
|
||||||
|
tcase_add_test (tc_chain, test_ssrc_collision_when_receiving);
|
||||||
tcase_add_test (tc_chain, test_request_fir);
|
tcase_add_test (tc_chain, test_request_fir);
|
||||||
tcase_add_test (tc_chain, test_request_pli);
|
tcase_add_test (tc_chain, test_request_pli);
|
||||||
tcase_add_test (tc_chain, test_request_nack);
|
tcase_add_test (tc_chain, test_request_nack);
|
||||||
|
|
Loading…
Reference in a new issue