|
5 | 5 | // Author: Bartosz Kokoszko <bartoszx.kokoszko@intel.com> |
6 | 6 | // Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com> |
7 | 7 |
|
| 8 | +#include <sof/audio/format.h> |
8 | 9 | #include <errno.h> |
9 | 10 | #include <stddef.h> |
10 | 11 | #include <stdint.h> |
@@ -274,6 +275,15 @@ void downmix32bit_7_1(struct up_down_mixer_data *cd, const uint8_t * const in_da |
274 | 275 | void downmix16bit_stereo(struct up_down_mixer_data *cd, const uint8_t * const in_data, |
275 | 276 | const uint32_t in_size, uint8_t * const out_data) |
276 | 277 | { |
| 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 | + } |
277 | 287 | } |
278 | 288 |
|
279 | 289 | 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 |
325 | 335 | void downmix32bit_stereo(struct up_down_mixer_data *cd, const uint8_t * const in_data, |
326 | 336 | const uint32_t in_size, uint8_t * const out_data) |
327 | 337 | { |
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 | + } |
329 | 347 | } |
330 | 348 |
|
331 | 349 | void downmix32bit_3_1_mono(struct up_down_mixer_data *cd, const uint8_t * const in_data, |
|
0 commit comments