All of lore.kernel.org
 help / color / mirror / Atom feed
* How to proper handle surround sound setups
@ 2007-02-20 12:40 Christian F.K. Schaller
  2007-02-20 15:08 ` Tobin Davis
  2007-02-21  8:01 ` Clemens Ladisch
  0 siblings, 2 replies; 3+ messages in thread
From: Christian F.K. Schaller @ 2007-02-20 12:40 UTC (permalink / raw)
  To: alsa-devel

Hi Alsa devs,
We have a long discussion today in the GStreamer community about how to
correctly handle surround sound setups.

The ideal solution we are looking for is a situation where the user do
not need to configure anything, things just work in an optimal fashion
depending on their hardware. We are not sure however what exactly is the
status of a lot of things both in theory and in practice. So I am
sending out this email to you.

GStreamer currently queries the alsadevice for its capabilities and
tries to negotiate an optimal path through its playback pipeline with a
little quality loss as possible.

This means that if the soundcard reports supporting surround sound and
you are playing a multichannel file then GStreamer will output surround
sound by default in most cases.

The discussion started as it seems my ICH4 laptop mistakenly reporting
supporting surround sound on the PCM device, while its only supports
surround sound indirectly through its s/pdif output(is this a known
bug?). This caused me to get only the side speaker output in my
headphones which meant almost all dialog in the movie clips where gone.

I thus started arguing that we should default to stereo due to this and
only do surround sound if the users selects it on the application level
as even if the user truly has a surround capable system they don't
necessarily have more than two stereo speakers connected.

The debate then turned to whether connected speakers connected can be
autodetected or not. Some people reported that their Mac's and Vista
systems did detect at least some speaker detection, but I was not able
to clarify if the systems could actually tell you that you have for
instance LF, center and LR + a woofer connected and so on.

So my questions to you are:
a) do most modern soundcards actually report what is connected to them
so the computer could use that information to automatically choose the
correct sound output?
b) if so what is the state of supporting that functionality in ALSA? Is
it widely implemented or in the process of being so an can it be queried
using the libalsa API?

The second issue might be caused by our limited understanding of ALSA. 
So in the expected case of not being able to detect number of speakers
connected we need to default to stereo as that is the only way to give
all users something sane out of the box. The question is how we should
do this within GStreamer. Currently we are querying ALSA and negotiating
based on the optimal capabilities of the card and the sound stream.

We now have two ways to resolve the issue. One is to keep the current
approach and set 'stereo' as the preferred channels layout through
something we call a capsfilter. This approach has some drawbacks as it
requires a lot of logic in the application when overriding the default
of stereo or you risk your surround config being interpreted as a wish
for upmixing of mono/stereo streams to surround.

The other alternative we are looking at which might simplify things for
us is to use the virtual devices which expose the different surround
scenarios like using for instance:

defaults.pcm.surround51.device for surround51 output.

In this scenario we use the stereo device by default which would then
only report back support for stereo and thus negotiate correctly to
stereo with all elements. Users can then through the applications choose
the 5.1 audio device at which point we would change to the 5.1 device
like the one above. Our worry the by the playback autoplugger which as
you know is rarely the casere though is what happens with stereo output
as we of course do not want that upmixed. Do these 5.1 virtual devices
also handle stereo correctly? What would be the expected result when
querying these devices through the libalsa API

Christian




-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV

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

* Re: How to proper handle surround sound setups
  2007-02-20 12:40 How to proper handle surround sound setups Christian F.K. Schaller
@ 2007-02-20 15:08 ` Tobin Davis
  2007-02-21  8:01 ` Clemens Ladisch
  1 sibling, 0 replies; 3+ messages in thread
From: Tobin Davis @ 2007-02-20 15:08 UTC (permalink / raw)
  To: Christian F.K. Schaller; +Cc: alsa-devel


[-- Attachment #1.1: Type: text/plain, Size: 5202 bytes --]

Based on the Intel HD Audio solutions I've seen in newer laptops, the
only way to do this is to query separately for digital output, as most
laptops will have the full surround capability through the spdif ports.
The codecs they are using range from the simple two channel sound chip
to the 8 channel (7.1 Surround) codecs.  We try to disable the unused
ports, but that doesn't always work due to the system hardware
configurations.

Some of the systems do have a channel mode defined in the driver, maybe
there is a way to query this from an external application, the same way
that alsamixer does.

Just my thoughts.

Tobin

On Tue, 2007-02-20 at 13:40 +0100, Christian F.K. Schaller wrote:

> Hi Alsa devs,
> We have a long discussion today in the GStreamer community about how to
> correctly handle surround sound setups.
> 
> The ideal solution we are looking for is a situation where the user do
> not need to configure anything, things just work in an optimal fashion
> depending on their hardware. We are not sure however what exactly is the
> status of a lot of things both in theory and in practice. So I am
> sending out this email to you.
> 
> GStreamer currently queries the alsadevice for its capabilities and
> tries to negotiate an optimal path through its playback pipeline with a
> little quality loss as possible.
> 
> This means that if the soundcard reports supporting surround sound and
> you are playing a multichannel file then GStreamer will output surround
> sound by default in most cases.
> 
> The discussion started as it seems my ICH4 laptop mistakenly reporting
> supporting surround sound on the PCM device, while its only supports
> surround sound indirectly through its s/pdif output(is this a known
> bug?). This caused me to get only the side speaker output in my
> headphones which meant almost all dialog in the movie clips where gone.
> 
> I thus started arguing that we should default to stereo due to this and
> only do surround sound if the users selects it on the application level
> as even if the user truly has a surround capable system they don't
> necessarily have more than two stereo speakers connected.
> 
> The debate then turned to whether connected speakers connected can be
> autodetected or not. Some people reported that their Mac's and Vista
> systems did detect at least some speaker detection, but I was not able
> to clarify if the systems could actually tell you that you have for
> instance LF, center and LR + a woofer connected and so on.
> 
> So my questions to you are:
> a) do most modern soundcards actually report what is connected to them
> so the computer could use that information to automatically choose the
> correct sound output?
> b) if so what is the state of supporting that functionality in ALSA? Is
> it widely implemented or in the process of being so an can it be queried
> using the libalsa API?
> 
> The second issue might be caused by our limited understanding of ALSA. 
> So in the expected case of not being able to detect number of speakers
> connected we need to default to stereo as that is the only way to give
> all users something sane out of the box. The question is how we should
> do this within GStreamer. Currently we are querying ALSA and negotiating
> based on the optimal capabilities of the card and the sound stream.
> 
> We now have two ways to resolve the issue. One is to keep the current
> approach and set 'stereo' as the preferred channels layout through
> something we call a capsfilter. This approach has some drawbacks as it
> requires a lot of logic in the application when overriding the default
> of stereo or you risk your surround config being interpreted as a wish
> for upmixing of mono/stereo streams to surround.
> 
> The other alternative we are looking at which might simplify things for
> us is to use the virtual devices which expose the different surround
> scenarios like using for instance:
> 
> defaults.pcm.surround51.device for surround51 output.
> 
> In this scenario we use the stereo device by default which would then
> only report back support for stereo and thus negotiate correctly to
> stereo with all elements. Users can then through the applications choose
> the 5.1 audio device at which point we would change to the 5.1 device
> like the one above. Our worry the by the playback autoplugger which as
> you know is rarely the casere though is what happens with stereo output
> as we of course do not want that upmixed. Do these 5.1 virtual devices
> also handle stereo correctly? What would be the expected result when
> querying these devices through the libalsa API
> 
> Christian
> 
> 
> 
> 
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys-and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/alsa-devel

-- 
Tobin Davis <tdavis@dsl-only.net>

[-- Attachment #1.2: Type: text/html, Size: 7737 bytes --]

[-- Attachment #2: Type: text/plain, Size: 345 bytes --]

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV

[-- Attachment #3: Type: text/plain, Size: 161 bytes --]

_______________________________________________
Alsa-devel mailing list
Alsa-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/alsa-devel

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

* Re: How to proper handle surround sound setups
  2007-02-20 12:40 How to proper handle surround sound setups Christian F.K. Schaller
  2007-02-20 15:08 ` Tobin Davis
@ 2007-02-21  8:01 ` Clemens Ladisch
  1 sibling, 0 replies; 3+ messages in thread
From: Clemens Ladisch @ 2007-02-21  8:01 UTC (permalink / raw)
  To: Christian F.K. Schaller, alsa-devel

Christian F.K. Schaller wrote:
> We have a long discussion today in the GStreamer community about how to
> correctly handle surround sound setups.
> 
> The ideal solution we are looking for is a situation where the user do
> not need to configure anything, things just work in an optimal fashion
> depending on their hardware. We are not sure however what exactly is the
> status of a lot of things both in theory and in practice. So I am
> sending out this email to you.
> 
> GStreamer currently queries the alsadevice for its capabilities and
> tries to negotiate an optimal path through its playback pipeline with a
> little quality loss as possible.
> 
> This means that if the soundcard reports supporting surround sound and
> you are playing a multichannel file then GStreamer will output surround
> sound by default in most cases.
> 
> The discussion started as it seems my ICH4 laptop mistakenly reporting
> supporting surround sound on the PCM device, while its only supports
> surround sound indirectly through its s/pdif output(is this a known
> bug?).

Many laptops do weird things with their sound chips.  It's possible that
yours has a 5.1-capable codec, but has not connected all outputs.

> I thus started arguing that we should default to stereo due to this and
> only do surround sound if the users selects it on the application level
> as even if the user truly has a surround capable system they don't
> necessarily have more than two stereo speakers connected.

Yes, that can be the case.

> The debate then turned to whether connected speakers connected can be
> autodetected or not. Some people reported that their Mac's and Vista
> systems did detect at least some speaker detection, but I was not able
> to clarify if the systems could actually tell you that you have for
> instance LF, center and LR + a woofer connected and so on.

Many modern AC'97 and HDA codecs could detect whether speakers are
connected (or if a shared jack is connected to a mic or a line-out), but
this is only usable with vendor-specific drivers because every
motherboard vendor uses different routings for the output and detection
pins.

ALSA currently dosn't bother to try to implement this.

> The other alternative we are looking at which might simplify things for
> us is to use the virtual devices which expose the different surround
> scenarios like using for instance:
> 
> defaults.pcm.surround51.device for surround51 output.

The device name for this is "surround51" (but it's better to use
"plug:surround51" because this virtual device doesn't have the sample
format converter that "default" has enabled by default).

> In this scenario we use the stereo device by default which would then
> only report back support for stereo and thus negotiate correctly to
> stereo with all elements.

ALSA's "default" device usually reports that it supports any number of
channels.

You should use "default" for stereo streams and "plug:surround51" for
surround streams.

> Users can then through the applications choose the 5.1 audio device at
> which point we would change to the 5.1 device like the one above. Our
> worry the by the playback autoplugger which as you know is rarely the
> casere though is what happens with stereo output as we of course do
> not want that upmixed.

Doesn't the part of GStreamer that chooses the device name know the
number of channels that the stream will have?


Regards,
Clemens

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV

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

end of thread, other threads:[~2007-02-21  8:01 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-02-20 12:40 How to proper handle surround sound setups Christian F.K. Schaller
2007-02-20 15:08 ` Tobin Davis
2007-02-21  8:01 ` Clemens Ladisch

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.