发布时间:2024-08-29 11:01
main_mediaserver.cpp(frameworks/av/media/mediaserver/main_mediaserver.cpp)
main_mediaserver.cpp
包含:
1、添加系统服务
AudioFlinger.cpp (frameworks/av/services/audioflinger/AudioFlinger.cpp)
Threads.cpp (frameworks/av/services/audioflinger/Threads.cpp)
Tracks.cpp (frameworks/av/services/audioflinger/Tracks.cpp)
audio_hw_hal.cpp (hardware/libhardware_legacy/audio/Audio_hw_hal.cpp)
AudioHardware.cpp(device/friendly-arm/common/libaudio/AudioHardware.cpp)
AudioFlinger.cpp
包含:
1、AudioFlinger类声明
2、onTransact函数(用于其他APP通过bind调用的接口)
3、可以提供给其他APP的各种处理函数,如openOutput();openInput()
Threads.cpp (frameworks/av/services/audioflinger/Threads.cpp)
包含:
1、Threads实现的代码,每一个硬件都对应一个线程。
2、包含很多线程类,如playbackThread(播放线程类),RecordThread(录音线程类)。
Tracks.cpp (frameworks/av/services/audioflinger/Tracks.cpp)
包含:
1、Tracks类的声明
AudioFlinger中每一个线程都包含一个.mTracks,它是一个Tracks链表,每一项对应一个APP的AudioTrack。
audio_hw_hal.cpp(硬件抽象层)
包含:
1、定义了一些接口的规范,在厂家向上AudioFlinger提供给调用底层的接口时,必须遵循该规范。
AudioHardware.cpp(厂家提供硬件访问接口)
包含:
厂家提供硬件访问接口,向下访问tinyalsa,向上向AudioFlinger提供硬件访问接口。
AudioPolicyService.cpp (frameworks/av/services/audiopolicy/AudioPolicyService.cpp)
AudioPolicyClientImpl.cpp(frameworks/av/services/audiopolicy/AudioPolicyClientImpl.cpp)
AudioPolicyInterfaceImpl.cpp(frameworks/av/services/audiopolicy/AudioPolicyInterfaceImpl.cpp)
AudioPolicyManager.cpp(frameworks/av/services/audiopolicy/AudioPolicyManager.cpp)
AudioPolicyService.cpp
包含:
1、AudioPolicyService内部用到的函数,不对外提供。
2、AudioPolicyService类声明
AudioPolicyClientImpl.cpp
包含:
1、封装了对AudioFlinger使用。
代表AudioPolicyService是AudioFlinger的一个Client
2、AudioPolicyService类声明
AudioPolicyInterfaceImpl.cpp
包含:
1、onTransact函数(用于其他APP通过bind调用的接口)
2、可以提供给其他APP的各种处理函数。
3、AudioPolicyService类声明
AudioPolicyManager.cpp
AudioTrack.java(frameworks/base/media/java/android/media/AudioTrack.java)
包含:
1、JAVA编写的APP调用AudioFlinger的接口
android_media_AudioTrack.cpp(frameworks/base/core/jni/android_media_AudioTrack.cpp)
包含:
1、JAVA编写的APP调用C程序的JNI
AudioTrack.cpp (frameworks/av/media/libmedia/AudioTrack.cpp)
包含:
1、为APP访问AudioFlinger提供接口,叫做AudioTrack。
2、C++编写的APP----->AudioTrack------>AudioFlinger
2、JAVA编写的APP----JNI------>AudioTrack------>AudioFlinger
AudioSystem.cpp (frameworks/av/media/libmedia/AudioSystem.cpp)
mixer.c
pcm.c
mixer.c
pcm.c