diff options
Diffstat (limited to 'lib/rbcodec/dsp/dsp_sample_input.c')
-rw-r--r-- | lib/rbcodec/dsp/dsp_sample_input.c | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/lib/rbcodec/dsp/dsp_sample_input.c b/lib/rbcodec/dsp/dsp_sample_input.c index 97b4ec27ad..df0b01f8c6 100644 --- a/lib/rbcodec/dsp/dsp_sample_input.c +++ b/lib/rbcodec/dsp/dsp_sample_input.c | |||
@@ -51,6 +51,10 @@ | |||
51 | extern void dsp_sample_output_init(struct sample_io_data *this); | 51 | extern void dsp_sample_output_init(struct sample_io_data *this); |
52 | extern void dsp_sample_output_flush(struct sample_io_data *this); | 52 | extern void dsp_sample_output_flush(struct sample_io_data *this); |
53 | 53 | ||
54 | #define SAMPLE_BUF_COUNT 128 /* Per channel, per DSP */ | ||
55 | /* CODEC_IDX_AUDIO = left and right, CODEC_IDX_VOICE = mono */ | ||
56 | static int32_t sample_bufs[3][SAMPLE_BUF_COUNT] IBSS_ATTR; | ||
57 | |||
54 | /* convert count 16-bit mono to 32-bit mono */ | 58 | /* convert count 16-bit mono to 32-bit mono */ |
55 | static void sample_input_mono16(struct sample_io_data *this, | 59 | static void sample_input_mono16(struct sample_io_data *this, |
56 | struct dsp_buffer **buf_p) | 60 | struct dsp_buffer **buf_p) |
@@ -269,8 +273,31 @@ static void dsp_sample_input_format_change(struct sample_io_data *this, | |||
269 | format_change_ack(&src->format); | 273 | format_change_ack(&src->format); |
270 | } | 274 | } |
271 | 275 | ||
272 | static void dsp_sample_input_init(struct sample_io_data *this) | 276 | static void dsp_sample_input_init(struct sample_io_data *this, |
277 | enum dsp_ids dsp_id) | ||
273 | { | 278 | { |
279 | int32_t *lbuf, *rbuf; | ||
280 | |||
281 | switch (dsp_id) | ||
282 | { | ||
283 | case CODEC_IDX_AUDIO: | ||
284 | lbuf = sample_bufs[0]; | ||
285 | rbuf = sample_bufs[1]; | ||
286 | break; | ||
287 | |||
288 | case CODEC_IDX_VOICE: | ||
289 | lbuf = rbuf = sample_bufs[2]; /* Always mono */ | ||
290 | break; | ||
291 | |||
292 | default: | ||
293 | /* orly */ | ||
294 | DEBUGF("DSP Input- unknown dsp %d\n", (int)dsp_id); | ||
295 | return; | ||
296 | } | ||
297 | |||
298 | this->sample_buf_arr[0] = lbuf; | ||
299 | this->sample_buf_arr[1] = rbuf; | ||
300 | |||
274 | this->input_samples[0] = sample_input_ni_stereo32; | 301 | this->input_samples[0] = sample_input_ni_stereo32; |
275 | this->input_samples[1] = dsp_sample_input_format_change; | 302 | this->input_samples[1] = dsp_sample_input_format_change; |
276 | } | 303 | } |
@@ -288,7 +315,7 @@ void dsp_sample_io_configure(struct sample_io_data *this, | |||
288 | switch (setting) | 315 | switch (setting) |
289 | { | 316 | { |
290 | case DSP_INIT: | 317 | case DSP_INIT: |
291 | dsp_sample_input_init(this); | 318 | dsp_sample_input_init(this, (enum dsp_ids)value); |
292 | dsp_sample_output_init(this); | 319 | dsp_sample_output_init(this); |
293 | break; | 320 | break; |
294 | 321 | ||