diff options
Diffstat (limited to 'res/res_format_attr_celt.c')
-rw-r--r-- | res/res_format_attr_celt.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/res/res_format_attr_celt.c b/res/res_format_attr_celt.c index bd38b29e2..aea3eb482 100644 --- a/res/res_format_attr_celt.c +++ b/res/res_format_attr_celt.c @@ -45,6 +45,29 @@ struct celt_attr { unsigned int framesize; }; +static int celt_sdp_parse(struct ast_format_attr *format_attr, const char *attributes) +{ + struct celt_attr *attr = (struct celt_attr *) format_attr; + unsigned int val; + + if (sscanf(attributes, "framesize=%30u", &val) == 1) { + attr->framesize = val; + } + + return 0; +} + +static void celt_sdp_generate(const struct ast_format_attr *format_attr, unsigned int payload, struct ast_str **str) +{ + struct celt_attr *attr = (struct celt_attr *) format_attr; + + if (!attr->framesize) { + return; + } + + ast_str_append(str, 0, "a=fmtp:%d framesize=%d\r\n", payload, attr->framesize); +} + static enum ast_format_cmp_res celt_cmp(const struct ast_format_attr *fattr1, const struct ast_format_attr *fattr2) { struct celt_attr *attr1 = (struct celt_attr *) fattr1; @@ -161,6 +184,8 @@ static struct ast_format_attr_interface celt_interface = { .format_attr_set = celt_set, .format_attr_isset = celt_isset, .format_attr_get_val = celt_get_val, + .format_attr_sdp_parse = celt_sdp_parse, + .format_attr_sdp_generate = celt_sdp_generate, }; static int load_module(void) |