Android系統視頻最新進度:音頻更新12節
不好意思,昨天打擾到大家了,推送的那篇文章對提高工作效率有很大幫助,但是群發後變成分享原文樣式,夾雜了一些過時的推廣信息,為了不誤導大家,所以第一時間刪除了,想看的話請自行關注公眾號:L先生說。搜索閱讀
開工大吉,其實我們初七就開工了,但有的同事沒買到火車票,推遲幾天上班,小編忙著發貨等繁瑣事宜,無暇顧及公號更新。多多理解。
春節前更新了3節Android音頻驅動課程,當時在老家,設備落後。用的文字推送,為了方便大家了解進度,這次整理成圖文,梳理到目前為止Android的更新進度。
節前上新3節:
第008節_DAPM的情景分析_構造過程,主講kcontrol,route,path註冊過程情景演示
第009節_DAPM的情景分析_使用過程,主講:
a.tinymix,tinyplay,tinycap殊途同歸,都會調用dapm_power_widgets
b.dapm的核心: complete path
某個widget是否要上電的判斷過程
tinymix調用過程:
以SOC_DAPM_SINGLE("LINPUT1 Switch", WM8960_LINPATH, 8, 1, 0),為例:
snd_soc_dapm_put_volsw
connect = xxx // 根據傳入的val確定
// 把kcontrol要設置的reg,val寫入update
update.kcontrol = kcontrol;
update.widget = widget;
update.reg = reg;
update.mask = mask;
update.val = val;
widget->dapm->update = &update;
dapm_mixer_update_power(widget, kcontrol, connect);
// 找到path並設置connect
path->connect = connect;
// 調用此函數逐個widget進行判斷、上電/關閉
dapm_power_widgets(widget->dapm, SND_SOC_DAPM_STREAM_NOP);
widget->dapm->update = NULL;
tinyplay,tinycap調用過程:
播放/錄音前都會調用 soc_pcm_prepare
soc_pcm_prepare
// stream"s name = Playback or Capture
snd_soc_dapm_stream_event(rtd, stream"s name, SND_SOC_DAPM_STREAM_START)
soc_dapm_stream_event
// 找出每一個widget
// 如果strstr(w->sname, stream) // w->sname中含有Playback or Capture
// w->active = 1
dapm_power_widgets
大家都會調用dapm_power_widgets
dapm_power_widgets
// 對於每一個widget
// power = w->power_check(w); // 確定是否要上電
// 放入不同的鏈表, 以後統一上是或關閉
if (power)
dapm_seq_insert(w, &up_list, true);
else
dapm_seq_insert(w, &down_list, false);
// 關閉down_list上的所有widget
dapm_seq_run(dapm, &down_list, event, false);
// 根據dapm->update設置kcontrol, // update來自tinymix的調用
dapm_widget_update(dapm);
// 打開up_list上的所有widget
dapm_seq_run(dapm, &up_list, event, true);
// 給鏈表中的widget上電或關閉
dapm_seq_run
dapm_seq_run_coalesced
snd_soc_update_bits
第010節_tiny4412音效卡驅動錄音功能調試
安卓視頻錄製初步計劃:
第1季(bootloader)、2季(內核)、3季(init進程和文件系統)、7季(項目實踐)還沒講:因為第12季在實際工作中沒那麼急迫
第4季(Android框架)的部分內容在binder驅動里已經涉及:怎麼使用c/c++/java實現service;剩下的「service組件」以後講解。
第5季已發布binder驅動深度分析;第6季已發布【燈光系統、輸入系統,顯示系統】。
正在錄製音效卡系統之音頻框架(已發布12節),
繼而講藍牙,WIFI, 多媒體和視頻輸出,
然後倒回去講第3季(INIT進程與文件系統)
繼而講解第1、2季、其他驅動;
最後講解第7季(項目實踐)。
為什麼一定要學android系統開發?
1、Android與蘋果IOS是當今兩大移動操作系統,並且Android佔有率更高。源碼開放的Android,不僅僅應用於手機,還可以應用於其他千變萬化的產品之中:物聯網、機器人、工業控制、車聯網等等。你可以暴改Android以適應自己的產品。Nokia放棄Android,它被收購了。黑莓堅持自己的OS,也快完了。Windows也推出Android手機了。那麼你為什麼不選擇Android?
2、Linux是嵌入式行業的第一操作系統,而Android = linux+Android系統框架+Android應用。要求你不僅要掌握linux驅動開發,要想飛得更高,走得更遠,還要掌握Android系統開發。各大公司已經改組了Linux科室:比如中興不再有「Linux底層支持科」,而是去掉了"Linux"改成了「底層支持科」,既負責Linux,還負責Android系統框架。我所了解的這個科室,以前只有10人,現在有40多人(不是在整個公司,而是在某個產品的小部門裡)。
3、我們說的是系統!系統!!系統!!!
不是那些只會點JAVA然後用2、3個月就可以速成的Android APP工程師。2008年、2009年只要會點Android APP就可以拿高工資的時代一去不返了,任何行業,先進者得利;後進者精深才得利,恆得利。
推薦的參考書籍:
1、> 作者:(韓)金泰延、宋亨周、朴知勛、李白、林起永
2、> 作者:林學森
3、> 作者:劉超
真實交易,大家的評價很走心,感謝。
新年新氣象,你要一年比一年好。新的一年,百問網將繼續陪伴大家,共同成長。
公號介紹
韋東山2012年創辦的深圳百問網科技有限公司旗下賬號,長期發布課程進度,嵌入式Linux乾貨。"悅己之作,方能悅人","學嵌入式,就看韋東山視頻"。
※為什麼 Android 要採用 Binder 作為 IPC 機制?
TAG:嵌入式Linux的事 |