Skip to content

Conversation

@tlauda
Copy link
Contributor

@tlauda tlauda commented Oct 30, 2019

Implements generic and HiFi3 versions of PCM converter library component.
This module provides static functions, which allows to copy
buffer data with frame format conversion.

Signed-off-by: Tomasz Lauda tomasz.lauda@linux.intel.com

@tlauda
Copy link
Contributor Author

tlauda commented Oct 30, 2019

@singalsu Can you take a look if processing looks OK?

@tlauda
Copy link
Contributor Author

tlauda commented Oct 30, 2019

@xiulipan It builds locally for me. I think it will fail for ICL until we use new toolchain.

@tlauda tlauda force-pushed the topic/pcm-converter branch from ce6513b to 0923968 Compare October 30, 2019 10:44
@tlauda tlauda force-pushed the topic/pcm-converter branch 2 times, most recently from 0aff449 to 59ec443 Compare October 30, 2019 12:20
@lgirdwood
Copy link
Member

@fredoh9 checkpatch result is all clear here but CI reporting checpatch error ?

@paulstelian97
Copy link
Collaborator

@fredoh9 checkpatch result is all clear here but CI reporting checpatch error ?

I do see the split string error. This PR is from before that change to Checkpatch and I suppose may need updating due to this.

@tlauda tlauda force-pushed the topic/pcm-converter branch from c120bee to 45533e9 Compare November 22, 2019 11:14
@zrombel
Copy link

zrombel commented Nov 25, 2019

Bit depth conversion mechanism is changed and CI test fails. New test are ready and I've checked manually that this PR is passing. From my point of view PR is ready to be merged and new test will be also merged.

@lgirdwood
Copy link
Member

@zrombel thanks for your prompt check. @fredoh9 any update on your side ?

@lgirdwood
Copy link
Member

SOFCI TEST

@tlauda
Copy link
Contributor Author

tlauda commented Nov 26, 2019

@lgirdwood We need #2024 in order for the ICL compilation to pass.

Changes signatures of copy DMA buffer functions to differentiate
between source and sink bytes. Process function from now on will
work on provided samples to handle different formats on input and output.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Implements macro to check whether value is aligned.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Implements generic version of PCM converter library component.
This module provides static functions, which allows to copy
buffer data with frame format conversion.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
HiFi3 implementation of PCM converter is optimized to
process either two samples at once for 32 bit data or
four samples for 16 bit data.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Implements functions for sample bytes and frame bytes calculations
based on provided frame format and channels.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Uses newly added frame_bytes and sample_bytes methods in its
own component based functions.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Changes processing flow and moves pcm frame format conversion
from volume to dai component. This way we'll no longer need to
artificially add volume into the pipelines, where it's not really
needed but frame format change is e.g. KPD topology. Dai is the perfect
place for conversion, since it's format is pretty much predefined and
comes from topology. Rest of the pipeline is configured from the host.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Removes unused code from dai_config. Frame bytes are always
calculated from scratch in dai_params, so no point in keeping
this dead code.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Uses pcm_converter to choose the right processing function.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Removes volume component from KWD pipeline. It was only required to perform
pcm conversion, but since DAI is now capable of doing that, usage of
volume is deprecated.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Builds buffer_copy functions based on the selected formats
in kconfig.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Reimplements buffer_copy functions to use memcpy_s instead of
fragment API. Based on my tests it gives 20% better performance
than previous implementation. Note that memcpy_s function
uses vec_memcpy when built using XCC.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Uses buffer_copy function for bypass mode to avoid code duplication.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Uses buffer_copy function for bypass mode to avoid code duplication.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
Uses buffer_copy function for bypass mode to avoid code duplication.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
@tlauda tlauda force-pushed the topic/pcm-converter branch from 45533e9 to e78627d Compare November 26, 2019 11:54
@tlauda
Copy link
Contributor Author

tlauda commented Nov 26, 2019

SOFCI TEST

@tlauda
Copy link
Contributor Author

tlauda commented Nov 26, 2019

@lgirdwood Device test passed. Internal CI will fail anyway as @zrombel reported. Tests will be changed as soon as this PR will be merged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants