音频hal层总结+frameworks 概要
第一部分
三个文件,其中所有类,都为根类.文件地址:
1:Audio.h 有四个类
①.audio_stream_out: 主要有四个成员函数: *get_latency set_volume write get_render_position 并且包含: struct audio_stream common;
②. audio_stream_in:主要有三个成员函数: set_gain(调音) read get_input_frames_lost
函数getInputFramesLost,调用checkRecordThread_l获取录音线程,然后调用线程的getInputFramesLost函数。
并且包含: struct audio_stream common;
③. struct audio_module { struct hw_module_t common; };
④. audio_hw_device 包含很多成员函数
2: audio_effect.h 音效文件先不表.
3: audio_policy.h 策略管理
①. audio_policy:
②. audio_policy_service_ops
③. typedef struct audio_policy_module { struct hw_module_t common;} audio_policy_module_t;
④. audio_policy_device:
第二部分: STUB(模拟测试)程序
文件目录: 两个文件
1: audio_hw.c
2: audio_policy.c
这两个程序,其实就是两个Stub(模拟测试)程序. 我们hal层可以参照来写.
第三部分:兼容2.3以前的程序 文件目录:
1: AudioSystemLegacy.h
从namespace来看,确实4.0以后可能不用到. Using 使用名字空间表示以下代表在status_t 和 AudioParameter空间可见..
2: AudioHardwareBase.h
3:AudioHardwareInterface.h
有三个类, AudioStreamOut AudioStreamIn AudioHardwareInterface
例AudioStreamIn 成员函员包括以下
其中Read 和 Write 函数是最关键的了.
4: AudioPolicyInterface.h
5: AudioPolicyManagerBase.h
上面两个都是音频软硬件策略文件了.
功能如: 可以看出包括软硬件的策略管理.
第三部分之二(兼容2.3之前代码) 文件路径:
从以下文件名可以知道程序功能:
以前的主程序,主要分为stub hw_hal a2dp policy 等四大块功能.
兼容的方法为如下:
/*
兼容以前的设计,4.0实现一个中间层:hardware/libhardware_legacy/audio/audio_hw_hal.cpp,
结构与其他的audio_hw.c大同小异,差别在于open方法:
[cpp] view plaincopystatic int legacy_adev_open(const hw_module_t* module, const char* name,
hw_device_t** device)
{
......