我在我的嵌入式設備中將Bluez 4.97更新爲5.35。爲什麼在Bluez 5.35中SBC編解碼器的功能在android/hal-audio-sbc.c中未初始化AVDTP.c中
對於A2DP連接,我們必須共享SBC編解碼器功能。在理想情況下,容量將如圖1 所示。在Bluez 4.97代碼,我從AVDTP層獲得sbc_getcap_ind()函數的SBC編解碼器功能。在sbc_getcap_ind()中,sbc_codec_cap和avdtp_media_codec_capability被初始化。所以這個能力包我可以發回到手機。
In 5.35,sbc_getcap_ind()函數不可用。 avdtp_media_codec_capability設置在endpoint_getcap_ind()功能在AVDTP層,這是根據我的預期。但是sbc_codec_cap未初始化。所以我得到像圖2 packect。
在的bluez 5.35有自帶的新包的Android/HAL-AUDIO-sbc.c,在這個包SBC編碼功能設置。
我的嵌入式設備是基於RTOS的,我與android無關。 所以我有以下懷疑:
1)爲什麼在blueZ堆棧中有新的android包?這背後的發展理念是什麼?
2)爲什麼SBC功能將在的Android/HAL-AUDIO-sbc.c初始化,如何非Android設備將訪問SBC功能?
3)如何在我的嵌入式環境中,我可以使用Android的/HAL-AUDIO-sbc.c讓SBC功能?
我想我無法解決這個問題,因爲我錯過了對新的5.35架構的理解。並沒有足夠的文件來了解BlueZ架構。我希望通過得到這些問題的答案我能理解5.35 BlueZ包中android文件夾的意義。
在BlueZ 4.x中,A2DP共享SBC/MPEG CODEC規範,而連接配置爲SOURCE/SINK。一旦建立了A2DP連接,SBC/MPEG音頻數據包將通過HCI層發送到L2CAP層。我發送的這個SBC/MPEG包親自開發了SBC/MPEG解碼器。在Bluez 5.x中,SBC/MPEG CODEC規範,而A2DP連接不可用,因爲A2DP連接本身發生故障。因此,對於解決方案,我購買了4.97 SBC get_capablity代碼到5.35,並且A2DP正在連接並獲取SBC數據包到L2CAP層。 你認爲它是一種可靠的實時方案嗎? – Hari
對於PulseAudio應用程序,BlueZ將開始與PulseAudio進行通信? PulseAudio是否會在HCI層或傳輸層或L2CAP層從BlueZ獲取音頻數據包? – Hari
@HarishSingh在pulseaudio中,模塊藍牙實現了編解碼器,並在模塊初始化期間使用RegisterEndpoint調用向BlueZ註冊自己。從那裏開始,每當BlueZ連接到具有A2DP配置文件的新設備時,它將通過profile-manager界面在NewConnection呼叫請求後在pulseaudio模塊中調用「SelectConfig *,SetConfig *」調用。因此,pulseaudio中的藍牙模塊有責任獲取FD並從fd讀取音頻數據。 –