From: Matt Jordan Date: Sun, 9 Aug 2015 23:42:00 +0000 (-0500) Subject: res/res_format_attr_silk: Expose format attributes to other modules X-Git-Tag: 14.0.0-beta1~751 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fchanges%2F60%2F1060%2F2;p=thirdparty%2Fasterisk.git res/res_format_attr_silk: Expose format attributes to other modules This patch adds the .get callback to the format attribute module, such that the Asterisk core or other third party modules can query for the negotiated format attributes. Change-Id: Ia24f55cf9b661d651ce89b4f4b023d921380f19c --- diff --git a/res/res_format_attr_silk.c b/res/res_format_attr_silk.c index 3467f5ae48..f3f43821c8 100644 --- a/res/res_format_attr_silk.c +++ b/res/res_format_attr_silk.c @@ -200,12 +200,36 @@ static struct ast_format *silk_set(const struct ast_format *format, const char * return cloned; } +static const void *silk_get(const struct ast_format *format, const char *name) +{ + struct silk_attr *attr = ast_format_get_attribute_data(format); + unsigned int *val; + + if (!strcasecmp(name, "sample_rate")) { + val = &attr->samplerate; + } else if (!strcasecmp(name, "max_bitrate")) { + val = &attr->maxbitrate; + } else if (!strcasecmp(name, "dtx")) { + val = &attr->dtx; + } else if (!strcasecmp(name, "fec")) { + val = &attr->fec; + } else if (!strcasecmp(name, "packetloss_percentage")) { + val = &attr->packetloss_percentage; + } else { + ast_log(LOG_WARNING, "unknown attribute type %s\n", name); + return NULL; + } + + return val; +} + static struct ast_format_interface silk_interface = { .format_destroy = silk_destroy, .format_clone = silk_clone, .format_cmp = silk_cmp, .format_get_joint = silk_getjoint, .format_attribute_set = silk_set, + .format_attribute_get = silk_get, .format_parse_sdp_fmtp = silk_parse_sdp_fmtp, .format_generate_sdp_fmtp = silk_generate_sdp_fmtp, };