如何选择用于/ dev / dsp OSS仿真的声音输出设备?


1

我有一个带有两个声音设备的系统,我通过HDMI输出声音。这是卡1,设备7,子设备0,所以我设置在我的/usr/share/alsa.conf

defaults.ctl.card 1
defaults.pcm.card 1
defaults.pcm.device 7
defaults.pcm.subdevice 0

这让我在ALSA应用程序中发出声音。现在我想运行一个需要OSS的旧程序,所以我安装alsa-oss并做了sudo modprobe snd-pcm-oss snd-mixer-oss。当我运行旧程序时,我得到声音,但只能从模拟线路输出,而不是从HDMI,因此OSS仿真使用第一张卡。

如何告诉OSS仿真使用第二张卡呢?

Answers:


0

文件说:

ALSA支持以下OSS设备文件:

PCM:

      的/ dev / DSPX
      的/ dev / adspX
[...]
与真正的OSS不同,ALSA不能使用设备文件而不是分配的设备文件。例如,第一张卡不能使用/ dev / dsp1或/ dev / dsp2,而只能使用/ dev / dsp0和/ dev / adsp0。[...]
如上所示,PCM和MIDI可能有两个设备。通常,第一个PCM设备(ALSA中的hw:0,0)映射到/ dev / dsp,辅助设备(hw:0,1)映射到/ dev / adsp(如果可用)。

您可以通过snd-pcm-oss和snd-rawmidi的模块选项更改此设备映射。在PCM的情况下,snd-pcm-oss有以下选项:

  dsp_map     PCM device number assigned to /dev/dspX
      (default = 0)
  adsp_map    PCM device number assigned to /dev/adspX
      (default = 1)

例如,要将第三个PCM设备(hw:0,2)映射到/ dev / adsp0,请按以下方式定义:

options snd-pcm-oss adsp_map=2

选项采用数组。要配置第二张卡,请指定以逗号分隔的两个条目。例如,要将第二张卡上的第三个PCM设备映射到/ dev / adsp1,请按以下方式定义:

options snd-pcm-oss adsp_map=0,2

问题是,根据我的理解,我的HDMI不是hw:0,1但是hw:1,7。我怎样才能将/ dev / dsp设置为hw:那么1,7?
rabejens 2015年

你必须告诉旧程序使用/dev/(a)dsp1
CL。

我从来没有得到/ dev /(a)dsp1,我只得到/ dev / dsp。我的声音硬件很有趣,它似乎使用snd_hda_intel和NVidia专有的图形驱动程序以某种方式安装第二个设备,但当我黑名单snd_hda_intel时,HDMI声音也消失了
rabejens 2015年

两者都使用snd-hda-intel驱动程序。adsp默认情况下,您可以获得设备1。你不是在使用这个adsp_map选项吗?
CL。

如果我这样做,sudo modprobe snd_pcm_oss adsp_map=0我会得到/dev/adsp,但声音仍来自模拟音频。当使用dsp_map=1或0以外的任何东西时,我甚至都没有/dev/dsp。我想我将通过两个适配器通过DVI运行视频信号来剥离音频,并使用板载模拟声音。它只是一台内置扬声器的显示器。
rabejens 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.