原创 DAPM之六:dapm機制深入分析(下)

dapm觸發時的入口函數是dapm_power_widgets,稍後詳細分析這個函數,這裏僅說其作用:檢查每個dapm widget,如果該widget處在一條complete paths中,則power up這個widget,否則pow

原创 PCM data flow - 4 - ASoC platform driver

概述中提到音頻Platform驅動主要作用是音頻數據的傳輸,這裏又細分爲兩步: ·          把音頻數據從dma buffer通過dma操作搬運到cpu_dai FIFO,這部分驅動用snd_soc_platform_drive

原创 PCM data flow - 7 - Frame & Period

後面章節將分析 dma buffer 的管理,其中細節需要對音頻數據相關概念有一定的瞭解。因此本章說明下音頻數據中的幾個重要概念: Sample:樣本長度,音頻數據最基本的單位,常見的有 8 位和 16 位; Channel:聲道數,分

原创 DAPM之八:stream domain觸發過程分析

這兩天在查一個bug,結果bug沒有完美解決,關於stream domain和stream event的觸發過程倒是跟了個遍。記於此,也好慰告《DAPM之四:dapm widget events》大坑的在天之靈。 另外,以前的DAPM系列

原创 XRUN DEBUG

當遇到聲音卡頓時,一般是遭遇xrun了,調試的時候可以通過alsa提供的xrun_debug接口來獲取更多有用的信息,幫助定位問題。 原文:http://www.alsa-project.org/main/index.php/XRUN_D

原创 Qualcomm Audio HAL 音頻通路設置

1. 音頻框圖概述 | Front End PCMs | SoC DSP | Back End DAIs | Audio devices | ************* PCM0 <--

原创 PCM data flow - 6 - 聲卡和PCM設備的建立過程

前面幾章分析了Codec、Platform、Machine驅動的組成部分及其註冊過程,這三者都是物理設備相關的,大家應該對音頻物理鏈路有了一定的認知。接着分析音頻驅動的中間層,由於這些並不是真正的物理設備,故我們稱之爲邏輯設備。 PCM邏

原创 AVS、MPEG-2、H.264 標準文檔

幾年前,做過一些 AVS、H.264 的編解碼工作,收集了一點標準文檔及開源代碼。這些我都分享在前一個博客:http://sep.blog.chinaunix.net,由於該博客的文件分享都失效了,因此有不少童鞋找到這裏聯繫上我。 爲了

原创 [HOWTO]: Linux/Android常用調試工具

本文介紹Linux/Android一些常用的調試工具及其使用說明,作爲備忘,持續更新中。 注意:大部分都不是本人原創,是從各地方蒐集而來,原作者也未一一追溯,所以沒有出處說明,如有冒犯,請評論或私信,我會盡快修改。 FIQ-Debug

原创 PCM data flow - 3 - ASoC codec driver

上一章提到codec_drv的幾個組成部分,下面逐一介紹,基本是以內核文檔Documentation/sound/alsa/soc/codec.txt中的內容爲脈絡來分析的。codec的作用,在概述中有說明,本章主要羅列下codec d

原创 PCM data flow - 5 - ASoC machine driver

章節ASoC codec driver和ASoC platform driver介紹了codec、platform驅動,但僅有codec、platform驅動是不能工作的,需要一個角色把codec、codec_dai、cpu_dai、p

原创 漫談邏輯思維

先看一道邏輯推理題: 你來到兩道門口,一道是天堂之門, 一道是地獄之門 。門口都有一個守衛,只知道守衛一個只說假話,一個只說真話。現在你只有一次提問機會,只向一個守衛問一個問題,這個守衛對你的問題,只給出“是”或者”不是“的答案。請問怎麼

原创 自旋鎖spinlock使用總結

如果被保護的共享資源只在進程上下文和軟中斷上下文訪問,那麼當在進程上下文訪問共享資源時,可能被軟中斷打斷,從而可能進入軟中斷上下文來對被保護的共享資源訪問,因此對於這種情況,對共享資源的訪問必須使用spin_lock_bh和spin_un