All of lore.kernel.org
 help / color / mirror / Atom feed
* Multiple channels mapping
@ 2012-02-08  1:02 Patrick Lai
  2012-02-08  8:58 ` Takashi Iwai
  0 siblings, 1 reply; 7+ messages in thread
From: Patrick Lai @ 2012-02-08  1:02 UTC (permalink / raw)
  To: alsa-devel

Hi,

The DSP I am working on supports channel assignments similar to ALSA
route plug-in described in this link http://drona.csa.iisc.ernet.in
/~uday/alsamch.shtml.
I am currently looking a way to pass channel/speaker mapping
information of PCM stream( i.c channel 0 -> Front Left speaker, channel
1 -> Front Right speaker) to ALSA driver. I looked at latest kernel
tree and don't think there is already provision for my purpose. Can
anyone confirm? If I were to improvise a way to pass channel/speaker
mapping information, should I follow the same approach similar to how
bits per sample and other hardware parameter is passed?

Thanks
Patrick

-- 
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Multiple channels mapping
  2012-02-08  1:02 Multiple channels mapping Patrick Lai
@ 2012-02-08  8:58 ` Takashi Iwai
  2012-02-08  9:18   ` Clemens Ladisch
  0 siblings, 1 reply; 7+ messages in thread
From: Takashi Iwai @ 2012-02-08  8:58 UTC (permalink / raw)
  To: Patrick Lai; +Cc: alsa-devel

At Tue, 07 Feb 2012 17:02:00 -0800,
Patrick Lai wrote:
> 
> Hi,
> 
> The DSP I am working on supports channel assignments similar to ALSA
> route plug-in described in this link http://drona.csa.iisc.ernet.in
> /~uday/alsamch.shtml.
> I am currently looking a way to pass channel/speaker mapping
> information of PCM stream( i.c channel 0 -> Front Left speaker, channel
> 1 -> Front Right speaker) to ALSA driver. I looked at latest kernel
> tree and don't think there is already provision for my purpose. Can
> anyone confirm? If I were to improvise a way to pass channel/speaker
> mapping information, should I follow the same approach similar to how
> bits per sample and other hardware parameter is passed?

Currently the channel-mapping information is a missing piece in ALSA
framework, and it's a very long-standing item on my TODO list.

The implementation itself should be easy, but the only question is the
API design.  If you have a good proposal, please speak up.


thanks,

Takashi

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Multiple channels mapping
  2012-02-08  8:58 ` Takashi Iwai
@ 2012-02-08  9:18   ` Clemens Ladisch
  2012-02-08  9:23     ` Takashi Iwai
  0 siblings, 1 reply; 7+ messages in thread
From: Clemens Ladisch @ 2012-02-08  9:18 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel

Takashi Iwai wrote:
> Currently the channel-mapping information is a missing piece in ALSA
> framework, and it's a very long-standing item on my TODO list.
>
> The implementation itself should be easy, but the only question is the
> API design.  If you have a good proposal, please speak up.

TLVs on media controller entities.

I really should complete those patches ...


Regards,
Clemens

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Multiple channels mapping
  2012-02-08  9:18   ` Clemens Ladisch
@ 2012-02-08  9:23     ` Takashi Iwai
  2012-02-08 11:32       ` Clemens Ladisch
  2012-02-08 11:54       ` Mark Brown
  0 siblings, 2 replies; 7+ messages in thread
From: Takashi Iwai @ 2012-02-08  9:23 UTC (permalink / raw)
  To: Clemens Ladisch; +Cc: alsa-devel

At Wed, 08 Feb 2012 10:18:29 +0100,
Clemens Ladisch wrote:
> 
> Takashi Iwai wrote:
> > Currently the channel-mapping information is a missing piece in ALSA
> > framework, and it's a very long-standing item on my TODO list.
> >
> > The implementation itself should be easy, but the only question is the
> > API design.  If you have a good proposal, please speak up.
> 
> TLVs on media controller entities.

Well, my concern is that it might be too far from the other PCM
stuff.  How the implementation would look like?

BTW, the channel-mapping info can be useful for the automatic plug
layer, too.  It would re-route the channels when not following
ALSA-standard maps automatically, for example.  (Remember some old
AC97 chips.)

More question is whether this information should be available before
or after hw_params setup.


thanks,

Takashi

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Multiple channels mapping
  2012-02-08  9:23     ` Takashi Iwai
@ 2012-02-08 11:32       ` Clemens Ladisch
  2012-02-10 11:05         ` Takashi Iwai
  2012-02-08 11:54       ` Mark Brown
  1 sibling, 1 reply; 7+ messages in thread
From: Clemens Ladisch @ 2012-02-08 11:32 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel

Takashi Iwai wrote:
> Clemens Ladisch wrote:
>> Takashi Iwai wrote:
>>> Currently the channel-mapping information is a missing piece in ALSA
>>> framework, and it's a very long-standing item on my TODO list.
>>>
>>> The implementation itself should be easy, but the only question is the
>>> API design.  If you have a good proposal, please speak up.
>>
>> TLVs on media controller entities.
>
> Well, my concern is that it might be too far from the other PCM
> stuff.  How the implementation would look like?

There is one media controller device node per device (= ALSA card),
containing multiple entities (similar to how a ctl device contains
multiple controls).  /dev/media42 _is_ separate, but the entity that
represents a PCM device is handled by the PCM code, so it would be
possible to have a shortcut to get a PCM device's TLVs directly.

> More question is whether this information should be available before
> or after hw_params setup.

This is pretty much static information, which is available even when the
PCM device isn't opened.

> BTW, the channel-mapping info can be useful for the automatic plug
> layer, too.

And if there is a need for channel mapping information of ALSA plugins,
there needs to be a userspace library for the media controller API.


Regards,
Clemens

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Multiple channels mapping
  2012-02-08  9:23     ` Takashi Iwai
  2012-02-08 11:32       ` Clemens Ladisch
@ 2012-02-08 11:54       ` Mark Brown
  1 sibling, 0 replies; 7+ messages in thread
From: Mark Brown @ 2012-02-08 11:54 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel, Clemens Ladisch

On Wed, Feb 08, 2012 at 10:23:45AM +0100, Takashi Iwai wrote:
> Clemens Ladisch wrote:
> > Takashi Iwai wrote:

> > TLVs on media controller entities.

> Well, my concern is that it might be too far from the other PCM
> stuff.  How the implementation would look like?

It would be really good if it could support dynamic remapping of
channels - for example, with most of the devices I work on you just get
a bunch of audio channels presented to the mixing core of the device and
can send them wherever it amuses you to do so at runtime, there's no
fixed assignments.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Multiple channels mapping
  2012-02-08 11:32       ` Clemens Ladisch
@ 2012-02-10 11:05         ` Takashi Iwai
  0 siblings, 0 replies; 7+ messages in thread
From: Takashi Iwai @ 2012-02-10 11:05 UTC (permalink / raw)
  To: Clemens Ladisch; +Cc: alsa-devel, Mark Brown

At Wed, 08 Feb 2012 12:32:17 +0100,
Clemens Ladisch wrote:
> 
> Takashi Iwai wrote:
> > Clemens Ladisch wrote:
> >> Takashi Iwai wrote:
> >>> Currently the channel-mapping information is a missing piece in ALSA
> >>> framework, and it's a very long-standing item on my TODO list.
> >>>
> >>> The implementation itself should be easy, but the only question is the
> >>> API design.  If you have a good proposal, please speak up.
> >>
> >> TLVs on media controller entities.
> >
> > Well, my concern is that it might be too far from the other PCM
> > stuff.  How the implementation would look like?
> 
> There is one media controller device node per device (= ALSA card),
> containing multiple entities (similar to how a ctl device contains
> multiple controls).  /dev/media42 _is_ separate, but the entity that
> represents a PCM device is handled by the PCM code, so it would be
> possible to have a shortcut to get a PCM device's TLVs directly.

My concern is that accessing to different device files via yet another
API in alsa-lib would be unnecessary overhead.  (Since such
information is demanded to be accessed through the normal ALSA API, we
need a support in alsa-lib, anyway.

> > More question is whether this information should be available before
> > or after hw_params setup.
> 
> This is pretty much static information, which is available even when the
> PCM device isn't opened.

If it's a static information that can be represented in TLV, we can
provide it via the existing control API?

Meanwhile, the channel-mapping isn't always static.  As Mark
suggested, the channel mapping can be changed dynamically later.  Some
HD-audio codec allows it, and HD-audio controller allows the arbitrary
stereo-wise mapping, too.

So, how flexible should it be -- it's a big question.  If it's
completely free-mappable, a style like TLV doesn't fit at all.  In
that case, we may need some mechanism like hw_constraint, too.
OTOH, If it's something to select, providing a list of available modes
would be feasible.

> > BTW, the channel-mapping info can be useful for the automatic plug
> > layer, too.
> 
> And if there is a need for channel mapping information of ALSA plugins,
> there needs to be a userspace library for the media controller API.

I believe we need the alsa-lib, especially plugin access.


thanks,

Takashi

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2012-02-10 11:05 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-02-08  1:02 Multiple channels mapping Patrick Lai
2012-02-08  8:58 ` Takashi Iwai
2012-02-08  9:18   ` Clemens Ladisch
2012-02-08  9:23     ` Takashi Iwai
2012-02-08 11:32       ` Clemens Ladisch
2012-02-10 11:05         ` Takashi Iwai
2012-02-08 11:54       ` Mark Brown

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.