summaryrefslogtreecommitdiff
path: root/res/res_format_attr_celt.c
diff options
context:
space:
mode:
Diffstat (limited to 'res/res_format_attr_celt.c')
-rw-r--r--res/res_format_attr_celt.c25
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)