mbox series

[v4,0/7] ASoC: fsl: add memory to memory function for ASRC

Message ID 1727247316-16156-1-git-send-email-shengjiu.wang@nxp.com (mailing list archive)
Headers show
Series ASoC: fsl: add memory to memory function for ASRC | expand

Message

S.J. Wang Sept. 25, 2024, 6:55 a.m. UTC
This function is base on the accelerator implementation
for compress API:
https://patchwork.kernel.org/project/alsa-devel/patch/20240731083843.59911-1-perex@perex.cz/
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

Comments

Takashi Iwai Oct. 14, 2024, 10:07 a.m. UTC | #1
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-perex@perex.cz/
> 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
Vinod Koul Oct. 23, 2024, 5:32 a.m. UTC | #2
On 25-09-24, 14:55, 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-perex@perex.cz/
> 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.

Are there any patches for tinycompress to use the new IOCTLs here, I
would like to see those changes as well
Shengjiu Wang Oct. 24, 2024, 5:17 a.m. UTC | #3
On Wed, Oct 23, 2024 at 1:32 PM Vinod Koul <vkoul@kernel.org> wrote:
>
> On 25-09-24, 14:55, 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-perex@perex.cz/
> > 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.
>
> Are there any patches for tinycompress to use the new IOCTLs here, I
> would like to see those changes as well

Yes, just create a pull request here:
https://github.com/alsa-project/tinycompress/pull/26

Best regards
Shengjiu Wang

>
> --
> ~Vinod