@@ -20,6 +20,14 @@ unsigned char sap_packet_no_payload_type[] = {0x20, 0x0, 0x17, 0xcd, 0xa9, 0xfe,
2020
2121unsigned char sap_packet_2channels_deletion_data[] = {0x24, 0x0, 0x17, 0xcd, 0xa9, 0xfe, 0xbd, 0xb8, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x73, 0x64, 0x70, 0x0, 0x76, 0x3d, 0x30, 0xd, 0xa, 0x6f, 0x3d, 0x2d, 0x20, 0x35, 0x31, 0x37, 0x33, 0x32, 0x32, 0x20, 0x35, 0x31, 0x37, 0x33, 0x32, 0x32, 0x20, 0x49, 0x4e, 0x20, 0x49, 0x50, 0x34, 0x20, 0x31, 0x36, 0x39, 0x2e, 0x32, 0x35, 0x34, 0x2e, 0x31, 0x38, 0x39, 0x2e, 0x31, 0x38, 0x34, 0xd, 0xa, 0x73, 0x3d, 0x41, 0x56, 0x49, 0x4f, 0x55, 0x53, 0x42, 0x2d, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x20, 0x3a, 0x20, 0x32, 0xd, 0xa, 0x69, 0x3d, 0x32, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x3a, 0x20, 0x4c, 0x65, 0x66, 0x74, 0x2c, 0x20, 0x52, 0x69, 0x67, 0x68, 0x74, 0xd, 0xa, 0x63, 0x3d, 0x49, 0x4e, 0x20, 0x49, 0x50, 0x34, 0x20, 0x32, 0x33, 0x39, 0x2e, 0x36, 0x39, 0x2e, 0x32, 0x34, 0x37, 0x2e, 0x32, 0x35, 0x31, 0x2f, 0x33, 0x32, 0xd, 0xa, 0x74, 0x3d, 0x30, 0x20, 0x30, 0xd, 0xa, 0x61, 0x3d, 0x6b, 0x65, 0x79, 0x77, 0x64, 0x73, 0x3a, 0x44, 0x61, 0x6e, 0x74, 0x65, 0xd, 0xa, 0x61, 0x3d, 0x72, 0x65, 0x63, 0x76, 0x6f, 0x6e, 0x6c, 0x79, 0xd, 0xa, 0x6d, 0x3d, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x20, 0x35, 0x30, 0x30, 0x34, 0x20, 0x52, 0x54, 0x50, 0x2f, 0x41, 0x56, 0x50, 0x20, 0x39, 0x37, 0xd, 0xa, 0x61, 0x3d, 0x72, 0x74, 0x70, 0x6d, 0x61, 0x70, 0x3a, 0x39, 0x37, 0x20, 0x4c, 0x32, 0x34, 0x2f, 0x34, 0x38, 0x30, 0x30, 0x30, 0x2f, 0x32, 0xd, 0xa, 0x61, 0x3d, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x3a, 0x31, 0xd, 0xa, 0x61, 0x3d, 0x74, 0x73, 0x2d, 0x72, 0x65, 0x66, 0x63, 0x6c, 0x6b, 0x3a, 0x70, 0x74, 0x70, 0x3d, 0x49, 0x45, 0x45, 0x45, 0x31, 0x35, 0x38, 0x38, 0x2d, 0x32, 0x30, 0x30, 0x38, 0x3a, 0x30, 0x30, 0x2d, 0x31, 0x44, 0x2d, 0x43, 0x31, 0x2d, 0x46, 0x46, 0x2d, 0x46, 0x45, 0x2d, 0x41, 0x31, 0x2d, 0x42, 0x38, 0x2d, 0x42, 0x43, 0x3a, 0x30, 0xd, 0xa, 0x61, 0x3d, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x63, 0x6c, 0x6b, 0x3a, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x3d, 0x30, 0xd, 0xa};
2222
23+ unsigned char rtp_packet[] = {0x80 , 0x60 , 0xdc , 0xf2 , 0x0 , 0xd , 0x32 , 0x93 , 0xc8 , 0x15 , 0x45 , 0x61 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 };
24+
25+ unsigned char rtp_packet_padding[] = {0xa0 , 0x60 , 0xdc , 0xf2 , 0x0 , 0xd , 0x32 , 0x93 , 0xc8 , 0x15 , 0x45 , 0x61 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0xbb , 0x02 };
26+
27+
28+ // padding size > payload size
29+ unsigned char rtp_packet_padding_invalid[] = {0xa0 , 0x60 , 0xdc , 0xf2 , 0x0 , 0xd , 0x32 , 0x93 , 0xc8 , 0x15 , 0x45 , 0x61 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0xbb , 0xff };
30+
2331#define TEST_CASE (fun )\
2432 do { \
2533 int ret = fun (); \
@@ -118,6 +126,44 @@ static int test_sdp_basic(){
118126 return 0 ;
119127}
120128
129+ static int test_rtp_basic (){
130+ Rtp_pkt_view rtp = Rtp_pkt_view::from_buffer (rtp_packet, sizeof (rtp_packet));
131+
132+ ASSERT (rtp.isValid ());
133+ ASSERT (!rtp.marker );
134+ ASSERT_EQUAL (96 , rtp.payload_type );
135+ ASSERT_EQUAL (56562 , rtp.seq );
136+ ASSERT_EQUAL (864915 , rtp.timestamp );
137+ ASSERT_EQUAL (0xc8154561 , rtp.ssrc );
138+ ASSERT_EQUAL (0 , rtp.csrc_count );
139+ ASSERT_EQUAL (144 , rtp.data_len );
140+
141+ return 0 ;
142+ }
143+
144+ static int test_rtp_padding (){
145+ Rtp_pkt_view rtp = Rtp_pkt_view::from_buffer (rtp_packet_padding, sizeof (rtp_packet_padding));
146+
147+ ASSERT (rtp.isValid ());
148+ ASSERT (!rtp.marker );
149+ ASSERT_EQUAL (96 , rtp.payload_type );
150+ ASSERT_EQUAL (56562 , rtp.seq );
151+ ASSERT_EQUAL (864915 , rtp.timestamp );
152+ ASSERT_EQUAL (0xc8154561 , rtp.ssrc );
153+ ASSERT_EQUAL (0 , rtp.csrc_count );
154+ ASSERT_EQUAL (144 , rtp.data_len );
155+
156+ return 0 ;
157+ }
158+
159+ static int test_rtp_padding_invalid (){
160+ Rtp_pkt_view rtp = Rtp_pkt_view::from_buffer (rtp_packet_padding_invalid, sizeof (rtp_packet_padding_invalid));
161+
162+ ASSERT (!rtp.isValid ());
163+
164+ return 0 ;
165+ }
166+
121167int test_sdp_parser (void ){
122168 TEST_CASE (test_sap);
123169 TEST_CASE (test_sap_empty);
@@ -128,5 +174,9 @@ int test_sdp_parser(void){
128174 TEST_CASE (test_sdp_empty);
129175 TEST_CASE (test_sdp_basic);
130176
177+ TEST_CASE (test_rtp_basic);
178+ TEST_CASE (test_rtp_padding);
179+ TEST_CASE (test_rtp_padding_invalid);
180+
131181 return 0 ;
132182}
0 commit comments