aboutsummaryrefslogtreecommitdiffstats
path: root/main/slinfactory.c
diff options
context:
space:
mode:
authorkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2009-03-18 01:51:21 +0000
committerkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2009-03-18 01:51:21 +0000
commitd3323c9c37e93007eae9df8b25a174fc9cbcbbfa (patch)
tree44c03bd656930ad4b36b921854685fd0ab516452 /main/slinfactory.c
parente9def2b3fb87a25a2fdbed138f1a5331ff1b08d9 (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.c30
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;
}