summaryrefslogtreecommitdiff
path: root/lib/rbcodec/dsp/dsp_sample_input.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rbcodec/dsp/dsp_sample_input.c')
-rw-r--r--lib/rbcodec/dsp/dsp_sample_input.c31
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 @@
51extern void dsp_sample_output_init(struct sample_io_data *this); 51extern void dsp_sample_output_init(struct sample_io_data *this);
52extern void dsp_sample_output_flush(struct sample_io_data *this); 52extern 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 */
56static 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 */
55static void sample_input_mono16(struct sample_io_data *this, 59static 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
272static void dsp_sample_input_init(struct sample_io_data *this) 276static 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