add API call to properly sum two frames of SLINEAR data

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@6883 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.2-netsec
Kevin P. Fleming 20 years ago
parent 8dad624c68
commit 97c9900b59

@ -1271,3 +1271,25 @@ int ast_frame_adjust_volume(struct ast_frame *f, int adjustment)
return 0;
}
int ast_frame_slinear_sum(struct ast_frame *f1, struct ast_frame *f2)
{
int count;
short *data1, *data2;
if ((f1->frametype != AST_FRAME_VOICE) || (f1->subclass != AST_FORMAT_SLINEAR))
return -1;
if ((f2->frametype != AST_FRAME_VOICE) || (f2->subclass != AST_FORMAT_SLINEAR))
return -1;
if (f1->samples != f2->samples)
return -1;
for (count = 0, data1 = f1->data, data2 = f2->data;
count < f1->samples;
count++, data1++, data2++)
ast_slinear_saturated_add(data1, *data2);
return 0;
}

@ -427,6 +427,17 @@ static inline int ast_codec_interp_len(int format)
*/
int ast_frame_adjust_volume(struct ast_frame *f, int adjustment);
/*!
\brief Sums two frames of audio samples.
\param f1 The first frame (which will contain the result)
\param f2 The second frame
\return 0 for success, non-zero for an error
The frames must be AST_FRAME_VOICE and must contain AST_FORMAT_SLINEAR samples,
and must contain the same number of samples.
*/
int ast_frame_slinear_sum(struct ast_frame *f1, struct ast_frame *f2);
#if defined(__cplusplus) || defined(c_plusplus)
}
#endif

Loading…
Cancel
Save