週期,period,至關於底層的一個緩衝區窗口的大小,不過其單位不是字節,而是frame_size,雙聲道就是2.,單聲道就是1.html
這裏不對,應該還和量化位數相關,8位量化對於單聲道frame_size就是1,可是16位的話變爲2了函數
設置了週期後,還須要設置底層lib的緩衝區大小,其大小應該是週期*frame_sizeui
設置完了後,須要再去讀取一次週期的大小spa
而後,獲得週期大小後,能夠設置應用層的讀寫緩衝區大小,好比能夠設置一會兒讀取的PCM文件大小非週期*frame_size 字節大小.net
讀寫出之後,能夠直接調用PCM寫入函數寫入,寫入大小爲週期代大小,注意不是字節單位,而是frame_size單位unix
對於libmad解碼出的PCM流,從其lib可知,PCM的緩衝區大小爲 每一個聲道1152字節htm
因此,對應到alsa,16位量化的話blog
至關於一個週期爲1152*2*2(雙聲道)字節,也就是週期爲1152個frame_sizeget
至關於一個週期爲1152*1*2(但聲道)字節,也就是週期爲1152個frame_size
it
此文有介紹