2014-09-13 47 views
4

基本上音頻斗篷正在工作。除了一個令我迷惑的奇怪現象。我會盡力解釋。Beagle Bone Black Audio Cape rev B同步問題

當我播放一個.wav文件時,例如speaker-test -t vaw - >如果幸運的話,我會聽到Front Left - Front的權利。但10分之9,我聽到白色噪音,左前方的音頻聲音在背景中很微弱,或者在另一時間,聲音只是失真。當我使用aplay或mplayer播放文件時會發生同樣的情況。

所以,當我很幸運,或者系統時鐘的時間同步時,我會清楚地聽到音頻,如果不同步,我可能會聽到白噪聲或失真的播放。

我有谷歌廣泛,並沒有找到任何解決方案。所以我希望你們中的一位知道這裏發生了什麼。它必須是低水平的。

我在這件事上頗爲陌生,但根據這個:Troubleshooting Linux Sound所有接縫工作正常。

這是我的系統參數和設置:根@ beaglebone:〜#lsb_release -a經銷商ID:埃說明:埃GNU/Linux的v2012.12(核心版)發佈:v2012.12代號:核心版

[email protected]:~# cat /sys/devices/bone_capemgr*/slots 0: 54:PF--- 

1: 55:PF--- 
2: 56:P---L CBB-Relay,00A0,Logic_Supply,CBB-Relay 
3: 57:PF--- 
4: ff:P-O-L Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G 
5: ff:P-O-- Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI 
6: ff:P-O-L Bone-Black-HDMIN,00A0,Texas Instrument,BB-BONELT-HDMIN 
7: ff:P-O-L Override Board Name,00A0,Override Manuf,BB-BONE-AUDI-02 
[email protected]:~# speaker-test -t wav 

揚聲器試驗1.0.25

回放設備是默認流參數是480​​00Hz,S16_LE,1個通道WAV文件(S)速率設置爲48000Hz(請求48000Hz)緩衝區大小範圍從128到32768期尺寸範圍從8到2048使用最大緩衝區大小32768週期= 4已設置period_size = 2048已設置buffer_size = 32768

0 - 左前每個週期 時間= 0.641097

0 - 左前 根@ beaglebone:〜#mplayer的AxelF.wav MPlayer2 2.0-379-ge3f5043(C)2000至11年的MPlayer團隊162音頻& 361視頻編解碼器

播放AxelF.wav。檢測到的文件格式:WAV格式(libavformat)[wav @ 0xb6082780] max_analyze_duration達到[lavf]流0:音頻(pcm_s16le),-aid 0加載字幕。

============================================== ================ 強制音頻編解碼器:mad打開音頻解碼器:[pcm]未壓縮的PCM音頻解碼器音頻:44100 Hz,2 ch,s16le,1411.2 kbit/100.00 %(比例:176400-> 176400)所選音頻編解碼器:[pcm] afm:pcm(未壓縮PCM)

======================= ======================================= [編輯] AO:[alsa] 44100Hz 2ch s16le(每個採樣2字節)視頻:無視頻開始播放... A:1.6(01.6)15.9(15.8)0.3%

MPlayer被模塊中的信號2中斷:未知

正在退出...(退出)

回答

1

我可以對導致您遇到的工件的原因進行說明。對不起,我還沒有一個對策 - 我正在努力解決同樣的問題。你相當準確地描述可感知的後果。

使用I2S總線,聲音數據從ARM片上系統傳輸到音頻斗篷上的音頻編解碼器。I2S是一種串行協議,它每次發送一位數據,每個採樣以最高有效位開始,然後將所有位向下發送到最低有效位。在發送一個採樣的最低有效位之後,發送下一個音頻信道上採樣的最高有效位。爲了能夠解釋比特流,接收音頻編解碼器需要知道新的聲音樣本何時以其最高有效位開始,並且還知道每個聲音樣本屬於哪個通道。爲此,「字選擇」(WS)信號是I2S的一部分,並更改其值以指示聲音採樣的開始,並標識通道,請參閱this I2S timing diagram以更好地理解該概念。

當你聽到巨響和目標:

你,我認爲我們不-相當工作的音頻斗篷什麼可通過比特流要充分解釋失步音頻編解碼器被解釋信號在背景中是軟的,則先前樣本的一個或多個最低有效位被解釋爲當前樣本的最高有效位。位數越多,目標信號越柔和,直到你可能只在感知噪聲時(這是一種猜測!)大約4位被移位。

當偏移位於另一個方向時,即當前樣本的最高有效位被解釋爲先前樣本的最低有效位時,那麼您聽到的將聽起來對信號的軟部分是正確的,即當最重要的一點實際上並沒有被使用(這是一個簡化,見下文)。對於信號的較大部分,例如鼓的節拍,你會覺得失蹤的最重要的位失真。當然,隨着更多位向這個方向移動,失真變得更糟,並且開始於更軟的層級。

在上面的段落中,最重要的將隨着數據的符號而改變,所以它沒有被實際使用的陳述僅在最高有效位將具有與下一最高有效位相同的值的情況下有效爲了柔和的聲音。有關如何在計算機中呈現負整數的介紹,請參見Two's Complement

我不確定,發生腐敗的地方。這可能是由WS上的音頻編解碼器沒有正確解釋WS信號,或者WS信號沒有被ARM片上系統正確發送,或者移位可能已經發生在ARM CPU內部,例如,在Alsa司機。