summaryrefslogtreecommitdiff
path: root/toxav/rtp.c
diff options
context:
space:
mode:
authormannol <eniz_vukovic@hotmail.com>2015-08-09 12:39:21 +0200
committermannol <eniz_vukovic@hotmail.com>2015-08-09 12:39:21 +0200
commitc641b0fceb9b1fe0ca7181af1ddbb65200c33599 (patch)
tree286a870e03e3b43878753eb57e2d354df7c53f99 /toxav/rtp.c
parent0be0e88f3ec0cd81147a1418aa0afe61c24112b7 (diff)
parent2ab3b14731061cc04d3ccc50a35093c11d018298 (diff)
Updated with upstream
Diffstat (limited to 'toxav/rtp.c')
-rw-r--r--toxav/rtp.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/toxav/rtp.c b/toxav/rtp.c
index 7a20877f..4df2e2d5 100644
--- a/toxav/rtp.c
+++ b/toxav/rtp.c
@@ -23,16 +23,16 @@
23#include "config.h" 23#include "config.h"
24#endif /* HAVE_CONFIG_H */ 24#endif /* HAVE_CONFIG_H */
25 25
26#include "rtp.h"
26#include "../toxcore/logger.h" 27#include "../toxcore/logger.h"
27#include "../toxcore/util.h" 28#include "../toxcore/util.h"
28#include "../toxcore/Messenger.h" 29#include "../toxcore/Messenger.h"
29 30
30#include "rtp.h"
31#include <stdlib.h> 31#include <stdlib.h>
32#include <assert.h> 32#include <assert.h>
33 33
34#define size_32 4
35#define RTCP_REPORT_INTERVAL_MS 500 34#define RTCP_REPORT_INTERVAL_MS 500
35#define RTP_MAX_SIZE 1500
36 36
37#define ADD_FLAG_VERSION(_h, _v) do { ( _h->flags ) &= 0x3F; ( _h->flags ) |= ( ( ( _v ) << 6 ) & 0xC0 ); } while(0) 37#define ADD_FLAG_VERSION(_h, _v) do { ( _h->flags ) &= 0x3F; ( _h->flags ) |= ( ( ( _v ) << 6 ) & 0xC0 ); } while(0)
38#define ADD_FLAG_PADDING(_h, _v) do { if ( _v > 0 ) _v = 1; ( _h->flags ) &= 0xDF; ( _h->flags ) |= ( ( ( _v ) << 5 ) & 0x20 ); } while(0) 38#define ADD_FLAG_PADDING(_h, _v) do { if ( _v > 0 ) _v = 1; ( _h->flags ) &= 0xDF; ( _h->flags ) |= ( ( ( _v ) << 5 ) & 0x20 ); } while(0)
@@ -243,7 +243,7 @@ int rtp_send_data ( RTPSession *session, const uint8_t *data, uint16_t length, b
243 return -1; 243 return -1;
244 } 244 }
245 245
246 uint8_t parsed[MAX_RTP_SIZE]; 246 uint8_t parsed[RTP_MAX_SIZE];
247 uint8_t *it; 247 uint8_t *it;
248 248
249 RTPHeader header[1]; 249 RTPHeader header[1];
@@ -268,16 +268,16 @@ int rtp_send_data ( RTPSession *session, const uint8_t *data, uint16_t length, b
268 for ( i = 0; i < session->cc; i++ ) 268 for ( i = 0; i < session->cc; i++ )
269 header->csrc[i] = session->csrc[i]; 269 header->csrc[i] = session->csrc[i];
270 270
271 header->length = 12 /* Minimum header len */ + ( session->cc * size_32 ); 271 header->length = 12 /* Minimum header len */ + ( session->cc * 4 );
272 272
273 uint32_t parsed_len = length + header->length + 1; 273 uint32_t parsed_len = length + header->length + 1;
274 assert(parsed_len + (session->ext_header ? session->ext_header->length * size_32 : 0) < MAX_RTP_SIZE ); 274 assert(parsed_len + (session->ext_header ? session->ext_header->length * 4 : 0) < RTP_MAX_SIZE );
275 275
276 parsed[0] = session->prefix; 276 parsed[0] = session->prefix;
277 it = parse_header_out ( header, parsed + 1 ); 277 it = parse_header_out ( header, parsed + 1 );
278 278
279 if ( session->ext_header ) { 279 if ( session->ext_header ) {
280 parsed_len += ( 4 /* Minimum ext header len */ + session->ext_header->length * size_32 ); 280 parsed_len += ( 4 /* Minimum ext header len */ + session->ext_header->length * 4 );
281 it = parse_ext_header_out ( session->ext_header, it ); 281 it = parse_ext_header_out ( session->ext_header, it );
282 } 282 }
283 283
@@ -472,7 +472,7 @@ int handle_rtp_packet ( Messenger* m, uint32_t friendnumber, const uint8_t* data
472 472
473 RTPSession *session = object; 473 RTPSession *session = object;
474 474
475 if ( !session || length < 13 || length > MAX_RTP_SIZE ) { 475 if ( !session || length < 13 || length > RTP_MAX_SIZE ) {
476 LOGGER_WARNING("No session or invalid length of received buffer!"); 476 LOGGER_WARNING("No session or invalid length of received buffer!");
477 return -1; 477 return -1;
478 } 478 }
@@ -493,8 +493,8 @@ int handle_rtp_packet ( Messenger* m, uint32_t friendnumber, const uint8_t* data
493 ext_header = parse_ext_header_in ( data + from_pos, length ); 493 ext_header = parse_ext_header_in ( data + from_pos, length );
494 494
495 if ( ext_header ) { 495 if ( ext_header ) {
496 msg_length -= ( 4 /* Minimum ext header len */ + ext_header->length * size_32 ); 496 msg_length -= ( 4 /* Minimum ext header len */ + ext_header->length * 4 );
497 from_pos += ( 4 /* Minimum ext header len */ + ext_header->length * size_32 ); 497 from_pos += ( 4 /* Minimum ext header len */ + ext_header->length * 4 );
498 } else { /* Error */ 498 } else { /* Error */
499 LOGGER_WARNING("Could not parse message: Ext Header failed to extract!"); 499 LOGGER_WARNING("Could not parse message: Ext Header failed to extract!");
500 free(header); 500 free(header);
@@ -502,7 +502,7 @@ int handle_rtp_packet ( Messenger* m, uint32_t friendnumber, const uint8_t* data
502 } 502 }
503 } 503 }
504 504
505 if (msg_length > MAX_RTP_SIZE) { 505 if (msg_length > RTP_MAX_SIZE) {
506 LOGGER_WARNING("Could not parse message: Invalid length!"); 506 LOGGER_WARNING("Could not parse message: Invalid length!");
507 free(header); 507 free(header);
508 free(ext_header); 508 free(ext_header);
@@ -611,4 +611,4 @@ void send_rtcp_report(RTCPSession* session, Messenger* m, uint32_t friendnumber)
611 session->last_expected_packets = 0; 611 session->last_expected_packets = 0;
612 session->last_sent_report_ts = current_time_monotonic(); 612 session->last_sent_report_ts = current_time_monotonic();
613 } 613 }
614} \ No newline at end of file 614}