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

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

#include <ortp/rtpsession.h>

Go to the source code of this file.

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

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

Detailed Description

Receiving and sending telephone events (RFC2833)

Function Documentation

ORTP_PUBLIC 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.

Referenced by rtp_session_send_dtmf2().

ORTP_PUBLIC 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).

References _PayloadType::clock_rate, and rtp_session_get_send_payload_type().

Referenced by rtp_session_send_dtmf2().

ORTP_PUBLIC int rtp_session_read_telephone_event ( RtpSession session,
mblk_t packet,
telephone_event_t **  tab 
)

Reads telephony events from a rtp packet. * 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.
ORTP_PUBLIC 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.

Referenced by rtp_session_set_recv_profile().

ORTP_PUBLIC 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.

References rtp_session_send_dtmf2().

ORTP_PUBLIC 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.

References rtp_session_add_telephone_event(), rtp_session_create_telephone_event_packet(), and rtp_session_sendm_with_ts().

Referenced by rtp_session_send_dtmf().

ORTP_PUBLIC 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.

Referenced by rtp_session_set_send_profile().

ORTP_PUBLIC 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.

Referenced by rtp_session_set_profile().