|
|
@ -1257,15 +1257,19 @@ int ast_frame_adjust_volume(struct ast_frame *f, int adjustment)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
int count;
|
|
|
|
int count;
|
|
|
|
short *fdata = f->data;
|
|
|
|
short *fdata = f->data;
|
|
|
|
|
|
|
|
short adjust_value = abs(adjustment);
|
|
|
|
|
|
|
|
|
|
|
|
if ((f->frametype != AST_FRAME_VOICE) || (f->subclass != AST_FORMAT_SLINEAR))
|
|
|
|
if ((f->frametype != AST_FRAME_VOICE) || (f->subclass != AST_FORMAT_SLINEAR))
|
|
|
|
return -1;
|
|
|
|
return -1;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!adjustment)
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
|
|
for (count = 0; count < f->samples; count++) {
|
|
|
|
for (count = 0; count < f->samples; count++) {
|
|
|
|
if (adjustment > 0) {
|
|
|
|
if (adjustment > 0) {
|
|
|
|
ast_slinear_saturated_multiply(&fdata[count], abs(adjustment));
|
|
|
|
ast_slinear_saturated_multiply(&fdata[count], &adjust_value);
|
|
|
|
} else if (adjustment < 0) {
|
|
|
|
} else if (adjustment < 0) {
|
|
|
|
ast_slinear_saturated_divide(&fdata[count], abs(adjustment));
|
|
|
|
ast_slinear_saturated_divide(&fdata[count], &adjust_value);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -1289,7 +1293,7 @@ int ast_frame_slinear_sum(struct ast_frame *f1, struct ast_frame *f2)
|
|
|
|
for (count = 0, data1 = f1->data, data2 = f2->data;
|
|
|
|
for (count = 0, data1 = f1->data, data2 = f2->data;
|
|
|
|
count < f1->samples;
|
|
|
|
count < f1->samples;
|
|
|
|
count++, data1++, data2++)
|
|
|
|
count++, data1++, data2++)
|
|
|
|
ast_slinear_saturated_add(data1, *data2);
|
|
|
|
ast_slinear_saturated_add(data1, data2);
|
|
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|