oRTP  0.27.0
Data Structures | Macros | Typedefs | Functions
telephonyevents.h File Reference

Receiving and sending telephone events (RFC2833) More...

#include <ortp/rtpsession.h>

Data Structures

struct  _telephone_event
 

Macros

#define TELEPHONY_EVENTS_ALLOCATED_SIZE   (4*sizeof(telephone_event_t))
 
#define TEV_DTMF_0   (0)
 
#define TEV_DTMF_1   (1)
 
#define TEV_DTMF_2   (2)
 
#define TEV_DTMF_3   (3)
 
#define TEV_DTMF_4   (4)
 
#define TEV_DTMF_5   (5)
 
#define TEV_DTMF_6   (6)
 
#define TEV_DTMF_7   (7)
 
#define TEV_DTMF_8   (8)
 
#define TEV_DTMF_9   (9)
 
#define TEV_DTMF_STAR   (10)
 
#define TEV_DTMF_POUND   (11)
 
#define TEV_DTMF_A   (12)
 
#define TEV_DTMF_B   (13)
 
#define TEV_DTMF_C   (14)
 
#define TEV_DTMF_D   (15)
 
#define TEV_FLASH   (16)
 

Typedefs

typedef struct _telephone_event telephone_event_t
 

Functions

int rtp_session_telephone_events_supported (RtpSession *session)
 
int rtp_session_send_telephone_events_supported (RtpSession *session)
 
int rtp_session_recv_telephone_events_supported (RtpSession *session)
 
mblk_trtp_session_create_telephone_event_packet (RtpSession *session, int start)
 
int rtp_session_add_telephone_event (RtpSession *session, mblk_t *packet, uint8_t event, int end, uint8_t volume, uint16_t duration)
 
int rtp_session_read_telephone_event (RtpSession *session, mblk_t *packet, telephone_event_t **tab)
 
int rtp_session_send_dtmf (RtpSession *session, char dtmf, uint32_t userts)
 
int rtp_session_send_dtmf2 (RtpSession *session, char dtmf, uint32_t userts, int duration)
 
void rtp_session_check_telephone_events (RtpSession *session, mblk_t *m0)
 

Detailed Description

Receiving and sending telephone events (RFC2833)

Function Documentation

int rtp_session_add_telephone_event ( RtpSession session,
mblk_t packet,
uint8_t  event,
int  end,
uint8_t  volume,
uint16_t  duration 
)
Parameters
sessiona rtp session.
packeta rtp packet as a mblk_t
eventthe event type as described in rfc2833, ie one of the TEV_* macros.
enda boolean to indicate if the end bit should be set. (end of tone)
volumethe volume of the telephony tone, as described in rfc2833
durationthe duration of the telephony tone, in timestamp unit.

Adds a named telephony event to a rtp packet previously allocated using rtp_session_create_telephone_event_packet().

Returns
0 on success.
mblk_t* rtp_session_create_telephone_event_packet ( RtpSession session,
int  start 
)

Allocates a new rtp packet to be used to add named telephony events. The application can use then rtp_session_add_telephone_event() to add named events to the packet. Finally the packet has to be sent with rtp_session_sendm_with_ts().

Parameters
sessiona rtp session.
startboolean to indicate if the marker bit should be set.
Returns
a message block containing the rtp packet if successfull, NULL if the rtp session cannot support telephony event (because the rtp profile it is bound to does not include a telephony event payload type).
int rtp_session_read_telephone_event ( RtpSession session,
mblk_t packet,
telephone_event_t **  tab 
)

Reads telephony events from a rtp packet. *tab points to the beginning of the event buffer.

Parameters
sessiona rtp session from which telephony events are received.
packeta rtp packet as a mblk_t.
tabthe address of a pointer.
Returns
the number of events in the packet if successfull, 0 if the packet did not contain telephony events.
int rtp_session_recv_telephone_events_supported ( RtpSession session)

Tells whether telephone event payload type is supported for receiving within the context of the rtp session.

Parameters
sessiona rtp session
Returns
the payload type number used for telephony events if found, -1 if not found.
int rtp_session_send_dtmf ( RtpSession session,
char  dtmf,
uint32_t  userts 
)

This functions creates telephony events packets for dtmf and sends them. It uses rtp_session_create_telephone_event_packet() and rtp_session_add_telephone_event() to create them and finally rtp_session_sendm_with_ts() to send them.

Parameters
sessiona rtp session
dtmfa character meaning the dtmf (ex: '1', '#' , '9' ...)
usertsthe timestamp
Returns
0 if successfull, -1 if the session cannot support telephony events or if the dtmf given as argument is not valid.
int rtp_session_send_dtmf2 ( RtpSession session,
char  dtmf,
uint32_t  userts,
int  duration 
)

A variation of rtp_session_send_dtmf() with duration specified.

Parameters
sessiona rtp session
dtmfa character meaning the dtmf (ex: '1', '#' , '9' ...)
usertsthe timestamp
durationduration of the dtmf in timestamp units
Returns
0 if successfull, -1 if the session cannot support telephony events or if the dtmf given as argument is not valid.
int rtp_session_send_telephone_events_supported ( RtpSession session)

Tells whether telephone event payload type is supported for send within the context of the rtp session.

Parameters
sessiona rtp session
Returns
the payload type number used for telephony events if found, -1 if not found.
int rtp_session_telephone_events_supported ( RtpSession session)

Tells whether telephony events payload type is supported within the context of the rtp session.

Parameters
sessiona rtp session
Returns
the payload type number used for telephony events if found, -1 if not found.