音频hal层总结+frameworks 概要

本文详细介绍了Android音频框架的各个部分,包括HAL层的音频流、策略管理、兼容旧版代码、ALSA管理以及Framework层的结构。重点分析了音频流的处理、ALSA设备文件结构以及不同线程在音频播放和录音中的角色。此外,还探讨了AudioFlinger作为核心组件如何管理和协调音频数据流。
摘要由CSDN通过智能技术生成

音频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) 

{  

    ...... 

 

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值