日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Alsa中PCM参数设置

發布時間:2023/12/10 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Alsa中PCM参数设置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

分類: LINUX

1) PCM設備的句柄.
2) 指定同時可供回放或截獲的PCM流的方向
3) 提供一些關于我們想要使用的設置選項的信息,比如緩沖區大小,采樣率,PCM數據格式等
4) 檢查硬件是否支持設置選項.
?? 4.1) 初始化PCM變量
?? 4.2) 分配hwparams結構
?? 4.3) 打開PCM設備
?? 4.4) 以聲卡的全部設置選項空間來初始化hwparams結構
?? 4.5) 指定訪問類型,采樣格式,采樣率,聲道號碼,周期數目以及周期大小
??????? a) 訪問類型 :指定了哪一個多聲道數據儲存在緩沖區的方法.
???????????? *對于交錯訪問,緩沖區里的每一個幀為聲道容納連續的采樣數據.
???????????? *對于非交錯訪問,每一個周期為第一個聲道容納所有采樣數據接著是第二個聲道的采樣數據
??????? b) 緩沖區尺寸的單元依賴于函數.一些時候是字節,一些時候是必須指定的幀的數目.
?????????? 一個幀是對所有聲道的采樣數據數組.對于16位立體聲數據,一個幀的長度是4個字節.
?????????? 如果你的硬件不支持2的N次方的緩沖區大小,你可以使用snd_pcm_hw_params_set_buffer_size_near函數.這個函數工作起來與snd_pcm_hw_params_set_rate_near相似.
5) 為PCM設備申請由pcm_handle指向的設置選項

備注資料:

設備命名
API 庫使用邏輯設備名而不是設備文件。設備名字可以是真實的硬件名字也可以是插件名字。硬件名字使用hw:i,j這樣的格式。其中i是卡號,j是這塊聲卡上的設備號。第一個聲音設備是hw:0,0.這個別名默認引用第一塊聲音設備并且在本文示例中一真會被用到。插件使用另外的唯一名字。比如 plughw:,表示一個插件,這個插件不提供對硬件設備的訪問,而是提供像采樣率轉換這樣的軟件特性,硬件本身并不支持這樣的特性。

聲音緩存和數據傳輸
每個聲卡都有一個硬件緩存區來保存記錄下來的樣本。當緩存區足夠滿時,聲卡將產生一個中斷。內核聲卡驅動然后使用直接內存(DMA)訪問通道將樣本傳送到內存中的應用程序緩存區。類似地,對于回放,任何應用程序使用DMA將自己的緩存區數據傳送到聲卡的硬件緩存區中。
這樣硬件緩存區是環緩存。也就是說當數據到達緩存區末尾時將重新回到緩存區的起始位置。ALSA維護一個指針來指向硬件緩存以及應用程序緩存區中數據操作的當前位置。從內核外部看,我們只對應用程序的緩存區感興趣,所以本文只討論應用程序緩存區。

應用程序緩存區的大小可以通過ALSA庫函數調用來控制。緩存區可以很大,一次傳輸操作可能會導致不可接受的延遲,我們把它稱為延時(latency)。為了解決這個問題,ALSA將緩存區拆分成一系列周期(period)(OSS/Free中叫片斷fragments).ALSA以period為單元來傳送數據。
一個周期(period)存儲一些幀(frames)。每一幀包含時間上一個點所抓取的樣本。對于立體聲設備,一個幀會包含兩個信道上的樣本。

圖1展示了分解過程:一個緩存區分解成周期,然后是幀,然后是樣本。圖中包含一些假定的數值。圖中左右信道信息被交替地存儲在一個幀內。這稱為交錯 (interleaved)模式。在非交錯模式中,一個信道的所有樣本數據存儲在另外一個信道的數據之后。

period(周期):硬件中中斷間的間隔時間。它表示輸入延時。
聲卡接口中有一個指針來指示聲卡硬件緩存區中當前的讀寫位置。只要接口在運行,這個指針將循環地指向緩存區中的某個位置。
frame size = sizeof(one sample) * nChannels
alsa中配置的緩存(buffer)和周期(size)大小在runtime中是以幀(frames)形式存儲的。
period_bytes = frames_to_bytes(runtime, runtime->period_size);
bytes_to_frames()

The period and buffer sizes are not dependent on the sample format because they are measured in frames; you do not need to change them.

Over and Under Run
當一個聲卡活動時,數據總是連續地在硬件緩存區和應用程序緩存區間傳輸。但是也有例外。在錄音例子中,如果應用程序讀取數據不夠快,循環緩存區將會被新的數據覆蓋。這種數據的丟失被稱為overrun.在回放例子中,如果應用程序寫入數據到緩存區中的速度不夠快,緩存區將會"餓死"。這樣的錯誤被稱為"underrun"。在ALSA文檔中,有時將這兩種情形統稱為"XRUN"。適當地設計應用程序可以最小化XRUN并且可以從中恢復過來。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Alsa中PCM参数设置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 少妇又紧又色又爽又刺激视频 | 欲色网站| 大尺度av在线 | 高跟鞋调教—视频|vk | 国产精品污www一区二区三区 | 林雅儿欧洲留学恋爱日记在线 | 欧美另类性 | 日本伦理一区二区三区 | 激情文学综合网 | 99在线观看免费视频 | 超薄肉色丝袜一二三 | 夜夜骑夜夜 | 亚洲免费在线看 | 巨大乳の揉んで乳榨り奶水 | 亚洲人在线视频 | 99re在线视频精品 | 国产精品av在线免费观看 | 中国农村一级片 | 高清无打码 | 国产精品99久久久久久久久久久久 | 男女激情网 | 色多多黄色 | 奇米av在线 | 国产情侣小视频 | 精品无码久久久久成人漫画 | 99福利视频 | 黄色理论视频 | 青娱乐国产精品 | 直接看的av网站 | 欧美国产精品一区二区三区 | 成人av手机在线观看 | 在线黄网| 婷婷九月| 波多野结衣在线电影 | 久久久久国产精品午夜一区 | 午夜888 | 91欧美一区二区三区 | www.超碰在线观看 | 久久99久久99精品蜜柚传媒 | 在线观看麻豆 | 91国产视频在线播放 | 污视频网站免费在线观看 | 亚洲视频国产视频 | 欧美成人精品一区二区男人看 | 国产成人自拍视频在线观看 | 亚洲欧美激情在线 | 天堂草在线观看 | 中文字幕线人 | 激情综合视频 | 国产精品三级在线观看 | 亚洲天堂成人在线观看 | 欧美www视频 | 日本aa在线观看 | www.av黄色 | 日本网站黄色 | 日本在线一 | 精品人妻一区二区三区免费 | av性天堂网| 密臀久久 | 欧美成人黄色网 | 草莓视频在线观看入口w | 天堂在线视频免费 | 久久久久综合网 | 日韩欧美a级片 | 亚洲3p | 国产精品久久综合视频 | 波多野结衣在线看 | 日韩欧美国产三级 | 在线观看亚洲av每日更新 | 成人网在线看 | 国产精品视频在线看 | 美女av一区二区 | 秋霞福利网 | 亚洲国产第一 | 草民午夜理伦三级 | 奇米影视一区二区三区 | 日韩在线网 | 国产黄色观看 | 香蕉久久夜色精品国产使用方法 | 亚洲黄色免费看 | 漂亮人妻洗澡被公强 日日躁 | 爱的天堂 | 久久网亚洲 | 亚州精品国产精品乱码不99按摩 | 日韩六九视频 | 久久精国产 | 精品视频网 | 无码一区二区三区在线观看 | 国产又粗又黄又猛 | 非洲黄色片 | 91av不卡| 色爽黄 | 午夜一区二区三区免费观看 | 中文字幕国产在线 | 自拍偷拍导航 | 后宫秀女调教(高h,np) | 久久久精品久久久久 | 欧美在线观看一区二区 | 国产伦精品一区二区三区妓女 |