|
|
|
|
@ -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,
|
|
|
|
|
};
|
|
|
|
|
|