diff options
author | mannol <eniz_vukovic@hotmail.com> | 2015-01-24 23:29:54 +0100 |
---|---|---|
committer | mannol <eniz_vukovic@hotmail.com> | 2015-01-24 23:29:54 +0100 |
commit | 1450c22d01cbb5185ee8eac14657ddf3301d7e48 (patch) | |
tree | 366f795f56689b0fb53dfe52941fb9c813429e8b /toxav/rtp.c | |
parent | e57fb8c12ea7de1a5070ea0fc6f14c8e242c409f (diff) |
Current progress
Diffstat (limited to 'toxav/rtp.c')
-rw-r--r-- | toxav/rtp.c | 100 |
1 files changed, 50 insertions, 50 deletions
diff --git a/toxav/rtp.c b/toxav/rtp.c index 2af89ebf..ba93e781 100644 --- a/toxav/rtp.c +++ b/toxav/rtp.c | |||
@@ -422,44 +422,6 @@ RTPMessage *rtp_new_message ( RTPSession *session, const uint8_t *data, uint32_t | |||
422 | 422 | ||
423 | 423 | ||
424 | 424 | ||
425 | int rtp_send_msg ( RTPSession *session, Messenger *messenger, const uint8_t *data, uint16_t length ) | ||
426 | { | ||
427 | RTPMessage *msg = rtp_new_message (session, data, length); | ||
428 | |||
429 | if ( !msg ) return -1; | ||
430 | |||
431 | if ( -1 == send_custom_lossy_packet(messenger, session->dest, msg->data, msg->length) ) { | ||
432 | LOGGER_WARNING("Failed to send full packet (len: %d)! std error: %s", length, strerror(errno)); | ||
433 | rtp_free_msg ( session, msg ); | ||
434 | return rtp_ErrorSending; | ||
435 | } | ||
436 | |||
437 | |||
438 | /* Set sequ number */ | ||
439 | session->sequnum = session->sequnum >= MAX_SEQU_NUM ? 0 : session->sequnum + 1; | ||
440 | rtp_free_msg ( session, msg ); | ||
441 | |||
442 | return 0; | ||
443 | } | ||
444 | |||
445 | void rtp_free_msg ( RTPSession *session, RTPMessage *msg ) | ||
446 | { | ||
447 | if ( !session ) { | ||
448 | if ( msg->ext_header ) { | ||
449 | free ( msg->ext_header->table ); | ||
450 | free ( msg->ext_header ); | ||
451 | } | ||
452 | } else { | ||
453 | if ( msg->ext_header && session->ext_header != msg->ext_header ) { | ||
454 | free ( msg->ext_header->table ); | ||
455 | free ( msg->ext_header ); | ||
456 | } | ||
457 | } | ||
458 | |||
459 | free ( msg->header ); | ||
460 | free ( msg ); | ||
461 | } | ||
462 | |||
463 | RTPSession *rtp_new ( int payload_type, Messenger *messenger, int friend_num ) | 425 | RTPSession *rtp_new ( int payload_type, Messenger *messenger, int friend_num ) |
464 | { | 426 | { |
465 | RTPSession *retu = calloc(1, sizeof(RTPSession)); | 427 | RTPSession *retu = calloc(1, sizeof(RTPSession)); |
@@ -469,16 +431,10 @@ RTPSession *rtp_new ( int payload_type, Messenger *messenger, int friend_num ) | |||
469 | return NULL; | 431 | return NULL; |
470 | } | 432 | } |
471 | 433 | ||
472 | if ( -1 == custom_lossy_packet_registerhandler(messenger, friend_num, payload_type, rtp_handle_packet, retu)) { | ||
473 | LOGGER_ERROR("Error setting custom register handler for rtp session"); | ||
474 | free(retu); | ||
475 | return NULL; | ||
476 | } | ||
477 | |||
478 | LOGGER_DEBUG("Registered packet handler: pt: %d; fid: %d", payload_type, friend_num); | 434 | LOGGER_DEBUG("Registered packet handler: pt: %d; fid: %d", payload_type, friend_num); |
479 | 435 | ||
480 | retu->version = RTP_VERSION; /* It's always 2 */ | 436 | retu->version = RTP_VERSION; /* It's always 2 */ |
481 | retu->padding = 0; /* If some additional data is needed about the packet */ | 437 | retu->padding = 0; /* If some additional data is needed about the packet */ |
482 | retu->extension = 0; /* If extension to header is needed */ | 438 | retu->extension = 0; /* If extension to header is needed */ |
483 | retu->cc = 1; /* Amount of contributors */ | 439 | retu->cc = 1; /* Amount of contributors */ |
484 | retu->csrc = NULL; /* Container */ | 440 | retu->csrc = NULL; /* Container */ |
@@ -498,23 +454,24 @@ RTPSession *rtp_new ( int payload_type, Messenger *messenger, int friend_num ) | |||
498 | free(retu); | 454 | free(retu); |
499 | return NULL; | 455 | return NULL; |
500 | } | 456 | } |
501 | 457 | ||
502 | retu->csrc[0] = retu->ssrc; /* Set my ssrc to the list receive */ | 458 | retu->csrc[0] = retu->ssrc; /* Set my ssrc to the list receive */ |
503 | 459 | ||
504 | /* Also set payload type as prefix */ | 460 | /* Also set payload type as prefix */ |
505 | retu->prefix = payload_type; | 461 | retu->prefix = payload_type; |
506 | 462 | ||
463 | retu->m = messenger; | ||
507 | /* | 464 | /* |
508 | * | 465 | * |
509 | */ | 466 | */ |
510 | return retu; | 467 | return retu; |
511 | } | 468 | } |
512 | 469 | ||
513 | void rtp_kill ( RTPSession *session, Messenger *messenger ) | 470 | void rtp_kill ( RTPSession *session ) |
514 | { | 471 | { |
515 | if ( !session ) return; | 472 | if ( !session ) return; |
516 | 473 | ||
517 | custom_lossy_packet_registerhandler(messenger, session->dest, session->prefix, NULL, NULL); | 474 | custom_lossy_packet_registerhandler(session->m, session->dest, session->prefix, NULL, NULL); |
518 | 475 | ||
519 | free ( session->ext_header ); | 476 | free ( session->ext_header ); |
520 | free ( session->csrc ); | 477 | free ( session->csrc ); |
@@ -523,5 +480,48 @@ void rtp_kill ( RTPSession *session, Messenger *messenger ) | |||
523 | 480 | ||
524 | /* And finally free session */ | 481 | /* And finally free session */ |
525 | free ( session ); | 482 | free ( session ); |
483 | } | ||
526 | 484 | ||
485 | int rtp_register_for_receiving(RTPSession* session) | ||
486 | { | ||
487 | return custom_lossy_packet_registerhandler(session->m, session->dest, session->prefix, | ||
488 | rtp_handle_packet, session); | ||
489 | } | ||
490 | |||
491 | int rtp_send_msg ( RTPSession *session, Messenger *messenger, const uint8_t *data, uint16_t length ) | ||
492 | { | ||
493 | RTPMessage *msg = rtp_new_message (session, data, length); | ||
494 | |||
495 | if ( !msg ) return -1; | ||
496 | |||
497 | if ( -1 == send_custom_lossy_packet(messenger, session->dest, msg->data, msg->length) ) { | ||
498 | LOGGER_WARNING("Failed to send full packet (len: %d)! std error: %s", length, strerror(errno)); | ||
499 | rtp_free_msg ( session, msg ); | ||
500 | return rtp_ErrorSending; | ||
501 | } | ||
502 | |||
503 | |||
504 | /* Set sequ number */ | ||
505 | session->sequnum = session->sequnum >= MAX_SEQU_NUM ? 0 : session->sequnum + 1; | ||
506 | rtp_free_msg ( session, msg ); | ||
507 | |||
508 | return 0; | ||
509 | } | ||
510 | |||
511 | void rtp_free_msg ( RTPSession *session, RTPMessage *msg ) | ||
512 | { | ||
513 | if ( !session ) { | ||
514 | if ( msg->ext_header ) { | ||
515 | free ( msg->ext_header->table ); | ||
516 | free ( msg->ext_header ); | ||
517 | } | ||
518 | } else { | ||
519 | if ( msg->ext_header && session->ext_header != msg->ext_header ) { | ||
520 | free ( msg->ext_header->table ); | ||
521 | free ( msg->ext_header ); | ||
522 | } | ||
523 | } | ||
524 | |||
525 | free ( msg->header ); | ||
526 | free ( msg ); | ||
527 | } | 527 | } |