On Tue, Aug 20, 2024 at 3:42 PM Jaroslav Kysela <perex@xxxxxxxx> wrote: > > On 20. 08. 24 9:37, Shengjiu Wang wrote: > > On Tue, Aug 20, 2024 at 2:59 PM Pierre-Louis Bossart > > <pierre-louis.bossart@xxxxxxxxxxxxxxx> wrote: > >> > >> > >> > >> On 8/20/24 04:53, Shengjiu Wang wrote: > >>> On Mon, Aug 19, 2024 at 3:42 PM Pierre-Louis Bossart > >>> <pierre-louis.bossart@xxxxxxxxxxxxxxx> wrote: > >>>> > >>>> > >>>> > >>>> On 8/16/24 12:42, Shengjiu Wang wrote: > >>>>> Implement the ASRC memory to memory function using > >>>>> the compress framework, user can use this function with > >>>>> compress ioctl interface. > >>>>> > >>>>> Define below private metadata key value for output > >>>>> format, output rate and ratio modifier configuration. > >>>>> ASRC_OUTPUT_FORMAT 0x80000001 > >>>>> ASRC_OUTPUT_RATE 0x80000002 > >>>>> ASRC_RATIO_MOD 0x80000003 > >>>> > >>>> Can the output format/rate change at run-time? > >>> > >>> Seldom I think. > >>> > >>>> > >>>> If no, then these parameters should be moved somewhere else - e.g. > >>>> hw_params or something. > >>> > >>> This means I will do some changes in compress_params.h, add > >>> output format and output rate definition, follow Jaroslav's example > >>> right? > >> > >> yes, having parameters for the PCM case would make sense. > >> > >>>> I am still not very clear on the expanding the SET_METADATA ioctl to > >>>> deal with the ratio changes. This isn't linked to the control layer as > >>>> suggested before, and there's no precedent of calling it multiple times > >>>> during streaming. > >>> > >>> Which control layer? if you means the snd_kcontrol_new? it is bound > >>> with sound card, but in my case, I need to the control bind with > >>> the snd_compr_stream to support multi streams/instances. > >> > >> I can only quote Jaroslav's previous answer: > >> > >> " > >> This argument is not valid. The controls are bound to the card, but the > >> element identifiers have already iface (interface), device and subdevice > >> numbers. We are using controls for PCM devices for example. The binding > >> is straight. > >> > >> Just add SNDRV_CTL_ELEM_IFACE_COMPRESS define and specify the compress > >> device number in the 'struct snd_ctl_elem_id'. > >> " > > > > I don't think it is doable, or at least I don't know how to do it. > > > > My case is just one card/one device/one subdevice. can't use it to > > distinguish multi streams. > > I already wrote that the compress core code should be extended to support > subdevices like other ALSA APIs. I'll work on it. For now, just add support > for one converter. Thanks. What does this subdevices mean? Is it equal to the compress streams? When I call snd_compr_ops.open(), it means to create an instance, the instance is created at runtime (call open()), not created when the sound card is created. Best regards Shengjiu Wang > > Jaroslav > > -- > Jaroslav Kysela <perex@xxxxxxxx> > Linux Sound Maintainer; ALSA Project; Red Hat, Inc. >