diff --git a/src/audio/audio_stream.c b/src/audio/audio_stream.c index 2a1a7a05e..5d23daaf7 100644 --- a/src/audio/audio_stream.c +++ b/src/audio/audio_stream.c @@ -67,6 +67,32 @@ static int audio_stream_get_data(struct sof_source *source, size_t req_size, return 0; } +static uint32_t audio_stream_frame_align_get(const uint32_t byte_align, + const uint32_t frame_align_req, + uint32_t frame_size) +{ + /* Figure out how many frames are needed to meet the byte_align alignment requirements */ + uint32_t frame_num = byte_align / gcd(byte_align, frame_size); + + /** return the lcm of frame_num and frame_align_req*/ + return frame_align_req * frame_num / gcd(frame_num, frame_align_req); +} + + +void audio_stream_init_alignment_constants(const uint32_t byte_align, + const uint32_t frame_align_req, + struct audio_stream *stream) +{ + uint32_t process_size; + uint32_t frame_size = audio_stream_frame_bytes(stream); + + stream->runtime_stream_params.align_frame_cnt = + audio_stream_frame_align_get(byte_align, frame_align_req, frame_size); + process_size = stream->runtime_stream_params.align_frame_cnt * frame_size; + stream->runtime_stream_params.align_shift_idx = + (is_power_of_2(process_size) ? 31 : 32) - clz(process_size); +} + static int audio_stream_release_data(struct sof_source *source, size_t free_size) { struct audio_stream *audio_stream = container_of(source, struct audio_stream, source_api); diff --git a/src/include/sof/audio/audio_stream.h b/src/include/sof/audio/audio_stream.h index cb2bcd496..6e7c89b2f 100644 --- a/src/include/sof/audio/audio_stream.h +++ b/src/include/sof/audio/audio_stream.h @@ -331,25 +331,6 @@ static inline uint32_t audio_stream_sample_bytes(const struct audio_stream *buf) return get_sample_bytes(buf->runtime_stream_params.frame_fmt); } -/** - * Return the frames that meet the align requirement of both byte_align and - * frame_align_req. - * @param byte_align Processing byte alignment requirement. - * @param frame_align_req Processing frames alignment requirement. - * @param frame_size Size of the frame in bytes. - * @return frame number. - */ -static inline uint32_t audio_stream_frame_align_get(const uint32_t byte_align, - const uint32_t frame_align_req, - uint32_t frame_size) -{ - /* Figure out how many frames are needed to meet the byte_align alignment requirements */ - uint32_t frame_num = byte_align / gcd(byte_align, frame_size); - - /** return the lcm of frame_num and frame_align_req*/ - return frame_align_req * frame_num / gcd(frame_num, frame_align_req); -} - /** * Set align_shift_idx and align_frame_cnt of stream according to byte_align and * frame_align_req alignment requirement. Once the channel number,frame size @@ -362,19 +343,9 @@ static inline uint32_t audio_stream_frame_align_get(const uint32_t byte_align, * @param frame_align_req Processing frames alignment requirement. * @param stream Sink or source stream structure which to be set. */ -static inline void audio_stream_init_alignment_constants(const uint32_t byte_align, - const uint32_t frame_align_req, - struct audio_stream *stream) -{ - uint32_t process_size; - uint32_t frame_size = audio_stream_frame_bytes(stream); - - stream->runtime_stream_params.align_frame_cnt = - audio_stream_frame_align_get(byte_align, frame_align_req, frame_size); - process_size = stream->runtime_stream_params.align_frame_cnt * frame_size; - stream->runtime_stream_params.align_shift_idx = - (is_power_of_2(process_size) ? 31 : 32) - clz(process_size); -} +void audio_stream_init_alignment_constants(const uint32_t byte_align, + const uint32_t frame_align_req, + struct audio_stream *stream); /** * Applies parameters to the buffer.