diff options
author | mannol <eniz_vukovic@hotmail.com> | 2015-04-27 00:15:57 +0200 |
---|---|---|
committer | mannol <eniz_vukovic@hotmail.com> | 2015-04-27 00:15:57 +0200 |
commit | 27e0254a98a32fad89ecc1c19121394754cfda2d (patch) | |
tree | c4de2455df5b9e38e9eee4e6586546de59279f45 /toxav/rtp.c | |
parent | 144fc94d6987c8c6f74d8024af5a5c1738fe4678 (diff) |
Almooooooost
Diffstat (limited to 'toxav/rtp.c')
-rw-r--r-- | toxav/rtp.c | 19 |
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 | } |
159 | void rtp_do(RTPSession *session) | 158 | int 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 | } |
208 | int rtp_start_receiving(RTPSession* session) | 207 | int 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 ) ) { |