tests: Update tests with correct NAL type for each format

This commit is contained in:
Joni Räsänen 2022-06-17 10:06:01 +03:00
parent 6ed33cb564
commit ffc4bcf23c
5 changed files with 114 additions and 96 deletions

View File

@ -50,8 +50,8 @@ TEST(RTPTests, rtp_hook)
receiver = sess->create_stream(SEND_PORT, RECEIVE_PORT, RTP_FORMAT_GENERIC, flags);
}
test_packet_size(10, 1000, sess, sender, receiver);
test_packet_size(10, 2000, sess, sender, receiver);
test_packet_size(RTP_FORMAT_GENERIC, 10, 1000, sess, sender, receiver);
test_packet_size(RTP_FORMAT_GENERIC, 10, 2000, sess, sender, receiver);
cleanup_ms(sess, receiver);
cleanup_sess(ctx, sess);
@ -74,7 +74,7 @@ TEST(RTPTests, rtp_send_test)
receiver = sess->create_stream(SEND_PORT, RECEIVE_PORT, RTP_FORMAT_GENERIC, flags);
}
test_packet_size(10, 1500, sess, sender, receiver);
test_packet_size(RTP_FORMAT_GENERIC, 10, 1500, sess, sender, receiver);
cleanup_ms(sess, sender);
cleanup_sess(ctx, sess);
@ -107,7 +107,7 @@ TEST(RTPTests, rtp_poll)
if (sender)
{
const int frame_size = 1500;
send_packets(sess, sender, test_packets, frame_size, 0, true, false);
send_packets(RTP_FORMAT_GENERIC, sess, sender, test_packets, frame_size, 0, true, false);
uvgrtp::frame::rtp_frame* received_frame = nullptr;
@ -135,7 +135,7 @@ TEST(RTPTests, rtp_poll)
EXPECT_EQ(received_packets_no_timeout, test_packets);
int received_packets_timout = 0;
send_packets(sess, sender, test_packets, frame_size, 0, true, false);
send_packets(RTP_FORMAT_GENERIC, sess, sender, test_packets, frame_size, 0, true, false);
std::cout << "Start pulling data with 3 ms timout" << std::endl;
@ -195,10 +195,10 @@ TEST(RTPTests, send_too_much)
add_hook(nullptr, receiver, rtp_receive_hook);
// send 10000 small packets
send_packets(sess, sender, 10000, 1000, 0, true, true);
send_packets(RTP_FORMAT_GENERIC, sess, sender, 10000, 1000, 0, true, true);
// send 2000 large packets
send_packets(sess, sender, 2000, 20000, 2, true, true);
send_packets(RTP_FORMAT_GENERIC, sess, sender, 2000, 20000, 2, true, true);
cleanup_ms(sess, sender);
cleanup_ms(sess, receiver);

View File

@ -51,7 +51,8 @@ TEST(RTCPTests, rtcp) {
EXPECT_EQ(RTP_OK, remote_stream->get_rtcp()->install_sender_hook(sender_hook));
}
send_packets(local_session, local_stream, SEND_TEST_PACKETS, PAYLOAD_LEN, PACKET_INTERVAL_MS, true, false);
send_packets(RTP_FORMAT_GENERIC, local_session, local_stream,
SEND_TEST_PACKETS, PAYLOAD_LEN, PACKET_INTERVAL_MS, true, false);
cleanup(ctx, local_session, remote_session, local_stream, remote_stream);
}
@ -92,7 +93,8 @@ TEST(RTCP_reopen_receiver, rtcp) {
if (local_stream)
{
send_packets(local_session, local_stream, SEND_TEST_PACKETS/2, PAYLOAD_LEN, PACKET_INTERVAL_MS, true, false);
send_packets(RTP_FORMAT_GENERIC, local_session, local_stream,
SEND_TEST_PACKETS/2, PAYLOAD_LEN, PACKET_INTERVAL_MS, true, false);
if (remote_stream)
{
@ -102,7 +104,8 @@ TEST(RTCP_reopen_receiver, rtcp) {
EXPECT_NE(nullptr, remote_stream);
}
send_packets(local_session, local_stream, SEND_TEST_PACKETS / 2, PAYLOAD_LEN, PACKET_INTERVAL_MS, true, false);
send_packets(RTP_FORMAT_GENERIC, local_session, local_stream,
SEND_TEST_PACKETS / 2, PAYLOAD_LEN, PACKET_INTERVAL_MS, true, false);
}
cleanup(ctx, local_session, remote_session, local_stream, remote_stream);

View File

@ -21,34 +21,35 @@ TEST(FormatTests, h264)
if (sess)
{
sender = sess->create_stream(SEND_PORT, RECEIVE_PORT, RTP_FORMAT_H264, RCE_NO_FLAGS);
receiver = sess->create_stream(RECEIVE_PORT, SEND_PORT, RTP_FORMAT_H264, RCE_H26X_PREPEND_SC);
receiver = sess->create_stream(RECEIVE_PORT, SEND_PORT,
RTP_FORMAT_H264, RCE_H26X_PREPEND_SC | RCE_H26X_NO_DEPENDENCY_ENFORCEMENT);
}
// the default packet limit for RTP is 1458 where 12 bytes are dedicated to RTP header
test_packet_size(10, 1443, sess, sender, receiver);
test_packet_size(10, 1444, sess, sender, receiver);
test_packet_size(10, 1445, sess, sender, receiver);
test_packet_size(10, 1446, sess, sender, receiver); // packet limit
test_packet_size(10, 1447, sess, sender, receiver);
test_packet_size(10, 1448, sess, sender, receiver);
test_packet_size(10, 1449, sess, sender, receiver);
test_packet_size(10, 1450, sess, sender, receiver);
test_packet_size(10, 1451, sess, sender, receiver);
test_packet_size(10, 1452, sess, sender, receiver);
test_packet_size(10, 1453, sess, sender, receiver);
test_packet_size(10, 1454, sess, sender, receiver);
test_packet_size(10, 1455, sess, sender, receiver);
test_packet_size(10, 1501, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H264, 10, 1443, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H264, 10, 1444, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H264, 10, 1445, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H264, 10, 1446, sess, sender, receiver); // packet limit
test_packet_size(RTP_FORMAT_H264, 10, 1447, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H264, 10, 1448, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H264, 10, 1449, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H264, 10, 1450, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H264, 10, 1451, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H264, 10, 1452, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H264, 10, 1453, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H264, 10, 1454, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H264, 10, 1455, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H264, 10, 1501, sess, sender, receiver);
test_packet_size(10, 1446 * 2 - 1, sess, sender, receiver);
test_packet_size(10, 1446 * 2, sess, sender, receiver);
test_packet_size(10, 1446 * 2 + 1, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H264, 10, 1446 * 2 - 1, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H264, 10, 1446 * 2, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H264, 10, 1446 * 2 + 1, sess, sender, receiver);
test_packet_size(10, 5000, sess, sender, receiver);
test_packet_size(10, 7500, sess, sender, receiver);
test_packet_size(10, 10000, sess, sender, receiver);
test_packet_size(10, 25000, sess, sender, receiver);
test_packet_size(10, 50000, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H264, 10, 5000, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H264, 10, 7500, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H264, 10, 10000, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H264, 10, 25000, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H264, 10, 50000, sess, sender, receiver);
cleanup_ms(sess, sender);
cleanup_ms(sess, receiver);
@ -71,30 +72,30 @@ TEST(FormatTests, h265)
}
// the default packet limit for RTP is 1458 where 12 bytes are dedicated to RTP header
test_packet_size(10, 1443, sess, sender, receiver);
test_packet_size(10, 1444, sess, sender, receiver);
test_packet_size(10, 1445, sess, sender, receiver);
test_packet_size(10, 1446, sess, sender, receiver); // packet limit
test_packet_size(10, 1447, sess, sender, receiver);
test_packet_size(10, 1448, sess, sender, receiver);
test_packet_size(10, 1449, sess, sender, receiver);
test_packet_size(10, 1450, sess, sender, receiver);
test_packet_size(10, 1451, sess, sender, receiver);
test_packet_size(10, 1452, sess, sender, receiver);
test_packet_size(10, 1453, sess, sender, receiver);
test_packet_size(10, 1454, sess, sender, receiver);
test_packet_size(10, 1455, sess, sender, receiver);
test_packet_size(10, 1501, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H265, 10, 1443, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H265, 10, 1444, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H265, 10, 1445, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H265, 10, 1446, sess, sender, receiver); // packet limit
test_packet_size(RTP_FORMAT_H265, 10, 1447, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H265, 10, 1448, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H265, 10, 1449, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H265, 10, 1450, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H265, 10, 1451, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H265, 10, 1452, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H265, 10, 1453, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H265, 10, 1454, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H265, 10, 1455, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H265, 10, 1501, sess, sender, receiver);
test_packet_size(10, 1446 * 2 - 1, sess, sender, receiver);
test_packet_size(10, 1446 * 2, sess, sender, receiver);
test_packet_size(10, 1446 * 2 + 1, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H265, 10, 1446 * 2 - 1, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H265, 10, 1446 * 2, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H265, 10, 1446 * 2 + 1, sess, sender, receiver);
test_packet_size(10, 5000, sess, sender, receiver);
test_packet_size(10, 7500, sess, sender, receiver);
test_packet_size(10, 10000, sess, sender, receiver);
test_packet_size(10, 25000, sess, sender, receiver);
test_packet_size(10, 50000, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H265, 10, 5000, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H265, 10, 7500, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H265, 10, 10000, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H265, 10, 25000, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H265, 10, 50000, sess, sender, receiver);
cleanup_ms(sess, sender);
cleanup_ms(sess, receiver);
@ -118,13 +119,13 @@ TEST(FormatTests, h265_large)
receiver = sess->create_stream(RECEIVE_PORT, SEND_PORT, RTP_FORMAT_H265, RCE_H26X_PREPEND_SC);
}
test_packet_size(10, 100000, sess, sender, receiver);
test_packet_size(10, 200000, sess, sender, receiver);
test_packet_size(10, 300000, sess, sender, receiver);
test_packet_size(10, 400000, sess, sender, receiver);
test_packet_size(10, 500000, sess, sender, receiver);
test_packet_size(10, 750000, sess, sender, receiver);
test_packet_size(10, 1000000, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H265, 10, 100000, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H265, 10, 200000, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H265, 10, 300000, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H265, 10, 400000, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H265, 10, 500000, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H265, 10, 750000, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H265, 10, 1000000, sess, sender, receiver);
cleanup_ms(sess, sender);
cleanup_ms(sess, receiver);
@ -147,30 +148,30 @@ TEST(FormatTests, h266)
}
// the default packet limit for RTP is 1458 where 12 bytes are dedicated to RTP header
test_packet_size(10, 1443, sess, sender, receiver);
test_packet_size(10, 1444, sess, sender, receiver);
test_packet_size(10, 1445, sess, sender, receiver);
test_packet_size(10, 1446, sess, sender, receiver); // packet limit
test_packet_size(10, 1447, sess, sender, receiver);
test_packet_size(10, 1448, sess, sender, receiver);
test_packet_size(10, 1449, sess, sender, receiver);
test_packet_size(10, 1450, sess, sender, receiver);
test_packet_size(10, 1451, sess, sender, receiver);
test_packet_size(10, 1452, sess, sender, receiver);
test_packet_size(10, 1453, sess, sender, receiver);
test_packet_size(10, 1454, sess, sender, receiver);
test_packet_size(10, 1455, sess, sender, receiver);
test_packet_size(10, 1501, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H266, 10, 1443, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H266, 10, 1444, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H266, 10, 1445, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H266, 10, 1446, sess, sender, receiver); // packet limit
test_packet_size(RTP_FORMAT_H266, 10, 1447, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H266, 10, 1448, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H266, 10, 1449, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H266, 10, 1450, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H266, 10, 1451, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H266, 10, 1452, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H266, 10, 1453, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H266, 10, 1454, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H266, 10, 1455, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H266, 10, 1501, sess, sender, receiver);
test_packet_size(10, 1446 * 2 - 1, sess, sender, receiver);
test_packet_size(10, 1446 * 2, sess, sender, receiver);
test_packet_size(10, 1446 * 2 + 1, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H266, 10, 1446 * 2 - 1, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H266, 10, 1446 * 2, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H266, 10, 1446 * 2 + 1, sess, sender, receiver);
test_packet_size(10, 5000, sess, sender, receiver);
test_packet_size(10, 7500, sess, sender, receiver);
test_packet_size(10, 10000, sess, sender, receiver);
test_packet_size(10, 25000, sess, sender, receiver);
test_packet_size(10, 50000, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H266, 10, 5000, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H266, 10, 7500, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H266, 10, 10000, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H266, 10, 25000, sess, sender, receiver);
test_packet_size(RTP_FORMAT_H266, 10, 50000, sess, sender, receiver);
cleanup_ms(sess, sender);
cleanup_ms(sess, receiver);

View File

@ -33,7 +33,7 @@ TEST(EncryptionTests, no_send_user)
receiver = user_initialization(ctx, SRTP_256, sender_session, send);
send_packets(sender_session, send, 10, strlen((char*)"Hello, world!"), 10, true, false);
send_packets(RTP_FORMAT_GENERIC, sender_session, send, 10, strlen((char*)"Hello, world!"), 10, true, false);
cleanup_ms(sender_session, send);
if (receiver && receiver->joinable())

View File

@ -8,11 +8,11 @@ class Test_receiver;
void wait_until_next_frame(std::chrono::steady_clock::time_point& start,
int frame_index, int packet_interval_ms);
inline void send_packets(uvgrtp::session* sess, uvgrtp::media_stream* sender,
inline void send_packets(rtp_format_t format, uvgrtp::session* sess, uvgrtp::media_stream* sender,
int packets, size_t size, int packet_interval_ms, bool add_start_code, bool print_progress);
inline void add_hook(Test_receiver* tester, uvgrtp::media_stream* receiver, void (*hook)(void*, uvgrtp::frame::rtp_frame*));
inline void test_packet_size(int packets, size_t size, uvgrtp::media_stream* sender, uvgrtp::media_stream* receiver);
inline void test_packet_size(rtp_format_t format, int packets, size_t size, uvgrtp::media_stream* sender, uvgrtp::media_stream* receiver);
inline void cleanup_sess(uvgrtp::context& ctx, uvgrtp::session* sess);
inline void cleanup_ms(uvgrtp::session* sess, uvgrtp::media_stream* ms);
@ -44,7 +44,7 @@ private:
int expectedPackets_;
};
inline void send_packets(uvgrtp::session* sess, uvgrtp::media_stream* sender,
inline void send_packets(rtp_format_t format, uvgrtp::session* sess, uvgrtp::media_stream* sender,
int packets, size_t size, int packet_interval_ms, bool add_start_code, bool print_progress)
{
EXPECT_NE(nullptr, sess);
@ -60,12 +60,26 @@ inline void send_packets(uvgrtp::session* sess, uvgrtp::media_stream* sender,
memset(dummy_frame.get(), 'b', size);
if (add_start_code && size > 8)
if (add_start_code && size > 8)
{
memset(dummy_frame.get(), 0, 3);
memset(dummy_frame.get() + 3, 1, 1);
memset(dummy_frame.get() + 4, 1, (19 << 1)); // Intra frame
if (format == RTP_FORMAT_H264)
{
memset(dummy_frame.get(), 0, 2);
memset(dummy_frame.get() + 2, 1, 1);
memset(dummy_frame.get() + 3, 1, (5 << 1)); // Intra frame
}
else if (format == RTP_FORMAT_H265)
{
memset(dummy_frame.get(), 0, 3);
memset(dummy_frame.get() + 3, 1, 1);
memset(dummy_frame.get() + 4, 1, (19 << 1)); // Intra frame
}
else if (format == RTP_FORMAT_H266)
{
memset(dummy_frame.get(), 0, 3);
memset(dummy_frame.get() + 3, 1, 1);
memset(dummy_frame.get() + 4, 1, (7 << 1)); // Intra frame
}
}
rtp_error_t ret = RTP_OK;
@ -122,7 +136,7 @@ inline void cleanup_ms(uvgrtp::session* sess, uvgrtp::media_stream* ms)
}
inline void test_packet_size(int packets, size_t size, uvgrtp::session* sess, uvgrtp::media_stream* sender,
inline void test_packet_size(rtp_format_t format, int packets, size_t size, uvgrtp::session* sess, uvgrtp::media_stream* sender,
uvgrtp::media_stream* receiver)
{
EXPECT_NE(nullptr, sess);
@ -136,11 +150,11 @@ inline void test_packet_size(int packets, size_t size, uvgrtp::session* sess, uv
int interval_ms = 10;
add_hook(tester, receiver, rtp_receive_hook);
send_packets(sess, sender, packets, size, interval_ms, true, false);
send_packets(format, sess, sender, packets, size, interval_ms, true, false);
if (size > 20000)
{
std::this_thread::sleep_for(std::chrono::milliseconds(250));
std::this_thread::sleep_for(std::chrono::milliseconds(400));
}
else
{