mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-23 14:44:28 +00:00
sdp: Add support for T.38
This change adds a T.38 format which can be used in a stream topology to specify that a UDPTL stream needs to be created. The SDP API has been changed to understand T.38 and create the UDPTL session, add the attributes, and parse the attributes. This change does not change the boundary of the T.38 state machine. It is still up to the channel driver to implement and act on it (such as queueing control frames or reacting to them). ASTERISK-26949 Change-Id: If28956762ccb8ead562ac6c03d162d3d6014f2c7
This commit is contained in:
committed by
Richard Mudgett
parent
32b3e36c68
commit
19a79ae12c
@@ -223,6 +223,11 @@ extern struct ast_format *ast_format_t140;
|
||||
*/
|
||||
extern struct ast_format *ast_format_t140_red;
|
||||
|
||||
/*!
|
||||
* \brief Built-in cached T.38 format.
|
||||
*/
|
||||
extern struct ast_format *ast_format_t38;
|
||||
|
||||
/*!
|
||||
* \brief Built-in "null" format.
|
||||
*/
|
||||
|
@@ -19,6 +19,8 @@
|
||||
#ifndef _ASTERISK_SDP_OPTIONS_H
|
||||
#define _ASTERISK_SDP_OPTIONS_H
|
||||
|
||||
#include "asterisk/udptl.h"
|
||||
|
||||
struct ast_sdp_options;
|
||||
|
||||
/*!
|
||||
@@ -427,4 +429,84 @@ unsigned int ast_sdp_options_get_rtcp_mux(const struct ast_sdp_options *options)
|
||||
*/
|
||||
void ast_sdp_options_set_rtcp_mux(struct ast_sdp_options *options, unsigned int value);
|
||||
|
||||
/*!
|
||||
* \since 15.0.0
|
||||
* \brief Set SDP Options udptl_symmetric
|
||||
*
|
||||
* \param options SDP Options
|
||||
* \param udptl_symmetric
|
||||
*/
|
||||
void ast_sdp_options_set_udptl_symmetric(struct ast_sdp_options *options,
|
||||
unsigned int udptl_symmetric);
|
||||
|
||||
/*!
|
||||
* \since 15.0.0
|
||||
* \brief Get SDP Options udptl_symmetric
|
||||
*
|
||||
* \param options SDP Options
|
||||
*
|
||||
* \returns udptl_symmetric
|
||||
*/
|
||||
unsigned int ast_sdp_options_get_udptl_symmetric(const struct ast_sdp_options *options);
|
||||
|
||||
/*!
|
||||
* \since 15.0.0
|
||||
* \brief Set SDP Options udptl_error_correction
|
||||
*
|
||||
* \param options SDP Options
|
||||
* \param error_correction
|
||||
*/
|
||||
void ast_sdp_options_set_udptl_error_correction(struct ast_sdp_options *options,
|
||||
enum ast_t38_ec_modes error_correction);
|
||||
|
||||
/*!
|
||||
* \since 15.0.0
|
||||
* \brief Get SDP Options udptl_error_correction
|
||||
*
|
||||
* \param options SDP Options
|
||||
*
|
||||
* \returns udptl_error_correction
|
||||
*/
|
||||
enum ast_t38_ec_modes ast_sdp_options_get_udptl_error_correction(const struct ast_sdp_options *options);
|
||||
|
||||
/*!
|
||||
* \since 15.0.0
|
||||
* \brief Set SDP Options udptl_far_max_datagram
|
||||
*
|
||||
* \param options SDP Options
|
||||
* \param far_max_datagram
|
||||
*/
|
||||
void ast_sdp_options_set_udptl_far_max_datagram(struct ast_sdp_options *options,
|
||||
unsigned int far_max_datagram);
|
||||
|
||||
/*!
|
||||
* \since 15.0.0
|
||||
* \brief Get SDP Options udptl_far_max_datagram
|
||||
*
|
||||
* \param options SDP Options
|
||||
*
|
||||
* \returns udptl_far_max_datagram
|
||||
*/
|
||||
unsigned int ast_sdp_options_get_udptl_far_max_datagram(const struct ast_sdp_options *options);
|
||||
|
||||
/*!
|
||||
* \since 15.0.0
|
||||
* \brief Set SDP Options bind_udptl_to_media_address
|
||||
*
|
||||
* \param options SDP Options
|
||||
* \param bind_udptl_to_media_address
|
||||
*/
|
||||
void ast_sdp_options_set_bind_udptl_to_media_address(struct ast_sdp_options *options,
|
||||
unsigned int bind_udptl_to_media_address);
|
||||
|
||||
/*!
|
||||
* \since 15.0.0
|
||||
* \brief Get SDP Options bind_udptl_to_media_address
|
||||
*
|
||||
* \param options SDP Options
|
||||
*
|
||||
* \returns bind_udptl_to_media_address
|
||||
*/
|
||||
unsigned int ast_sdp_options_get_bind_udptl_to_media_address(const struct ast_sdp_options *options);
|
||||
|
||||
#endif /* _ASTERISK_SDP_OPTIONS_H */
|
||||
|
@@ -24,6 +24,8 @@
|
||||
|
||||
struct ast_sdp_state;
|
||||
struct ast_sockaddr;
|
||||
struct ast_udptl;
|
||||
struct ast_control_t38_parameters;
|
||||
|
||||
/*!
|
||||
* \brief Allocate a new SDP state
|
||||
@@ -51,6 +53,14 @@ void ast_sdp_state_free(struct ast_sdp_state *sdp_state);
|
||||
struct ast_rtp_instance *ast_sdp_state_get_rtp_instance(const struct ast_sdp_state *sdp_state,
|
||||
int stream_index);
|
||||
|
||||
/*!
|
||||
* \brief Get the associated UDPTL instance for a particular stream on the SDP state.
|
||||
*
|
||||
* Stream numbers correspond to the streams in the topology of the associated channel
|
||||
*/
|
||||
struct ast_udptl *ast_sdp_state_get_udptl_instance(const struct ast_sdp_state *sdp_state,
|
||||
int stream_index);
|
||||
|
||||
/*!
|
||||
* \brief Get the global connection address on the SDP state.
|
||||
*/
|
||||
@@ -223,6 +233,17 @@ int ast_sdp_state_set_connection_address(struct ast_sdp_state *sdp_state, int st
|
||||
void ast_sdp_state_set_locally_held(struct ast_sdp_state *sdp_state,
|
||||
int stream_index, unsigned int locally_held);
|
||||
|
||||
/*!
|
||||
* \since 15.0.0
|
||||
* \brief Set the UDPTL session parameters
|
||||
*
|
||||
* \param sdp_state
|
||||
* \param stream_index The stream to set the UDPTL session parameters for
|
||||
* \param params
|
||||
*/
|
||||
void ast_sdp_state_set_t38_parameters(struct ast_sdp_state *sdp_state,
|
||||
int stream_index, struct ast_control_t38_parameters *params);
|
||||
|
||||
/*!
|
||||
* \since 15.0.0
|
||||
* \brief Get whether a stream is held or not
|
||||
|
Reference in New Issue
Block a user