diff options
Diffstat (limited to 'include/asterisk')
-rw-r--r-- | include/asterisk/codec.h | 11 | ||||
-rw-r--r-- | include/asterisk/sdp.h | 99 | ||||
-rw-r--r-- | include/asterisk/sdp_options.h | 51 | ||||
-rw-r--r-- | include/asterisk/sdp_state.h | 2 |
4 files changed, 141 insertions, 22 deletions
diff --git a/include/asterisk/codec.h b/include/asterisk/codec.h index 2ae955181..2f5756cd1 100644 --- a/include/asterisk/codec.h +++ b/include/asterisk/codec.h @@ -166,6 +166,17 @@ int ast_codec_get_max(void); const char *ast_codec_media_type2str(enum ast_media_type type); /*! + * \brief Conversion function to take a media string and convert it to a media type + * + * \param media_type_str The media type string + * + * \retval The ast_media_type that corresponds to the string + * + * \since 15.0.0 + */ +enum ast_media_type ast_media_type_from_str(const char *media_type_str); + +/*! * \brief Get the number of samples contained within a frame * * \param frame The frame itself diff --git a/include/asterisk/sdp.h b/include/asterisk/sdp.h index 3649b4037..d5bf9147b 100644 --- a/include/asterisk/sdp.h +++ b/include/asterisk/sdp.h @@ -147,6 +147,22 @@ struct ast_sdp { }; /*! + * \brief A structure representing an SDP rtpmap attribute + */ +struct ast_sdp_rtpmap { + /*! The RTP payload number for the rtpmap */ + int payload; + /*! The Name of the codec */ + char *encoding_name; + /*! The clock rate of the codec */ + int clock_rate; + /*! Optional encoding parameters */ + char *encoding_parameters; + /*! Area where strings are stored */ + char buf[0]; +}; + +/*! * \brief Free an SDP Attribute * * \param a_line The attribute to free @@ -545,15 +561,88 @@ struct ast_sdp *ast_sdp_alloc(struct ast_sdp_o_line *o_line, struct ast_sdp_t_line *t_line); /*! - * \brief Create an SDP from an existing SDP State local topology + * \brief Find an attribute on the top-level SDP + * + * \note This will not search within streams for the given attribute. + * + * \param sdp The SDP in which to search + * \param attr_name The name of the attribute to search for + * \param payload Optional payload number to search for. If irrelevant, set to -1 + * + * \retval NULL Could not find the given attribute + * \retval Non-NULL The attribute to find + * + * \since 15.0.0 + */ +struct ast_sdp_a_line *ast_sdp_find_attribute(const struct ast_sdp *sdp, + const char *attr_name, int payload); + +/*! + * \brief Find an attribute on an SDP stream (m-line) * - * \param sdp_state SDP State + * \param sdp The SDP in which to search + * \param attr_name The name of the attribute to search for + * \param payload Optional payload number to search for. If irrelevant, set to -1 * + * \retval NULL Could not find the given attribute + * \retval Non-NULL The attribute to find + * + * \since 15.0.0 + */ +struct ast_sdp_a_line *ast_sdp_m_find_attribute(const struct ast_sdp_m_line *m_line, + const char *attr_name, int payload); + +/*! + * \brief Convert an SDP a_line into an rtpmap + * + * The returned value is heap-allocated and must be freed with + * ast_sdp_rtpmap_free() + * + * \param a_line The SDP a_line to convert + * + * \retval NULL Fail * \retval non-NULL Success - * \retval NULL Failure * - * \since 15 + * \since 15.0.0 */ -struct ast_sdp *ast_sdp_create_from_state(const struct ast_sdp_state *sdp_state); +struct ast_sdp_rtpmap *ast_sdp_a_get_rtpmap(const struct ast_sdp_a_line *a_line); + +/*! + * \brief Allocate a new SDP rtpmap + * + * \param payload The RTP payload number + * \param encoding_name The human-readable name for the codec + * \param clock_rate The rate of the codec, in cycles per second + * \param encoding_parameters Optional codec-specific parameters (such as number of channels) + * + * \retval NULL Fail + * \retval non-NULL Success + * + * \since 15.0.0 + */ +struct ast_sdp_rtpmap *ast_sdp_rtpmap_alloc(int payload, const char *encoding_name, + int clock_rate, const char *encoding_parameters); + +/*! + * \brief Free an SDP rtpmap + * + * \since 15.0.0 + */ +void ast_sdp_rtpmap_free(struct ast_sdp_rtpmap *rtpmap); + +/*! + * \brief Turn an SDP into a stream topology + * + * This traverses the m-lines of the SDP and creates a stream topology, with + * each m-line corresponding to a stream in the created topology. + * + * \param sdp The SDP to convert + * + * \retval NULL An error occurred when converting + * \retval non-NULL The generated stream topology + * + * \since 15.0.0 + */ +struct ast_stream_topology *ast_get_topology_from_sdp(const struct ast_sdp *sdp); #endif /* _SDP_PRIV_H */ diff --git a/include/asterisk/sdp_options.h b/include/asterisk/sdp_options.h index 0186eea57..4b411c771 100644 --- a/include/asterisk/sdp_options.h +++ b/include/asterisk/sdp_options.h @@ -106,7 +106,7 @@ void ast_sdp_options_set_media_address(struct ast_sdp_options *options, * * \returns media_address */ -const char *ast_sdp_options_get_media_address(struct ast_sdp_options *options); +const char *ast_sdp_options_get_media_address(const struct ast_sdp_options *options); /*! * \since 15.0.0 @@ -126,7 +126,7 @@ void ast_sdp_options_set_sdpowner(struct ast_sdp_options *options, * * \returns sdpowner */ -const char *ast_sdp_options_get_sdpowner(struct ast_sdp_options *options); +const char *ast_sdp_options_get_sdpowner(const struct ast_sdp_options *options); /*! * \since 15.0.0 @@ -146,7 +146,7 @@ void ast_sdp_options_set_sdpsession(struct ast_sdp_options *options, * * \returns sdpsession */ -const char *ast_sdp_options_get_sdpsession(struct ast_sdp_options *options); +const char *ast_sdp_options_get_sdpsession(const struct ast_sdp_options *options); /*! * \since 15.0.0 @@ -166,7 +166,7 @@ void ast_sdp_options_set_rtp_engine(struct ast_sdp_options *options, * * \returns rtp_engine */ -const char *ast_sdp_options_get_rtp_engine(struct ast_sdp_options *options); +const char *ast_sdp_options_get_rtp_engine(const struct ast_sdp_options *options); /*! * \since 15.0.0 @@ -186,7 +186,7 @@ void ast_sdp_options_set_bind_rtp_to_media_address(struct ast_sdp_options *optio * * \returns bind_rtp_to_media_address */ -unsigned int ast_sdp_options_get_bind_rtp_to_media_address(struct ast_sdp_options *options); +unsigned int ast_sdp_options_get_bind_rtp_to_media_address(const struct ast_sdp_options *options); /*! * \since 15.0.0 @@ -206,7 +206,7 @@ void ast_sdp_options_set_rtp_symmetric(struct ast_sdp_options *options, * * \returns rtp_symmetric */ -unsigned int ast_sdp_options_get_rtp_symmetric(struct ast_sdp_options *options); +unsigned int ast_sdp_options_get_rtp_symmetric(const struct ast_sdp_options *options); /*! * \since 15.0.0 @@ -226,7 +226,7 @@ void ast_sdp_options_set_telephone_event(struct ast_sdp_options *options, * * \returns telephone_event */ -unsigned int ast_sdp_options_get_telephone_event(struct ast_sdp_options *options); +unsigned int ast_sdp_options_get_telephone_event(const struct ast_sdp_options *options); /*! * \since 15.0.0 @@ -246,7 +246,7 @@ void ast_sdp_options_set_rtp_ipv6(struct ast_sdp_options *options, * * \returns rtp_ipv6 */ -unsigned int ast_sdp_options_get_rtp_ipv6(struct ast_sdp_options *options); +unsigned int ast_sdp_options_get_rtp_ipv6(const struct ast_sdp_options *options); /*! * \since 15.0.0 @@ -266,7 +266,7 @@ void ast_sdp_options_set_g726_non_standard(struct ast_sdp_options *options, * * \returns g726_non_standard */ -unsigned int ast_sdp_options_get_g726_non_standard(struct ast_sdp_options *options); +unsigned int ast_sdp_options_get_g726_non_standard(const struct ast_sdp_options *options); /*! * \since 15.0.0 @@ -286,7 +286,7 @@ void ast_sdp_options_set_tos_audio(struct ast_sdp_options *options, * * \returns tos_audio */ -unsigned int ast_sdp_options_get_tos_audio(struct ast_sdp_options *options); +unsigned int ast_sdp_options_get_tos_audio(const struct ast_sdp_options *options); /*! * \since 15.0.0 @@ -306,7 +306,7 @@ void ast_sdp_options_set_cos_audio(struct ast_sdp_options *options, * * \returns cos_audio */ -unsigned int ast_sdp_options_get_cos_audio(struct ast_sdp_options *options); +unsigned int ast_sdp_options_get_cos_audio(const struct ast_sdp_options *options); /*! * \since 15.0.0 @@ -326,7 +326,7 @@ void ast_sdp_options_set_tos_video(struct ast_sdp_options *options, * * \returns tos_video */ -unsigned int ast_sdp_options_get_tos_video(struct ast_sdp_options *options); +unsigned int ast_sdp_options_get_tos_video(const struct ast_sdp_options *options); /*! * \since 15.0.0 @@ -346,7 +346,7 @@ void ast_sdp_options_set_cos_video(struct ast_sdp_options *options, * * \returns cos_video */ -unsigned int ast_sdp_options_get_cos_video(struct ast_sdp_options *options); +unsigned int ast_sdp_options_get_cos_video(const struct ast_sdp_options *options); /*! * \since 15.0.0 @@ -366,7 +366,7 @@ void ast_sdp_options_set_ice(struct ast_sdp_options *options, * * \returns ice */ -enum ast_sdp_options_ice ast_sdp_options_get_ice(struct ast_sdp_options *options); +enum ast_sdp_options_ice ast_sdp_options_get_ice(const struct ast_sdp_options *options); /*! * \since 15.0.0 @@ -386,7 +386,7 @@ void ast_sdp_options_set_impl(struct ast_sdp_options *options, * * \returns impl */ -enum ast_sdp_options_impl ast_sdp_options_get_impl(struct ast_sdp_options *options); +enum ast_sdp_options_impl ast_sdp_options_get_impl(const struct ast_sdp_options *options); /*! * \since 15.0.0 @@ -406,6 +406,25 @@ void ast_sdp_options_set_encryption(struct ast_sdp_options *options, * * \returns encryption */ -enum ast_sdp_options_encryption ast_sdp_options_get_encryption(struct ast_sdp_options *options); +enum ast_sdp_options_encryption ast_sdp_options_get_encryption(const struct ast_sdp_options *options); + +/*! + * \since 15.0.0 + * \brief Get SDP Options RTCP MUX + * + * \param options SDP Options + * + * \returns Boolean indicating if RTCP MUX is enabled. + */ +unsigned int ast_sdp_options_get_rtcp_mux(const struct ast_sdp_options *options); + +/*! + * \since 15.0.0 + * \brief Set SDP Options RTCP MUX + * + * \param options SDP Options + * \param value Boolean that indicates if RTCP MUX should be enabled. + */ +void ast_sdp_options_set_rtcp_mux(struct ast_sdp_options *options, unsigned int value); #endif /* _ASTERISK_SDP_OPTIONS_H */ diff --git a/include/asterisk/sdp_state.h b/include/asterisk/sdp_state.h index a186d7eef..7f25c2532 100644 --- a/include/asterisk/sdp_state.h +++ b/include/asterisk/sdp_state.h @@ -138,7 +138,7 @@ const void *ast_sdp_state_get_local_sdp_impl(struct ast_sdp_state *sdp_state); * * \since 15 */ -void ast_sdp_state_set_remote_sdp(struct ast_sdp_state *sdp_state, struct ast_sdp *sdp); +void ast_sdp_state_set_remote_sdp(struct ast_sdp_state *sdp_state, const struct ast_sdp *sdp); /*! * \brief Set the remote SDP from an Implementation |