1. 程式人生 > >linux alsa音頻中采樣率fs、比特率BCLK 、主時鐘MCLK關系

linux alsa音頻中采樣率fs、比特率BCLK 、主時鐘MCLK關系

android系統 數據量 don 完整 1=1 chan 比特 播放 前行

轉:https://blog.csdn.net/lugandong/article/details/72468831



一、
拿512fs說話:
看圖知道采樣的位深是32bit(位),左右聲道各占了8*32BCLK,那一個完整的LRCLK一共8*32*2=512BCLK。
其實xxxfs就是這麽算出來的,也是固定的,當你定了幾個channel,多少位深,就幾乎可以確認是多少fs了。從主觀的角度來看,fs的數值越大,那麽一個完整的LRCLK越多,那承載的數據量就越大,隨之的就是音質就會更加好。

上圖是32位的采樣,2channel,xxxfs的選擇有:
128fs、256fs、512fs

如果是16bit的采樣,2channel呢?

16*2(channel)*2(每個LR有幾個16BCLK組成) = 64fs
按照倍數的增加,會有如下的選擇:
64fs、128fs、256fs、512fs

如果是24bit的采樣,2channel呢?
24*2(channel)*2(每個LR有幾個16BCLK組成) = 96fs
按照倍數的增加,會有如下的選擇:
96fs、192fs、384fs、768fs(這個級別的估計一般的ADC很難)

二、
那BCLK是怎麽算的?
例在Android系統中,播放的音頻文件格式:
sample_rate=44.1Khz,sample_length=16,channel=2時,
那麽BCLK應該為2×44.1Khz×16=32xsample_rate=1.4112Mhz

MCLK存在著關系,這個一般要看芯片。如果存在這4倍的關系,那麽:
MCLK = 4*BCLK=5.6448Mhz
至於MCLK的選擇還要看外部的晶振。

鑒於如上的,那它是xxxfs?
正常是fs=MCLK/ sample_rate=5.6448*1000/44.1=128fs

fs=16*2*(LRCLK各幾個16 BCLK組)=128fs,一共是4個。

如果現在你要對外部晶振進行選型了,現在是sample_rate=48Khz,sample_length=16,channel=2,我們選擇512fs,那外部晶振MCLK要選擇多大?
MCLK=fs*sample_rate=512*48=24.576Mhz

---------------------
作者:慢幾步-深幾度-前行
來源:CSDN
原文:https://blog.csdn.net/lugandong/article/details/72468831
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

linux alsa音頻中采樣率fs、比特率BCLK 、主時鐘MCLK關系