summaryrefslogtreecommitdiff
path: root/toxav/rtp.c
diff options
context:
space:
mode:
authormannol <eniz_vukovic@hotmail.com>2015-04-27 00:15:57 +0200
committermannol <eniz_vukovic@hotmail.com>2015-04-27 00:15:57 +0200
commit27e0254a98a32fad89ecc1c19121394754cfda2d (patch)
treec4de2455df5b9e38e9eee4e6586546de59279f45 /toxav/rtp.c
parent144fc94d6987c8c6f74d8024af5a5c1738fe4678 (diff)
Almooooooost
Diffstat (limited to 'toxav/rtp.c')
-rw-r--r--toxav/rtp.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/toxav/rtp.c b/toxav/rtp.c
index a48eba20..b16e3d73 100644
--- a/toxav/rtp.c
+++ b/toxav/rtp.c
@@ -95,7 +95,6 @@ RTPSession *rtp_new ( int payload_type, Messenger *messenger, int friend_num, vo
95 retu->ssrc = random_int(); 95 retu->ssrc = random_int();
96 retu->payload_type = payload_type % 128; 96 retu->payload_type = payload_type % 128;
97 97
98 retu->tstate = rtp_StateNormal;
99 retu->m = messenger; 98 retu->m = messenger;
100 retu->friend_id = friend_num; 99 retu->friend_id = friend_num;
101 100
@@ -156,10 +155,10 @@ void rtp_kill ( RTPSession *session )
156 /* And finally free session */ 155 /* And finally free session */
157 free ( session ); 156 free ( session );
158} 157}
159void rtp_do(RTPSession *session) 158int rtp_do(RTPSession *session)
160{ 159{
161 if (!session || !session->rtcp_session) 160 if (!session || !session->rtcp_session)
162 return; 161 return rtp_StateNormal;
163 162
164 if (current_time_monotonic() - session->rtcp_session->last_sent_report_ts >= RTCP_REPORT_INTERVAL_MS) { 163 if (current_time_monotonic() - session->rtcp_session->last_sent_report_ts >= RTCP_REPORT_INTERVAL_MS) {
165 send_rtcp_report(session->rtcp_session, session->m, session->friend_id); 164 send_rtcp_report(session->rtcp_session, session->m, session->friend_id);
@@ -182,7 +181,7 @@ void rtp_do(RTPSession *session)
182 if (!rb_empty(session->rtcp_session->pl_stats)) { 181 if (!rb_empty(session->rtcp_session->pl_stats)) {
183 for (i = 0; reports[i] != NULL; i ++) 182 for (i = 0; reports[i] != NULL; i ++)
184 free(reports[i]); 183 free(reports[i]);
185 return; /* As some reports are timed out, we need more */ 184 return rtp_StateNormal; /* As some reports are timed out, we need more */
186 } 185 }
187 186
188 /* We have 4 on-time reports so we can proceed */ 187 /* We have 4 on-time reports so we can proceed */
@@ -194,16 +193,16 @@ void rtp_do(RTPSession *session)
194 } 193 }
195 194
196 if (quality <= 90) { 195 if (quality <= 90) {
197 session->tstate = rtp_StateBad;
198 LOGGER_WARNING("Stream quality: BAD"); 196 LOGGER_WARNING("Stream quality: BAD");
197 return rtp_StateBad;
199 } else if (quality >= 99) { 198 } else if (quality >= 99) {
200 session->tstate = rtp_StateGood;
201 LOGGER_DEBUG("Stream quality: GOOD"); 199 LOGGER_DEBUG("Stream quality: GOOD");
200 return rtp_StateGood;
202 } else { 201 } else {
203 session->tstate = rtp_StateNormal;
204 LOGGER_DEBUG("Stream quality: NORMAL"); 202 LOGGER_DEBUG("Stream quality: NORMAL");
205 } 203 }
206 } 204 }
205 return rtp_StateNormal;
207} 206}
208int rtp_start_receiving(RTPSession* session) 207int rtp_start_receiving(RTPSession* session)
209{ 208{
@@ -267,7 +266,7 @@ int rtp_send_data ( RTPSession *session, const uint8_t *data, uint16_t length, b
267 header->length = 12 /* Minimum header len */ + ( session->cc * size_32 ); 266 header->length = 12 /* Minimum header len */ + ( session->cc * size_32 );
268 267
269 uint32_t parsed_len = length + header->length + 1; 268 uint32_t parsed_len = length + header->length + 1;
270 assert(parsed_len + (session->ext_header ? session->ext_header->length * size_32 : 0) > MAX_RTP_SIZE ); 269 assert(parsed_len + (session->ext_header ? session->ext_header->length * size_32 : 0) < MAX_RTP_SIZE );
271 270
272 parsed[0] = session->prefix; 271 parsed[0] = session->prefix;
273 it = parse_header_out ( header, parsed + 1 ); 272 it = parse_header_out ( header, parsed + 1 );
@@ -485,7 +484,7 @@ int handle_rtp_packet ( Messenger* m, uint32_t friendnumber, const uint8_t* data
485 return -1; 484 return -1;
486 } 485 }
487 486
488 RTPHeader* header = parse_header_in ( data, length ); 487 RTPHeader* header = parse_header_in ( data + 1, length );
489 488
490 if ( !header ) { 489 if ( !header ) {
491 LOGGER_WARNING("Could not parse message: Header failed to extract!"); 490 LOGGER_WARNING("Could not parse message: Header failed to extract!");
@@ -494,7 +493,7 @@ int handle_rtp_packet ( Messenger* m, uint32_t friendnumber, const uint8_t* data
494 493
495 RTPExtHeader* ext_header = NULL; 494 RTPExtHeader* ext_header = NULL;
496 495
497 uint16_t from_pos = header->length; 496 uint16_t from_pos = header->length + 1;
498 uint16_t msg_length = length - from_pos; 497 uint16_t msg_length = length - from_pos;
499 498
500 if ( GET_FLAG_EXTENSION ( header ) ) { 499 if ( GET_FLAG_EXTENSION ( header ) ) {