aboutsummaryrefslogtreecommitdiffstats
path: root/main/slinfactory.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/slinfactory.c')
-rw-r--r--main/slinfactory.c19
1 files changed, 8 insertions, 11 deletions
diff --git a/main/slinfactory.c b/main/slinfactory.c
index f7363ab4b..338305b40 100644
--- a/main/slinfactory.c
+++ b/main/slinfactory.c
@@ -39,20 +39,14 @@ void ast_slinfactory_init(struct ast_slinfactory *sf)
ast_format_set(&sf->output_format, AST_FORMAT_SLINEAR, 0);
}
-int ast_slinfactory_init_rate(struct ast_slinfactory *sf, unsigned int sample_rate)
+int ast_slinfactory_init_with_format(struct ast_slinfactory *sf, const struct ast_format *slin_out)
{
memset(sf, 0, sizeof(*sf));
sf->offset = sf->hold;
- switch (sample_rate) {
- case 8000:
- ast_format_set(&sf->output_format, AST_FORMAT_SLINEAR, 0);
- break;
- case 16000:
- ast_format_set(&sf->output_format, AST_FORMAT_SLINEAR16, 0);
- break;
- default:
+ if (!ast_format_is_slinear(slin_out)) {
return -1;
}
+ ast_format_copy(&sf->output_format, slin_out);
return 0;
}
@@ -93,8 +87,11 @@ int ast_slinfactory_feed(struct ast_slinfactory *sf, struct ast_frame *f)
if (!sf->trans) {
if (!(sf->trans = ast_translator_build_path(&sf->output_format, &f->subclass.format))) {
- ast_log(LOG_WARNING, "Cannot build a path from %s to %s\n", ast_getformatname(&f->subclass.format),
- ast_getformatname(&sf->output_format));
+ ast_log(LOG_WARNING, "Cannot build a path from %s (%d)to %s (%d)\n",
+ ast_getformatname(&f->subclass.format),
+ f->subclass.format.id,
+ ast_getformatname(&sf->output_format),
+ sf->output_format.id);
return 0;
}
ast_format_copy(&sf->format, &f->subclass.format);