Home | History | Annotate | Download | only in include
      1 /*
      2  * rtp.h
      3  *
      4  * rtp interface for srtp reference implementation
      5  *
      6  * David A. McGrew
      7  * Cisco Systems, Inc.
      8  *
      9  * data types:
     10  *
     11  * rtp_msg_t       an rtp message (the data that goes on the wire)
     12  * rtp_sender_t    sender side socket and rtp info
     13  * rtp_receiver_t  receiver side socket and rtp info
     14  *
     15  */
     16 
     17 /*
     18  *
     19  * Copyright (c) 2001-2006, Cisco Systems, Inc.
     20  * All rights reserved.
     21  *
     22  * Redistribution and use in source and binary forms, with or without
     23  * modification, are permitted provided that the following conditions
     24  * are met:
     25  *
     26  *   Redistributions of source code must retain the above copyright
     27  *   notice, this list of conditions and the following disclaimer.
     28  *
     29  *   Redistributions in binary form must reproduce the above
     30  *   copyright notice, this list of conditions and the following
     31  *   disclaimer in the documentation and/or other materials provided
     32  *   with the distribution.
     33  *
     34  *   Neither the name of the Cisco Systems, Inc. nor the names of its
     35  *   contributors may be used to endorse or promote products derived
     36  *   from this software without specific prior written permission.
     37  *
     38  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     39  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     40  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
     41  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
     42  * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
     43  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
     44  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
     45  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     46  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     47  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     48  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
     49  * OF THE POSSIBILITY OF SUCH DAMAGE.
     50  *
     51  */
     52 
     53 
     54 #ifndef RTP_H
     55 #define RTP_H
     56 
     57 #ifdef HAVE_NETINET_IN_H
     58 # include <netinet/in.h>
     59 #elif defined HAVE_WINSOCK2_H
     60 # include <winsock2.h>
     61 #endif
     62 
     63 #include "srtp.h"
     64 
     65 typedef struct rtp_sender_ctx_t *rtp_sender_t;
     66 
     67 typedef struct rtp_receiver_ctx_t *rtp_receiver_t;
     68 
     69 unsigned int
     70 rtp_sendto(rtp_sender_t sender, const void* msg, int len);
     71 
     72 unsigned int
     73 rtp_recvfrom(rtp_receiver_t receiver, void *msg, int *len);
     74 
     75 int
     76 rtp_receiver_init(rtp_receiver_t rcvr, int socket,
     77 		  struct sockaddr_in addr, unsigned int ssrc);
     78 
     79 int
     80 rtp_sender_init(rtp_sender_t sender, int socket,
     81 		struct sockaddr_in addr, unsigned int ssrc);
     82 
     83 /*
     84  * srtp_sender_init(...) initializes an rtp_sender_t
     85  */
     86 
     87 int
     88 srtp_sender_init(rtp_sender_t rtp_ctx,          /* structure to be init'ed */
     89 		 struct sockaddr_in name,       /* socket name             */
     90 		 sec_serv_t security_services,  /* sec. servs. to be used  */
     91 		 unsigned char *input_key       /* master key/salt in hex  */
     92 		 );
     93 
     94 int
     95 srtp_receiver_init(rtp_receiver_t rtp_ctx,       /* structure to be init'ed */
     96 		   struct sockaddr_in name, 	 /* socket name             */
     97 		   sec_serv_t security_services, /* sec. servs. to be used  */
     98 		   unsigned char *input_key	 /* master key/salt in hex  */
     99 		   );
    100 
    101 
    102 int
    103 rtp_sender_init_srtp(rtp_sender_t sender, const srtp_policy_t *policy);
    104 
    105 int
    106 rtp_receiver_init_srtp(rtp_receiver_t sender, const srtp_policy_t *policy);
    107 
    108 
    109 rtp_sender_t
    110 rtp_sender_alloc();
    111 
    112 rtp_receiver_t
    113 rtp_receiver_alloc();
    114 
    115 
    116 /*
    117  * RTP_HEADER_LEN indicates the size of an RTP header
    118  */
    119 #define RTP_HEADER_LEN   12
    120 
    121 /*
    122  * RTP_MAX_BUF_LEN defines the largest RTP packet in the rtp.c implementation
    123  */
    124 #define RTP_MAX_BUF_LEN  16384
    125 
    126 
    127 #endif /* RTP_H */
    128