Android Audio 1:Android Audio概述

注:本系列开始的一些文章主要是以翻译Google官方的文档为主。

1. Android Audio

Android的音频HAL(硬件抽象层)连接着更上层的, 在android.media包中的音频专属的API和更下层的驱动与硬件,粗略的分,可以将HAL分为一层,用户空间和内核空间分一层。
这里写图片描述

本系列主要讲述Audio的实现以及提高性能的一些tips.

2. Audio架构及代码分布

Android audio架构定义了audio是如何实现的,同时也指明这个实现涉及到的相关代码。

Android audio架构图:
这里写图片描述

下面简单介绍一下这个架构图:

  • Application framework
    这部分包括App的代码,App使用android.media中的API来和audio硬件交互。在内部,App是通过JNI调用对应的native代码。

  • JNI
    Framework的api需要通过JNI调用到更下层的实现。是一个中介的作用。JNI的代码位于:frameworks/base/core/jni 和 frameworks/base/media/jni.

  • Native framework
    它提供和Framework相对应的本地实现,通过调用Binder代理和media server交互。代码位于:frameworks/av/media/libmedia

  • Binder IPC
    通过Binder跨进程和media server交互。Binder Proxy一般是以I开头的文件。代码位于:frameworks/av/media/libmedia

  • Media server
    包括AudioFlinger和AudioPolicy, 它们是真正直接和HAL打交道的服务,代码位于:frameworks/av/services/audioflinger
    frameworks/av/services/audiopolicy

  • HAL
    HAL定义了标准的接口,必须实现这些接口才能让Audio正常工作起来。接口定义文件:
    hardware/libhardware/include/hardware/audio.h

  • Kernel driver
    Driver连接着HAL和硬件,厂商可以使用ALSA, OSS或者自定义的driver。

  • Android native audio based on Open SL ES
    这部分在结构图中没有展示出来,这部分API是Android NDK的一部分,它的结构位置和android.media相同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值