生活随笔
收集整理的這篇文章主要介紹了
干,认识Audio框架还因此发现一个雷
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我們最近出了一個問題,我們點擊播放音樂,然后再點擊停止播放的時候,喇叭還會輸出一段雜音后喇叭才會停止輸出。
經過排查發現,在代碼里面就做了這個功能
代碼在AudioFlinger.h?里
frameworks/av/services/audioflinger/AudioFlinger.h
為啥有這個功能?
我咨詢了一個大佬,是這樣回復的
這個操作應該是做來解決一直開關導致的po音的 看看有沒有數據幀的callback在停的時候有沒有再被調用,你關了3S秒是有可能有popo音的
再聲明下,這個 3s 的時間是Google默認設定的時間,如果是做音頻的同學,可以關注一下這個特性,而且是自己的產品的話,需要根據自己的要求進行修改。
來一張audio框架圖片
Audio代碼位置
AudioTrack.java
framework/base/media/java/com/android/media/AudioTrack.javaandroid_media_track.cpp
framework/base/core/jni/android_media_track.cppMemoryHeapBase
framework/base/libs/binder/MemoryHeapBase.cppMemoryBase.h
framework/base/include/binder/MemoryBase.hAudioTrack.cpp
framework/base/libmedia/AudioTrack.cppaudio_track_cblk_t聲明
framework/base/include/private/media/AudioTrackShared.haudio_track_cblk_t定義
framework/base/media/libmedia/AudioTrack.cppMain_MediaServer.cpp
framework/base/media/mediaserver/Main_MediaServer.cppAudioFlinger.cpp
framework/base/libs/audioFlinger/AudioFlinger.cppAudioHardwareInterface.h 不同廠商的HAL位置會不同
hardware/libhardware_legacy/include/hardware_legacy/AudioHardwareInterface.hAudioMixer.cpp
framework/base/libs/audioflinger/AudioMixer.cppAudioSystem.h
framework/base/include/media/AudioSystem.hAudioSystem.cpp
framework/base/media/libmedia/AudioSystem.cppAudioPolicyInterface.h
hardware/libhardware_legacy/include/hardware_legacyAudioPolicyManagerBase.cpp
framework/base/libs/audioflinger/AudioPolicyManagerBase.cppAudioService.java
framework/base/media/java/com/android/media/AudioService.javaAndroid_media_AudioSystem.cpp
framework/base/core/Jni/Android_media_AudioSystem.cpp
主要要關注audioflinger和audiopolicy這兩個服務
再看看一些調用關系的圖片
AudioTrack
AudioTrack屬于Audio系統對外提供的API接口類,在java層和native層都有對應類。
AudioFlinger?
AudioFlinger是audio的核心,AudioTrack的數據需要經過AudioFlinger進行混音等處理,這里的數據最終會寫入到Audio 的HAL層。
audioFlinger和audiopolicy實例化
AudioFlinger::instantiate();
AudioPolicyService::instantiate();
AudioPolicy
AudioFlinger控制的是輸入和輸出,AudioPolicyService控制著整個音頻系統,所以AudioPolicy創建完成后,音頻系統也就開始工作了。
我們在很多地方看到有資料說的,AudioPolicy是音頻系統的策略管理系統,也就是這個意思。
推薦閱讀:
? ??專輯|Linux文章匯總
? ??專輯|程序人生
? ??專輯|C語言
嵌入式Linux
微信掃描二維碼,關注我的公眾號?
總結
以上是生活随笔為你收集整理的干,认识Audio框架还因此发现一个雷的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。