嵌入式Android音频系统(三)Android音频系统涉及的文件

发布时间:2024-08-29 11:01

本专栏将对Android音频系统进行更细致的阐述,同时这些也是我的学习笔记,如有错误欢迎大家在评论区批评指正,谢谢大家。

本专栏的学习资料来源:

本专栏的学习资料主要来自韦东山老师的Android音频系统,需要完整资料的同学,可前往韦东山老师课程观看,支持正版

一、涉及系统服务的文件:

1.1 添加系统服务文件:

main_mediaserver.cpp(frameworks/av/media/mediaserver/main_mediaserver.cpp)

main_mediaserver.cpp
包含:
1、添加系统服务

1.2 系统服务一:AudioFlinger : (将应用程序的声音数据传给播放设备)

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提供硬件访问接口。

1.3 系统服务二:AudioPolicyService: (选择播放设备)

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

二、应用程序APP所用文件:

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)

三、Tinyalsa所用文件:

mixer.c
pcm.c

mixer.c
pcm.c

文件示意图

嵌入式Android音频系统(三)Android音频系统涉及的文件_第1张图片

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号