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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

干,认识Audio框架还因此发现一个雷

發布時間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 干,认识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框架还因此发现一个雷的全部內容,希望文章能夠幫你解決所遇到的問題。

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