我是從用戶空間如何從用戶空間註冊虛擬卡到alsa?
(使用UM視圖http://wiki.virtualsquare.org/wiki/index.php/UMview) 所以,我需要我的設備註冊到系統的聲卡列表
(我從來沒有在使用ALSA開發一個虛擬設備內核模塊,所以我認爲我需要調用snd_card_register()函數)
,但我無法找到一個方法來做到這一點從用戶空間...
也許我可以寫一個系統調用來做到這一點?
我是從用戶空間如何從用戶空間註冊虛擬卡到alsa?
(使用UM視圖http://wiki.virtualsquare.org/wiki/index.php/UMview) 所以,我需要我的設備註冊到系統的聲卡列表
(我從來沒有在使用ALSA開發一個虛擬設備內核模塊,所以我認爲我需要調用snd_card_register()函數)
,但我無法找到一個方法來做到這一點從用戶空間...
也許我可以寫一個系統調用來做到這一點?
我已經解決了這個問題,有時前,
艾莎用戶空間的lib只需打開每一個的/ dev/SND/controlC#從0到32,並推出
ioclt(SNDRV_CTL_IOCTL_CARD_INFO,...);
以建設如果我們將UmView模塊安裝在/ dev/snd/control#上,並且我們劫持了ioctl並回答它,我們的模塊將被ALSA識別爲聲卡
我用這種技術創建了一個虛擬聲音設備,你可以在 https://github.com/berdav/umdevaudio
這是一個簡單的方法來構建一個簡單的用戶空間驅動程序。
我想你應該停止(即停止使用UM視圖,它並不需要),只需使用"file" plugin在ALSA config創建設備理會覆蓋任何特定的文件,將管過來的數據到你的虛擬設備在/var/run/virtualsound/output
或類似的地方有一個命名管道。
與umview方法不同,這將適用於所有應用程序,無需以任何特殊方式運行它們。
謝謝你的迴應:)這是一個非常好的方法,但我想要通過umview的方式將虛擬設備「綁定」到我的虛擬機(以及umview缺乏虛擬聲音設備)......所以我需要創建我的設備只能在我的umview虛擬機中看到,所以在umview實例中運行的所有應用程序都可以使用我的設備和所有外部應用程序(例如QEMU或任何其他模擬器聲音設備)......我已經開始着名格言「一切都是文件」在我心中...但現在我不認爲這是真的:( – SpectralWave 2013-03-01 11:59:03
我相信ALSA完全在內核之外處理libasound庫中的虛擬設備。您只需在配置中定義一些內容,應用程序將使用它。儘管我從未理解配置。它有點神祕。 – 2013-02-28 11:51:33
我從來沒有聽說過umview,但從快速瀏覽看來,您似乎只需重新定義從卡片列表中閱讀。內核不處理設備,它不應該知道它。但我認爲首先創建alsa虛擬設備不應該需要umview。 – 2013-02-28 11:53:51
Thx爲迴應。 這是一個稍微複雜一點.. 簡單UM視圖劫持系統調用每一個設計文件 (你只需做一個$安裝-t umaudiomixer沒有的/ dev/SND/controlC0,他安裝我的模塊在卡0混頻器文件)每打開/讀取/寫入/關閉/ ioctl到這個文件被劫持到我的模塊,我可以重新定義每個操作的結果(不通過系統調用到底層內核) 所以我需要/ dev/snd/XXX鉤子文件到「虛擬」設備.. 不幸的是我不太瞭解配置,我也沒有看到一種方法來在/ dev/snd或其他地方「創建」我的虛擬設備 :( – SpectralWave 2013-02-28 17:32:17