Skip to content

Commit d0a8207

Browse files
committed
Audio: Up_down_mixer: Convert stubs with arithmetic to generic C
This patch adds more conversions including simple arithmetitic operations. Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
1 parent 5c0d9cb commit d0a8207

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

src/audio/up_down_mixer/up_down_mixer_generic.c

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
// Author: Bartosz Kokoszko <bartoszx.kokoszko@intel.com>
66
// Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
77

8+
#include <sof/audio/format.h>
89
#include <errno.h>
910
#include <stddef.h>
1011
#include <stdint.h>
@@ -274,6 +275,15 @@ void downmix32bit_7_1(struct up_down_mixer_data *cd, const uint8_t * const in_da
274275
void downmix16bit_stereo(struct up_down_mixer_data *cd, const uint8_t * const in_data,
275276
const uint32_t in_size, uint8_t * const out_data)
276277
{
278+
int32_t sum;
279+
const int16_t *in_data16 = (int16_t *)in_data;
280+
int16_t *out_data16 = (int16_t *)out_data;
281+
int idx;
282+
283+
for (idx = 0; idx < (in_size / 4); ++idx) {
284+
sum = (int32_t)in_data16[2 * idx] + in_data16[2 * idx + 1];
285+
out_data16[idx] = sat_int16((sum + 1) >> 1);
286+
}
277287
}
278288

279289
void shiftcopy16bit_mono(struct up_down_mixer_data *cd, const uint8_t * const in_data,
@@ -325,7 +335,15 @@ void downmix16bit_4ch_mono(struct up_down_mixer_data *cd, const uint8_t * const
325335
void downmix32bit_stereo(struct up_down_mixer_data *cd, const uint8_t * const in_data,
326336
const uint32_t in_size, uint8_t * const out_data)
327337
{
328-
sof_panic(0);
338+
int64_t sum;
339+
int32_t *in_data32 = (int32_t *)in_data;
340+
int32_t *out_data32 = (int32_t *)out_data;
341+
int idx;
342+
343+
for (idx = 0; idx < (in_size / 4); idx++) {
344+
sum = (int64_t)in_data32[2 * idx] + in_data32[2 * idx + 1];
345+
out_data32[idx] = sat_int32((sum + 1) >> 1);
346+
}
329347
}
330348

331349
void downmix32bit_3_1_mono(struct up_down_mixer_data *cd, const uint8_t * const in_data,

0 commit comments

Comments
 (0)