diff options
Diffstat (limited to 'main/format.c')
-rw-r--r-- | main/format.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/main/format.c b/main/format.c index 96afd3e18..2d37eb458 100644 --- a/main/format.c +++ b/main/format.c @@ -119,6 +119,51 @@ static int has_interface(const struct ast_format *format) return 1; } +int ast_format_sdp_parse(struct ast_format *format, const char *attributes) +{ + struct interface_ao2_wrapper *wrapper; + int res; + + if (!(wrapper = find_interface(format))) { + return 0; + } + + ao2_rdlock(wrapper); + if (!(wrapper->interface || !wrapper->interface->format_attr_sdp_parse)) { + ao2_unlock(wrapper); + ao2_ref(wrapper, -1); + return 0; + } + + res = wrapper->interface->format_attr_sdp_parse(&format->fattr, attributes); + + ao2_unlock(wrapper); + ao2_ref(wrapper, -1); + + return res; +} + +void ast_format_sdp_generate(const struct ast_format *format, unsigned int payload, struct ast_str **str) +{ + struct interface_ao2_wrapper *wrapper; + + if (!(wrapper = find_interface(format))) { + return; + } + + ao2_rdlock(wrapper); + if (!(wrapper->interface || !wrapper->interface->format_attr_sdp_generate)) { + ao2_unlock(wrapper); + ao2_ref(wrapper, -1); + return; + } + + wrapper->interface->format_attr_sdp_generate(&format->fattr, payload, str); + + ao2_unlock(wrapper); + ao2_ref(wrapper, -1); +} + /*! \internal * \brief set format attributes using an interface */ |