音頻系統框架筆記

參考文檔
① alsa pcm plugin
② alsa pcm softvol
③ alsa pcm rate converts

框架一
plug:equalizer
plug:pulse或dmix
kernel
driver
codec

總結: equalizer消耗cpu嚴重。實測還經常出現bus error錯誤。equalizer選擇可以用alsaequal或者mbeq,甚至可以自己寫。dmix爲alsa-lib自帶。pulse audio爲開源軟件。軟件處理eq,低採樣率可能需要重採樣,會帶入噪音。如果需要mic同時工作,可能導致播放卡頓,這也導致了筆者很痛苦。

框架二
plug:pulse或dmix
hw:0,0
alsa
kernel
driver
codec(dsp)

總結: 適中。筆者沒有硬件測試。

框架三
hw:0,0
alsa
kernel
driver
codec(dsp,混音)

總結: 無敵,但昂貴。筆者沒有硬件測試。

  • 配置文件
  • dmix
pcm.dmix {
        type dmix
        ipc_key 321456      # any unique value
        ipc_key_add_uid true
        slave {
                pcm "hw"
        }
}
  • equalizer
#LINE = POWER(10, DB / 20) - 1
pcm.equalizer {
  type equal;
# 31.25Hz@-6db
  channel0q 1.2247449;
  channel0g 0.0000000;
# 62.5Hz@-8db
  channel1q 1.2247449;                  
  channel1g 0.0000000;
# 125Hz@8db
  channel2q 1.2247449;
  channel2g -0.108749;
# 250Hz@2db
  channel3q 1.2247449;
  channel3g -0.108749;
# 500Hz@-3db
  channel4q 1.2247449;
  channel4g -0.498812;
# 1KHz@0db
  channel5q 1.2247449;
  channel5g 0.1220184;
# 2KHz@-1db
  channel6q 1.2247449;                  
  channel6g -0.108749;
# 4KHz@-12db
  channel7q 1.2247449;
  channel7g -0.748811;
# 8KHz@3db
  channel8q 1.2247449;
  channel8g 0.0000000;
# 16KHz@5db
  channel9q 1.2247449;
  channel9g -0.205671;
  # Modify the line below if you don't want to use sound card 0
  slave.pcm "plug:pulse";
  # or if you want to use with multiple applications output to dmix
  # slave.pcm "plug:dmix"
}

pcm.equal {
  type equal;
}
發佈了41 篇原創文章 · 獲贊 10 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章