mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-05 20:20:07 +00:00
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
This commit is contained in:
22
frame.c
22
frame.c
@@ -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
|
||||
|
Reference in New Issue
Block a user