diff options
author | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-03-18 01:51:21 +0000 |
---|---|---|
committer | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-03-18 01:51:21 +0000 |
commit | d3323c9c37e93007eae9df8b25a174fc9cbcbbfa (patch) | |
tree | 44c03bd656930ad4b36b921854685fd0ab516452 /main/slinfactory.c | |
parent | e9def2b3fb87a25a2fdbed138f1a5331ff1b08d9 (diff) |
revert commit that included extranous changes
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@182807 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main/slinfactory.c')
-rw-r--r-- | main/slinfactory.c | 30 |
1 files changed, 12 insertions, 18 deletions
diff --git a/main/slinfactory.c b/main/slinfactory.c index b848fb074..212edef92 100644 --- a/main/slinfactory.c +++ b/main/slinfactory.c @@ -57,7 +57,7 @@ void ast_slinfactory_destroy(struct ast_slinfactory *sf) int ast_slinfactory_feed(struct ast_slinfactory *sf, struct ast_frame *f) { struct ast_frame *begin_frame = f, *duped_frame = NULL, *frame_ptr; - unsigned int x = 0; + unsigned int x; /* In some cases, we can be passed a frame which has no data in it, but * which has a positive number of samples defined. Once such situation is @@ -84,33 +84,27 @@ int ast_slinfactory_feed(struct ast_slinfactory *sf, struct ast_frame *f) } } - if (!(begin_frame = ast_translate(sf->trans, f, 0))) { + if (!(begin_frame = ast_translate(sf->trans, f, 0))) return 0; - } - if (!(duped_frame = ast_frisolate(begin_frame))) { - return 0; - } + duped_frame = ast_frdup(begin_frame); - if (duped_frame != begin_frame) { - ast_frfree(begin_frame); - } + ast_frfree(begin_frame); + + if (!duped_frame) + return 0; } else { if (!(duped_frame = ast_frdup(f))) return 0; } - AST_LIST_TRAVERSE(&sf->queue, frame_ptr, frame_list) { + x = 0; + AST_LIST_TRAVERSE(&sf->queue, frame_ptr, frame_list) x++; - } - /* if the frame was translated, the translator may have returned multiple - frames, so process each of them - */ - for (begin_frame = duped_frame; begin_frame; begin_frame = AST_LIST_NEXT(begin_frame, frame_list)) { - AST_LIST_INSERT_TAIL(&sf->queue, begin_frame, frame_list); - sf->size += begin_frame->samples; - } + AST_LIST_INSERT_TAIL(&sf->queue, duped_frame, frame_list); + + sf->size += duped_frame->samples; return x; } |