Re: [alsa-devel] channel map for intel8x0
At Mon, 4 Nov 2013 14:52:43 +0800, Raymond Yau wrote:
[1 <text/plain; UTF-8 (7bit)>] Refer to patch ALSA: Implement channel maps for standard onboard AC97 drivers
e36e3b86c78cee9c7435eb33e0ef8a788193e812https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/commit/sound/pci/intel8x0.c?id=e36e3b86c78cee9c7435eb33e0ef8a788193e812
It seem that channal map is not working when testing with alsa-lib/test/chmap.c with the emulated intel8x0 inside virtualbox
What doesn't work actually? The lack of chmap for the capture? Please give a bit more explanations about your problem.
thanks,
Takashi
is the channel map support on device 0
- if (rec->ac97_idx == ICHD_PCMOUT && rec->playback_ops)
+if (device == 0 && rec->playback_ops) {
how about channel map for capture device ? [2 <text/html; UTF-8 (quoted-printable)>]
Refer to patch ALSA: Implement channel maps for standard onboard AC97 drivers
e36e3b86c78cee9c7435eb33e0ef8a788193e812<
https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/commit/sound/pc...
It seem that channal map is not working when testing with alsa-lib/test/chmap.c with the emulated intel8x0 inside virtualbox
What doesn't work actually? The lack of chmap for the capture? Please give a bit more explanations about your problem.
/alsa-lib/test$ ./chmap -Dhw:0,0 query Cannot query maps
- if (rec->ac97_idx == ICHD_PCMOUT && rec->playback_ops)
+if (device == 0 && rec->playback_ops) {
after change the above line
/alsa-lib/test$ ./chmap -Dhw:0,0 query Type = FIXED, Channels = 2 FL FR
is there any option to test the channel map of the capture device ?
./chmap
usage: chmap [options] query chmap [options] get chmap [options] set CH0 CH1 CH2... options: -D device Specify PCM device to handle -f format PCM format -c channels Channels -r rate Sample rate
At Mon, 4 Nov 2013 20:52:38 +0800, Raymond Yau wrote:
Refer to patch ALSA: Implement channel maps for standard onboard AC97 drivers
e36e3b86c78cee9c7435eb33e0ef8a788193e812<
https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/commit/sound/pc...
It seem that channal map is not working when testing with alsa-lib/test/chmap.c with the emulated intel8x0 inside virtualbox
What doesn't work actually? The lack of chmap for the capture? Please give a bit more explanations about your problem.
/alsa-lib/test$ ./chmap -Dhw:0,0 query Cannot query maps
OK. An untested fix patch is below.
- if (rec->ac97_idx == ICHD_PCMOUT && rec->playback_ops)
+if (device == 0 && rec->playback_ops) {
after change the above line
/alsa-lib/test$ ./chmap -Dhw:0,0 query Type = FIXED, Channels = 2 FL FR
is there any option to test the channel map of the capture device ?
The -s option specifies the stream direction. I forgot to add the help string, just take a look at the source.
Meanwhile, most of drivers don't provide the chmap for the capture direction just because they are up to two channels, and obviously it's only FL/FR. The chmap support has been added for drivers of consumer cards that are capable of multi channels.
Takashi
--- diff --git a/sound/pci/intel8x0.c b/sound/pci/intel8x0.c index 59c8aaebb91e..8d7a92ac616d 100644 --- a/sound/pci/intel8x0.c +++ b/sound/pci/intel8x0.c @@ -1541,17 +1541,15 @@ static int snd_intel8x0_pcm1(struct intel8x0 *chip, int device, snd_dma_pci_data(chip->pci), rec->prealloc_size, rec->prealloc_max_size);
- if (rec->ac97_idx == ICHD_PCMOUT && rec->playback_ops) { + if (rec->playback_ops == &snd_intel8x0_playback_ops) { struct snd_pcm_chmap *chmap; int chs = 2; - if (rec->ac97_idx == ICHD_PCMOUT) { - if (chip->multi8) - chs = 8; - else if (chip->multi6) - chs = 6; - else if (chip->multi4) - chs = 4; - } + if (chip->multi8) + chs = 8; + else if (chip->multi6) + chs = 6; + else if (chip->multi4) + chs = 4; err = snd_pcm_add_chmap_ctls(pcm, SNDRV_PCM_STREAM_PLAYBACK, snd_pcm_alt_chmaps, chs, 0, &chmap);
At Mon, 04 Nov 2013 14:19:49 +0100, Takashi Iwai wrote:
At Mon, 4 Nov 2013 20:52:38 +0800, Raymond Yau wrote:
Refer to patch ALSA: Implement channel maps for standard onboard AC97 drivers
e36e3b86c78cee9c7435eb33e0ef8a788193e812<
https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/commit/sound/pc...
It seem that channal map is not working when testing with alsa-lib/test/chmap.c with the emulated intel8x0 inside virtualbox
What doesn't work actually? The lack of chmap for the capture? Please give a bit more explanations about your problem.
/alsa-lib/test$ ./chmap -Dhw:0,0 query Cannot query maps
OK. An untested fix patch is below.
Let me know if the patch worked. Then I'll apply it with Cc to stable.
thanks,
Takashi
- if (rec->ac97_idx == ICHD_PCMOUT && rec->playback_ops)
+if (device == 0 && rec->playback_ops) {
after change the above line
/alsa-lib/test$ ./chmap -Dhw:0,0 query Type = FIXED, Channels = 2 FL FR
is there any option to test the channel map of the capture device ?
The -s option specifies the stream direction. I forgot to add the help string, just take a look at the source.
Meanwhile, most of drivers don't provide the chmap for the capture direction just because they are up to two channels, and obviously it's only FL/FR. The chmap support has been added for drivers of consumer cards that are capable of multi channels.
Takashi
diff --git a/sound/pci/intel8x0.c b/sound/pci/intel8x0.c index 59c8aaebb91e..8d7a92ac616d 100644 --- a/sound/pci/intel8x0.c +++ b/sound/pci/intel8x0.c @@ -1541,17 +1541,15 @@ static int snd_intel8x0_pcm1(struct intel8x0 *chip, int device, snd_dma_pci_data(chip->pci), rec->prealloc_size, rec->prealloc_max_size);
- if (rec->ac97_idx == ICHD_PCMOUT && rec->playback_ops) {
- if (rec->playback_ops == &snd_intel8x0_playback_ops) { struct snd_pcm_chmap *chmap; int chs = 2;
if (rec->ac97_idx == ICHD_PCMOUT) {
if (chip->multi8)
chs = 8;
else if (chip->multi6)
chs = 6;
else if (chip->multi4)
chs = 4;
}
if (chip->multi8)
chs = 8;
else if (chip->multi6)
chs = 6;
else if (chip->multi4)
err = snd_pcm_add_chmap_ctls(pcm, SNDRV_PCM_STREAM_PLAYBACK, snd_pcm_alt_chmaps, chs, 0, &chmap);chs = 4;
participants (2)
-
Raymond Yau
-
Takashi Iwai