白话Android音频系统原理

本文详细介绍了Android音频系统的原理,包括基本原理、初始化、播放和录音流程。在基本原理部分,阐述了AudioRecorder、AudioTrack及AudioFlinger的角色。初始化过程中,AudioFlinger和AudioPolicyService的启动以及AudioPolicyManager的配置至关重要。播放流程中,AudioTrack通过AudioTrackThread提供数据,AudioPolicyService确定播放设备,AudioFlinger处理数据。录音流程中,AudioRecord启动录音线程,AudioFlinger的RecordThread负责数据采集和传输。
摘要由CSDN通过智能技术生成

一、基本原理

  1. 谁来发起(录音和播放)?AudioRecorder,AudioTrack。
  2. 谁来处理(录音和播放)? AudioFlinger!
  3. 怎么处理?AudioPolicyService !
  4. 什么是output?为了便于管理, 把一个设备上具有相同参数的一组播放device组织称为一个output。它描述一些实际支持的设备(有实际硬件)一个output对应一个处理线程thread。

二、初始化准备工作

  1. 从frameworks/av/media/audioserver/main_audioserver.cpp开始,系统启动后,会初始化AudioFlinger和AudioPolicyService。先初始化AudioFlinger,后面AudioPolicyService初始化的时候,会用到AudioFlinger里面的方法。
  2. 初始化AudioPolicyService的时候,实际上创建了一个AudioPolicyManager,主要做3件事:
    a. 加载配置文件 audio_policy.conf (AudioPolicyManager完成
    b. 加载audio policy硬件抽象库(AudioFlinger完成
    c. openOutput(创建一个MixerThread线程与对应的output相关联,output对应着设备。即:将创建的线程添加到
Android凭借其开源,良好的用户体验,高性价比,庞大的应用程序等优势迅速发展起来并保持强劲的发展势头。如今Android智能手机、Android平板电脑等移动产品已走入人们的日常生活,成为人们通讯、娱乐的重要工具。本设计以malata采用RK2918方案的Android平板电脑项目为背景,主要任务是设计和实现Android平板电脑的音频系统,为广大平板用户提供良好的音频体验。 ALSA(Advanced Linux Sound Architecture,高级Linux声音架构)在Linux操作系统上提供了音频和MIDI(Musical Instrument Digital Interface,音乐设备数字化接口)的支持。它的主要特性包括:高效地支持从消费类入门级声卡到专业级音频设备所有类型的音频接口,完全模块化的设计,支持对称多处理和线程安全,对OSS(Open Sound System,开放声音系统)的向后兼容,以及提供了用户空间的alsa-lib库来简化应用程序的开发[1]。基于ALSA的音频系统能够很好的适应硬件的多样性,因此Android设备厂商能够更灵活地根据不同需求选择不同的音频编解码芯片。ALC5625是一款高度集成低功耗高保真的带I2S/PCM接口并具有多路输入输出的音频编解码器,可满足本次设计的各项需求。 基于ALSA的Andorid音频系统拥有一个标准和健全的架构,自上而下由Audio应用程序、Audio Java框架层、Audio本地框架层、AudioFlinger、Audio硬件抽象层、alsa-lib和底层Audio驱动几个部分组成。本文分析音频系统架构的各个层次,并着重阐述ALSA在Android音频系统中的应用以及Audio驱动的详细实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值