On Wed, 25 Sep 2024 08:55:09 +0200, Shengjiu Wang wrote:
This function is base on the accelerator implementation for compress API: https://patchwork.kernel.org/project/alsa-devel/patch/20240731083843.59911-1... Add it to this patch set.
Audio signal processing also has the requirement for memory to memory similar as Video.
This asrc memory to memory (memory ->asrc->memory) case is a non real time use case.
User fills the input buffer to the asrc module, after conversion, then asrc sends back the output buffer to user. So it is not a traditional ALSA playback and capture case.
Because we had implemented the "memory -> asrc ->i2s device-> codec" use case in ALSA. Now the "memory->asrc->memory" needs to reuse the code in asrc driver, so the patch 1 and patch 2 is for refining the code to make it can be shared by the "memory->asrc->memory" driver.
Other change is to add memory to memory support for two kinds of i.MX ASRC modules.
changes in v4:
- remove the RFC tag, no comments receive in v3
- Add Jaroslav Kysela's patch in this patch set. because it may be better for reviewing in a full patch set.
- Fix the list_for_each_entry_reverse to list_for_each_entry_safe_reverse
- Fix some coding style issues in Jaroslav Kysela's patch
changes in v3:
- use Jaroslav's suggestion for header file compress_params.h (PATCH 01)
- remove the ASRC_OUTPUT_FORMAT/ASRC_OUTPUT_RATE definition
- remove ASRC_RATIO_MOD in this version because it uses .set_metadata() Will wait Jaroslav's update or other better method in the future.
- Address some comments from Pierre.
changes in v2:
- Remove the changes in compress API
- drop the SNDRV_COMPRESS_SRC_RATIO_MOD
- drop the SND_AUDIOCODEC_SRC and struct snd_dec_src
- define private metadata key value ASRC_OUTPUT_FORMAT/ASRC_OUTPUT_RATE/ASRC_RATIO_MOD
Jaroslav Kysela (1): ALSA: compress_offload: introduce accel operation mode
Shengjiu Wang (6): ALSA: compress: Add output rate and output format support ASoC: fsl_asrc: define functions for memory to memory usage ASoC: fsl_easrc: define functions for memory to memory usage ASoC: fsl_asrc_m2m: Add memory to memory function ASoC: fsl_asrc: register m2m platform device ASoC: fsl_easrc: register m2m platform device
.../sound/designs/compress-accel.rst | 136 ++++ include/sound/compress_driver.h | 46 ++ include/uapi/sound/compress_offload.h | 63 +- include/uapi/sound/compress_params.h | 23 +- sound/core/Kconfig | 3 + sound/core/compress_offload.c | 351 ++++++++- sound/soc/fsl/Kconfig | 1 + sound/soc/fsl/Makefile | 2 +- sound/soc/fsl/fsl_asrc.c | 179 ++++- sound/soc/fsl/fsl_asrc.h | 2 + sound/soc/fsl/fsl_asrc_common.h | 70 ++ sound/soc/fsl/fsl_asrc_m2m.c | 727 ++++++++++++++++++ sound/soc/fsl/fsl_easrc.c | 261 ++++++- sound/soc/fsl/fsl_easrc.h | 4 + 14 files changed, 1851 insertions(+), 17 deletions(-) create mode 100644 Documentation/sound/designs/compress-accel.rst create mode 100644 sound/soc/fsl/fsl_asrc_m2m.c
Are there any objections against this basic design and ABI?
The details of the implementations can be changed in future, but the basic design and the ABI must be set in stone before merging.
thanks,
Takashi