summaryrefslogtreecommitdiff
path: root/toxav/rtp.c
diff options
context:
space:
mode:
authormannol <eniz_vukovic@hotmail.com>2015-01-24 23:29:54 +0100
committermannol <eniz_vukovic@hotmail.com>2015-01-24 23:29:54 +0100
commit1450c22d01cbb5185ee8eac14657ddf3301d7e48 (patch)
tree366f795f56689b0fb53dfe52941fb9c813429e8b /toxav/rtp.c
parente57fb8c12ea7de1a5070ea0fc6f14c8e242c409f (diff)
Current progress
Diffstat (limited to 'toxav/rtp.c')
-rw-r--r--toxav/rtp.c100
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
425int 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
445void 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
463RTPSession *rtp_new ( int payload_type, Messenger *messenger, int friend_num ) 425RTPSession *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
513void rtp_kill ( RTPSession *session, Messenger *messenger ) 470void 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
485int 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
491int 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
511void 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}