Bui~ 在前面的博文中有提到,高通帶來了aptx voice這個新功能。這是一種能傳輸32k 採樣率的通話壓縮格式,能讓藍牙做到更高的通話音質。之前我們都是用16k和8k的cvc,而aptx voice是32k的採樣率,自然要用32k的cvc去處理,那麼(→ ω →) (๑¯∀¯๑)
既然都加了,不能只讓aptx voice用,好東西自然要一起用嘛。我們可以把這個cvc模塊用在那些有這麼高採樣率但沒有對應降噪的用戶場景。比如說32k usb voice ٩(๑❛ᴗ❛๑)۶ 雖然之前有篇48k usb voice的博文,但那只是讓speaker輸出48k,mic輸入還是只能做16k。這次有了新的cvc,這就得整上。
小編用的是722.1的代碼做修改,因為目前的代碼基本上都做得很完善了,所以改動的地方不多,很有可能在未來的版本,高通自己都會加上去,所以大家想做這功能的時候,先看看release note或代碼有沒有相關的應用。目前版本是沒有的,所以小編稍微先幫高通完善一下。
首先,我們要修改的是USB 音頻流描述符,這得讓PC知道設備支持什麼參數。這裡面主要是添加32k採樣率的描述
Mic和speaker都改。其實speaker是可以不改的,或者改更高採樣率,但是沒必要也不建議,默認的speaker鏈路有重採樣做適配,而且現在的代碼都是音樂聲卡和通話聲卡分開的,平時聽音樂不會用到通話聲卡,所以還是建議speaker和mic做同樣的採樣率。
再來,我們就創建一下swb(也就是32k voice)的chain文件,我們可以參考wb的chain來改一下他的cvc模塊
最後,我們需要添加這個chain的引用。在chain_configs的結構體中多加一個.chain_usb_voice_swb_config = &chain_usb_voice_swb_config,然後在kymeraUsbVoice_CreateChain的函數中將這個配置用上。
這裡有個細節要注意,case用的mode是usb_voice_mode_uwb而不是usb_voice_mode_swb。這是和高通後面要添加的功能有關,voice除了傳統的8k,16k的採樣率以外,還有22.4k,32k,甚至64k,所以他的命名規則有些出入。我們只需要查usb_voice_mode_t的枚舉,知道這是表示32k就好了,後面怎麼改動,隨機應變。
最後燒錄接上電腦去通話就可以在qact看到對應的swb的cvc模塊了
改動步驟比較少,和之前的版本相比還是簡化了很多的,這就是模塊化編程的魅力。那這都沒問題了,那麼(→ ω →) 舉一反十。32k usb 2mic voice不就有了,32k usb speaker voice不就有了,32k usb speaker 2mic voice不就有了,骨傳導的usb voice不就有了(雖然產品形態不好理解),再大膽點,usb stereo voice ٩(๑❛ᴗ❛๑)۶
以上是本期博文的全部內容,如有疑問就別在博文下方評論留言了,有什麼疑問或想了解的當面和我說(如果你知道我是誰的話ヽ( ̄▽ ̄)و),我會儘量安排上(o´ω`o)و。謝謝大家瀏覽,我們下期再見。
簡單是長期努力的結果,而不是起點
—— 不是我說的
FAQ 1:mic的屬性不顯示32k
A1:刪除聲卡驅動重新安裝
FAQ 2: 沒有找到聲卡
A2:要打開INCLUDE_USB_AUDIO(音樂) 和 INCLUDE_USB_VOICE(通話) 這兩個宏
FAQ 3:能不能作假,聲卡設置到48k
A3:可以,鏈路多加一個重採樣
FAQ 4:這樣usb voice就支持aptx voice了?
A4: 不能這樣理解,aptx voice是指無線傳輸的功能
FAQ 5: QCC30xx系列能不能做
A5: 只要他的dsp有這個模塊,都能做
評論