우선, 안녕하세요 여러분!
제 이름은 Przemek Gajos이고 이것이 저의 첫 번째 게시물입니다.
최근에 오디오 캡처 카드용 ALSA 드라이버를 작성했는데 PULSEAUDIO가 이를 캡처 소스로 인식하는 데 문제가 있습니다.
여러분 중 누군가가 과거에 이런 일을 겪었고 도움이 될 수 있기를 바라는 몇 가지 사실은 다음과 같습니다.
(1) 캡처 카드에는 오디오 입력(스테레오) 2개(HDMI 1개, 아날로그 1개)가 있습니다. ALSA를 직접 사용하면 두 소리 모두 캡처할 수 있습니다.
(2) PULSEAUDIO 명령을 사용하여 오디오 캡처 소스를 나열하는 경우:
$ pactl list | grep -A2 'Source #' | grep 'Name: ' | cut -d" " -f2
출력에는 다음이 표시됩니다. 이는 온보드 장치이며 내 ALSA 드라이버를 사용하지 않습니다.
alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
alsa_input.pci-0000_00_1b.0.analog-stereo
따라서 위에서 볼 수 있듯이 내 장치는 캡처 소스로 나열되지 않습니다.
(3) 내가 사용할 때:
$ pactl list
출력에는 "my" ALSA 카드가 표시됩니다. 아래의 2가지 샘플 출력을 참조하세요. (a) 온보드 카드(내 드라이버를 사용하지 않음) 및 (b) 내 드라이버를 사용하는 카드:
(a) 기내 카드:
Card #0
Name: alsa_card.pci-0000_00_1b.0
Driver: module-alsa-card.c
Owner Module: 4
Properties:
alsa.card = "10"
alsa.card_name = "HDA Intel PCH"
alsa.long_card_name = "HDA Intel PCH at 0xfbf20000 irq 67"
alsa.driver_name = "snd_hda_intel"
device.bus_path = "pci-0000:00:1b.0"
sysfs.path = "/devices/pci0000:00/0000:00:1b.0/sound/card10"
device.bus = "pci"
device.vendor.id = "8086"
device.vendor.name = "Intel Corporation"
device.product.name = "6 Series/C200 Series Chipset Family High Definition Audio Controller"
device.form_factor = "internal"
device.string = "10"
device.description = "Built-in Audio"
module-udev-detect.discovered = "1"
device.icon_name = "audio-card-pci"
Profiles:
output:analog-stereo: Analogue Stereo Output (sinks: 1, sources: 0, priority. 6000)
output:analog-stereo+input:analog-stereo: Analogue Stereo Duplex (sinks: 1, sources: 1, priority. 6060)
output:analog-surround-40: Analogue Surround 4.0 Output (sinks: 1, sources: 0, priority. 700)
output:analog-surround-40+input:analog-stereo: Analogue Surround 4.0 Output + Analogue Stereo Input (sinks: 1, sources: 1, priority. 760)
output:analog-surround-41: Analogue Surround 4.1 Output (sinks: 1, sources: 0, priority. 800)
output:analog-surround-41+input:analog-stereo: Analogue Surround 4.1 Output + Analogue Stereo Input (sinks: 1, sources: 1, priority. 860)
output:analog-surround-50: Analogue Surround 5.0 Output (sinks: 1, sources: 0, priority. 700)
output:analog-surround-50+input:analog-stereo: Analogue Surround 5.0 Output + Analogue Stereo Input (sinks: 1, sources: 1, priority. 760)
output:analog-surround-51: Analogue Surround 5.1 Output (sinks: 1, sources: 0, priority. 800)
output:analog-surround-51+input:analog-stereo: Analogue Surround 5.1 Output + Analogue Stereo Input (sinks: 1, sources: 1, priority. 860)
input:analog-stereo: Analogue Stereo Input (sinks: 0, sources: 1, priority. 60)
off: Off (sinks: 0, sources: 0, priority. 0)
Active Profile: output:analog-stereo+input:analog-stereo
Ports:
analog-output: Analogue Output (priority 9900)
Part of profile(s): output:analog-stereo, output:analog-stereo+input:analog-stereo, output:analog-surround-40, output:analog-surround-40+input:analog-stereo, output:analog-surround-41, output:analog-surround-41+input:analog-stereo, output:analog-surround-50, output:analog-surround-50+input:analog-stereo, output:analog-surround-51, output:analog-surround-51+input:analog-stereo
analog-input-microphone: Microphone (priority 8700)
Part of profile(s): output:analog-stereo+input:analog-stereo, output:analog-surround-40+input:analog-stereo, output:analog-surround-41+input:analog-stereo, output:analog-surround-50+input:analog-stereo, output:analog-surround-51+input:analog-stereo, input:analog-stereo
analog-input-linein: Line In (priority 8100)
Part of profile(s): output:analog-stereo+input:analog-stereo, output:analog-surround-40+input:analog-stereo, output:analog-surround-41+input:analog-stereo, output:analog-surround-50+input:analog-stereo, output:analog-surround-51+input:analog-stereo, input:analog-stereo
(b) 내 카드 중 하나(카드가 2개 이상 있음):
Card #11
Name: alsa_card.1
Driver: module-alsa-card.c
Owner Module: 31
Properties:
alsa.card = "1"
alsa.card_name = "OEM_VISIONRGB_AV"
alsa.long_card_name = "OEM_VISIONRGB_AV Analog DGC dada"
device.bus_path = "/devices/virtual/sound/card1"
sysfs.path = "/devices/virtual/sound/card1"
device.string = "1"
device.description = "OEM_VISIONRGB_AV"
module-udev-detect.discovered = "1"
device.icon_name = "audio-card"
Profiles:
input:analog-stereo: Analogue Stereo Input (sinks: 0, sources: 1, priority. 60)
off: Off (sinks: 0, sources: 0, priority. 0)
Active Profile: input:analog-stereo
Ports:
analog-input: Analogue Input (priority 10000)
Part of profile(s): input:analog-stereo
내 카드와 기내카드는 '이름' 입력란의 형식이 매우 다르므로 주의하시기 바랍니다. 내가 테스트한 내용은 다음과 같습니다.
alsa_card.pci-0000_00_1b.0(온보드 카드)에서 캡처하면 제대로 작동합니다.
alsa_card.1(내 카드)에서는 캡처할 수 없습니다.
내 ALSA 드라이버에는 여전히 일부 요소가 누락되어 있습니다. 예를 들어 믹서 요소가 포함되어 있지 않습니다. 이것이 ALSA와 PULSEAUDIO 간의 협력이 부족한 이유일 수 있다고 생각합니다. 귀하의 경험에 비추어 볼 때 PULSEAUDIO가 ALSA 장치를 캡처 소스로 인증하기 위해 믹서 요소가 필요한지 알고 계십니까?
이렇게 긴 메시지를 보내게 되어 사과드립니다. 그래도 위의 내용이 눈살을 찌푸리게 하는가?
많은 도움과 조언 부탁드립니다,
프셰미크