原创 多個codec使用同一份驅動

一般來說,消費電子產品比如智能電視和音箱只有立體聲兩個喇叭,硬件上只需要一個codec芯片即能滿足要求,有時需要做多聲道,這時候可能就用到多個codec芯片了,如果是不同的codec芯片,則分別編寫對應的驅動即可,如果用的都是同一款芯片,

原创 pcm音量處理

基本的操作,作爲一個整理 第一種線性音量處理,處理16bit與32bit的情況 static inline int16_t clamp16(int32_t sample) { if ((sample >> 15) ^ (samp

原创 音頻淡入淡出效果——解決音頻突變的爆音問題

使用軟件調節音量時如果音量之間的步進太大,聲音突變,就能聽到明顯的爆音,尤其以單音音頻更爲明顯,類似的問題還在聲音起播、暫停、結束、快進快退時經常會出現,這個時候一般需要對音頻進行漸入漸出的效果處理。 先來看一個典型的爆音音頻示例,播放一

原创 AudioServer的TimeCheck機制

android audioserver裏面用於binder調用超時檢測有個TimeCheck機制,對於audioserver binder調用不能超過5s,如果超過5s就會產生一個abort的log 實現路徑在frameworks\av\

原创 ALSA driver--pcm_read和pcm_write的阻塞問題

一張圖先看下pcm_write的調用流程 做的工作一是將數據送到dma 中,另外就是更新alsa的緩衝區指針 在snd_pcm_lib_write1接口中看到這樣一個函數wait_for_avail wait_for_avail函數將

原创 修改ALSA支持的最大pcm device個數——一次usb聲卡不識別問題

在android或linux電子設備設備中,通常都有一個主聲卡,通過cat /proc/asound/cards可以查看當前設備的聲卡情況 以我的平臺爲例: 可以看到我的平臺只有一個主聲卡 命令cat /proc/asound/pcm

原创 EQ均衡器中的G 、Q、FC與截止頻率知識

最近在一個項目中,與客戶的聲學工程師關於EQ頻響測試有過疑問,也順便複習了一下關於EQ調試過程中一些參數的意義。 起因如下,一般在TV產品中,聲學會調試兩組PEQ參數應對不同的場景,桌面模式和壁掛模式,顧名思義,根本電視擺放位置的不同利用

原创 關於AudioEffect使用過程中的構造以及處理流程遇到的幾個問題

最近遇到幾個與AudioEffect相關的問題,在此記錄下作爲一個記憶總結 android系統中如果想使用自己開發或者第三方的音效算法,有一種比較簡單的辦法就是放到hal層的out_write接口中,這樣做優點是簡單,方便快速集成。還有標

原创 使用MediaReocord錄音時遇到的問題

Android系統提供的錄音接口有兩種,MediaRecord和AudioRecord,AudioRecord錄製的是未經過壓縮的pcm格式音頻數據,MediaRecord則可以設置編碼器,錄音壓縮後的音頻數據,同時錄製出來的文件可以直接

原创 Linux asoc codec驅動調試小結

本篇記錄下自己在調試codec驅動時的經驗及注意事項,這裏主要是放音playback調試 需要什麼: 標準的linux codec驅動,如何編寫驅動以後有時間再寫一篇吧 原理圖,需要查看對應的引腳,I2S的clck和data腳以及是否有r

原创 TV音頻電性能測試基本術語

頻響曲線 不同頻率的信號輸入到一個系統,有不同的響應(例如輸出電壓大小),叫做該系統的頻響;以“頻率”爲橫座標,系統“響應”爲縱座標畫2維座標圖,並把不同頻率點響應的高度(點)用連線連上,由於響應不可能一樣大小,所以連線不會平直,而是曲線

原创 噪聲門小信號誤判問題

什麼是噪聲門?下面一段是摘自網絡上的解釋: Noise Gate Noise Gate 常用於在音頻信號處於低電平時,壓制能聽到而又不想要的噪聲。您可以使用它來移除背景噪音、其他信號來源的交擾以及低電平的雜音,同時還有其他用途。 Nois

原创 Linux Kernel4.9新增的alsa kcontol宏SND_SOC_BYTES_EXT

kcontol爲何?寫過alsa codec驅動的人都很熟悉了。 droidphone前輩的這篇文章也非常詳細: https://blog.csdn.net/droidphone/article/details/12793293 通俗一點

原创 利用重採樣處理設置audio delay的噪音問題

      現代智能電視中都有多種音頻輸出方式,除了喇叭之外,還有Spdif out、HDMI ARC輸出。一般來說,設計時都是排他型輸出,比如選擇spdif out輸出時喇叭會自動靜音或者直接不送音頻數據了。當然也有例外,有的設計是會同

原创 android audiorecord插上耳機錄音由dmic切換到耳機錄音

       板子上帶有一個dmic,和一個adc,不插耳機時audiorecord默認將打開dmic錄音,插上耳機時自動切換到耳機錄音。        這個場景是手機上太常見了,由於是tv和盒子的芯片,默認沒有對這種場景的支持,按照an