Skip to content

Commit e027e0b

Browse files
singalsukv2019i
authored andcommitted
Audio: Do not set sink align constraints in modules and use default
This patch mofidies modules ARIA, EQFIR, EQIIR, IGO NR, Mixer, Selector, SRC, and TDFB by removing sink align constraints set. Also the frame byte align of 1 is changed to SOF_FRAME_BYTE_ALIGN. When the sink align is not set the default values from audio_stream_init() is used, or the downstream modules sets the align for the source. Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
1 parent 1109846 commit e027e0b

12 files changed

Lines changed: 29 additions & 34 deletions

File tree

src/audio/aria/aria.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -168,11 +168,6 @@ static void aria_set_stream_params(struct comp_buffer *buffer,
168168
const struct ipc4_audio_format *audio_fmt = &mod->priv.cfg.base_cfg.audio_fmt;
169169

170170
ipc4_update_buffer_format(buffer, audio_fmt);
171-
#if SOF_USE_HIFI(3, ARIA) || SOF_USE_HIFI(4, ARIA)
172-
audio_stream_set_align(8, 1, &buffer->stream);
173-
#elif SOF_USE_HIFI(5, ARIA)
174-
audio_stream_set_align(16, 1, &buffer->stream);
175-
#endif
176171
}
177172

178173
static int aria_prepare(struct processing_module *mod,
@@ -195,6 +190,7 @@ static int aria_prepare(struct processing_module *mod,
195190

196191
aria_set_stream_params(source, mod);
197192
aria_set_stream_params(sink, mod);
193+
audio_stream_set_align(SOF_FRAME_BYTE_ALIGN, SOF_FRAME_COUNT_ALIGN, &source->stream);
198194

199195
if (audio_stream_get_valid_fmt(&source->stream) != SOF_IPC_FRAME_S24_4LE ||
200196
audio_stream_get_valid_fmt(&sink->stream) != SOF_IPC_FRAME_S24_4LE) {

src/audio/eq_fir/eq_fir.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -366,14 +366,12 @@ static int eq_fir_process(struct processing_module *mod,
366366
return 0;
367367
}
368368

369-
static void eq_fir_set_alignment(struct audio_stream *source,
370-
struct audio_stream *sink)
369+
static void eq_fir_set_alignment(struct audio_stream *source)
371370
{
372-
const uint32_t byte_align = 1;
371+
const uint32_t byte_align = SOF_FRAME_BYTE_ALIGN;
373372
const uint32_t frame_align_req = 2; /* Process multiples of 2 frames */
374373

375374
audio_stream_set_align(byte_align, frame_align_req, source);
376-
audio_stream_set_align(byte_align, frame_align_req, sink);
377375
}
378376

379377
static int eq_fir_prepare(struct processing_module *mod,
@@ -404,7 +402,7 @@ static int eq_fir_prepare(struct processing_module *mod,
404402
return ret;
405403
}
406404

407-
eq_fir_set_alignment(&sourceb->stream, &sinkb->stream);
405+
eq_fir_set_alignment(&sourceb->stream);
408406
channels = audio_stream_get_channels(&sinkb->stream);
409407
frame_fmt = audio_stream_get_frm_fmt(&sourceb->stream);
410408

src/audio/eq_iir/eq_iir.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ static int eq_iir_process(struct processing_module *mod,
142142
static void eq_iir_set_alignment(struct audio_stream *source,
143143
struct audio_stream *sink)
144144
{
145-
const uint32_t byte_align = 8;
145+
const uint32_t byte_align = SOF_FRAME_BYTE_ALIGN;
146146
const uint32_t frame_align_req = 2;
147147

148148
audio_stream_set_align(byte_align, frame_align_req, source);

src/audio/igo_nr/igo_nr.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -832,8 +832,7 @@ static int32_t igo_nr_prepare(struct processing_module *mod,
832832
if (ret)
833833
return ret;
834834

835-
source_set_alignment_constants(source, 1, IGO_FRAME_SIZE);
836-
sink_set_alignment_constants(sink, 1, IGO_FRAME_SIZE);
835+
source_set_alignment_constants(source, SOF_FRAME_BYTE_ALIGN, IGO_FRAME_SIZE);
837836

838837
igo_nr_set_igo_params(mod);
839838

src/audio/mixer/mixer.c

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -187,18 +187,18 @@ static int mixer_reset(struct processing_module *mod)
187187
/* init and calculate the aligned setting for available frames and free frames retrieve*/
188188
static inline void mixer_set_frame_alignment(struct audio_stream *source)
189189
{
190-
#if XCHAL_HAVE_HIFI3 || XCHAL_HAVE_HIFI4
191190

192191
/* Xtensa intrinsics ask for 8-byte aligned. 5.1 format SSE audio
193-
* requires 16-byte aligned.
192+
* requires 16-byte aligned. Note: The SOF_FRAME_BYTE_ALIGN is the
193+
* same value 16 with HiFi5.
194194
*/
195-
const uint32_t byte_align = audio_stream_get_channels(source) == 6 ? 16 : 8;
195+
const uint32_t byte_align = audio_stream_get_channels(source) == 6 ?
196+
MIXER_HIFI_FRAME_BYTE_ALIGN_6CH : SOF_FRAME_BYTE_ALIGN;
196197

197-
/*There is no limit for frame number, so set it as 1*/
198-
const uint32_t frame_align_req = 1;
198+
/* There is no limit for frame number, so set it as default (1). */
199+
const uint32_t frame_align_req = SOF_FRAME_COUNT_ALIGN;
199200

200201
audio_stream_set_align(byte_align, frame_align_req, source);
201-
#endif
202202
}
203203

204204
static int mixer_prepare(struct processing_module *mod,
@@ -216,7 +216,10 @@ static int mixer_prepare(struct processing_module *mod,
216216
}
217217

218218
md->mix_func = mixer_get_processing_function(dev, sink);
219-
mixer_set_frame_alignment(&sink->stream);
219+
220+
/* No need to set sink align constraints, set constraints for each
221+
* source next. The sink align will follow to common source alignment.
222+
*/
220223

221224
/* check each mixer source state */
222225
struct comp_buffer *source;

src/audio/mixer/mixer.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ void sys_comp_module_mixer_interface_init(void);
3232

3333
#define MIXER_MAX_SOURCES 2
3434

35+
/* Xtensa HiFi optimized version needs this for 5.1ch */
36+
#define MIXER_HIFI_FRAME_BYTE_ALIGN_6CH 16
37+
3538
/* mixer component private data */
3639
struct mixer_data {
3740
void (*mix_func)(struct comp_dev *dev, struct audio_stream *sink,

src/audio/selector/selector.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1007,8 +1007,7 @@ static int selector_prepare(struct processing_module *mod,
10071007
sourceb = comp_dev_get_first_data_producer(dev);
10081008
sinkb = comp_dev_get_first_data_consumer(dev);
10091009

1010-
audio_stream_set_align(4, 1, &sourceb->stream);
1011-
audio_stream_set_align(4, 1, &sinkb->stream);
1010+
audio_stream_set_align(SOF_FRAME_BYTE_ALIGN, SOF_FRAME_COUNT_ALIGN, &sourceb->stream);
10121011

10131012
/* get source data format and period bytes */
10141013
cd->source_format = audio_stream_get_frm_fmt(&sourceb->stream);

src/audio/src/src_common.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -384,13 +384,12 @@ int src_copy_sxx(struct comp_data *cd, struct sof_source *source,
384384
return -ENOTSUP;
385385
}
386386

387-
void src_set_alignment(struct sof_source *source, struct sof_sink *sink)
387+
void src_set_alignment(struct sof_source *source)
388388
{
389-
const uint32_t byte_align = 1;
390-
const uint32_t frame_align_req = 1;
389+
const uint32_t byte_align = SOF_FRAME_BYTE_ALIGN;
390+
const uint32_t frame_align_req = SOF_FRAME_COUNT_ALIGN;
391391

392392
source_set_alignment_constants(source, byte_align, frame_align_req);
393-
sink_set_alignment_constants(sink, byte_align, frame_align_req);
394393
}
395394

396395
static int src_verify_params(struct processing_module *mod)

src/audio/src/src_common.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ int32_t src_input_rates(void);
143143

144144
int32_t src_output_rates(void);
145145

146-
void src_set_alignment(struct sof_source *source, struct sof_sink *sink);
146+
void src_set_alignment(struct sof_source *source);
147147

148148
struct comp_data {
149149
#if CONFIG_IPC_MAJOR_4

src/audio/src/src_ipc3.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ int src_prepare_general(struct processing_module *mod,
105105
enum sof_ipc_frame sink_format;
106106

107107
/* set align requirements */
108-
src_set_alignment(source, sink);
108+
src_set_alignment(source);
109109

110110
/* get source/sink data format */
111111
source_format = source_get_frm_fmt(source);

0 commit comments

Comments
 (0)