-
Notifications
You must be signed in to change notification settings - Fork 349
Audio: pcm_converter: Optimize buffers access in generic version #5019
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Audio: pcm_converter: Optimize buffers access in generic version #5019
Conversation
lgirdwood
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Whats the performance improvement ?
|
@lgirdwood This version seems to fail CI in every platform before cAVS. I need to test and fix. I'm now setting up a BYT device to measure the execute speed difference. |
7a51057 to
2ac1d2a
Compare
|
Here's execution time for s16 to s24 conversion measured in CML platform with gcc build. I could not yet get up my BYT device where this code would be default. The execution time average dropped from 15 us to 13 us that corresponds to 6 MCPS to 5 MCPS. But since we can have potentially several instances of these running the saving can be larger. |
2ac1d2a to
c108e96
Compare
|
This push contains temporary disable of hifi3 code version to increase CI test coverage for this patch. |
This code is used in non-HiFi3 platforms and in all gcc builds. The inefficient audio_stream_read/write_frag_s16/s32() usage is replaced by block processing with help of function audio_stream_bytes_without_wrap(). The circular buffers pointers checks and wraps are done only when necessary. Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
c108e96 to
5f26007
Compare
|
Can one of the admins verify this patch? |
|
CI shows logger and FW presence error unrelated to this PR. |

This code is used in non-HiFi3 platforms and in all gcc builds.
The inefficient audio_stream_read/write_frag_s16/s32() usage is
replaced by block processing with help of function
audio_stream_bytes_without_wrap(). The circular buffers pointers
are checked only in the end or when one of the pointers are at end.
Signed-off-by: Seppo Ingalsuo seppo.ingalsuo@linux.intel.com