Re: [PATCH] ASoC: pcm: allow changing the playback/capture rates for symmetric links

From: Takashi Iwai
Date: Thu Apr 28 2016 - 07:03:30 EST


On Thu, 28 Apr 2016 12:38:22 +0200,
Mark Brown wrote:
>
> On Wed, Apr 27, 2016 at 10:45:48PM +0200, Peter Rosin wrote:
> > On 2016-04-27 18:15, Mark Brown wrote:
>
> > > You've not articulated the problem you're trying to fix here, what in
> > > concrete terms is the program trying to accomplish and why should it
> > > succeed?
>
> > It is opening an OSS fd, and setting some parameters, but changing
> > the speed fails (in this case, since the codec dai has .symmetric_rates).
> > As far as I know this is how you specify a specific speed when using
> > OSS and it is simply not possibly when one of the involved dais is
> > symmetric in any way. Which is silly since there is only one stream,
> > so symmetry should not be an issue.
>
> Lots of things just don't work with OSS, we stopped caring about it
> years ago. The configuration mechanism just doesn't play nicely with
> dynamic constraints at all.

True, but looking at the code there, I wonder how only OSS hits.
Does ALSA-native API really work as is...?


> > >> if ((fd = open("/dev/dsp", O_WRONLY, 0)) == -1) {
> > >> perror("open");
> > >> return 1;
> > >> }
>
> > > This is using the OSS interfaces which really haven't ever been
> > > especially supported for ASoC.
>
> > Apparently, how should I know?
>
> OSS in general had been deprecated for 5-10 years.
>
> > I haven't looked really closely at the userspace side of this, but the
> > big picture is that we're using a (closed source) library that in its
> > documentation has an example where they open /dev/dsp like this and
> > feeds the fd to the lib. We are simply replicating that in our code.
> > I don't know if the library does anything OSSy with the fd, or if it
> > would be equally happy with an ALSA fd.
>
> If it's using OSS it's unlikely to work with ALSA, the two ABIs are
> completely different. You need to talk to your proprietary software
> vendor about updating their software. There are also some userspace
> utilities that try to do the remapping by wrapping things there but I
> can't remember the names off the top of my head, it's been a long time.

There are a couple of ways. A simple one is with alsa-oss LD_PRELOAD
wrapper, and another is via CUSE. Also, PA has own LD_PRELOAD
wrapper.


Takashi