android audio framework

news2024/11/22 13:20:57

在这里插入图片描述
在这里插入图片描述

linux ALSA

ALSA表示高级Linux声音体系结构(Advanced Linux Sound Architecture)。它由一系列内核驱动,应用程序编译接口(API)以及支持Linux下声音的实用程序组成。

在这里插入图片描述

在这里插入图片描述

  • 最上层是音频应用和声卡服务;
  • ALSA Library:alsa 提高用户空间访问声卡设备标准api
  • ALSA Layer:ALSA 驱动层。ALSA 又可以抽象为ASoc 层。
  • ASoc Layer:和具体平台相关。主要包括音频接口和控制接口两大类(可以简单理解为音频数据流和控制,其他控制也包含对电压管理的支持(DAPM))

术语

名称解释
样本长度(sample)样本是记录音频数据最基本的单位,常见的有8位和16位。
通道数(channel)该参数为1表示单声道,2则是立体声
桢(frame)桢记录了一个声音单元,其长度为样本长度与通道数的乘积
采样率(rate)每秒钟采样次数,该次数是针对桢而言
周期(period)音频设备一次处理所需要的桢数,对于音频设备的数据访问以及音频数据的存储,都是以此为单位。
ASoC–ALSA System on Chip是建立在标准ALSA驱动层上,为了更好地支持嵌入式处理器和移动设备中的音频Codec的一套软件体系。
CodecCoder/Decoder
I2S/PCM/AC97Codec与CPU间音频的通信协议/接口/总线
DAIDigital Audio Interface 其实就是I2S/PCM/AC97
DSPDigital Signal Processor
PCMPulse Code Modulation 一种从音频模拟信号转换成数字信号的技术,区别于PCM音频通信协议
SSISerial Sound Interface
DAPMDynamic Audio Power Management
Mixer混音器,将来自不同通道的几种音频模拟信号混合成一种模拟信号

音频设备

英文名中文名
EARPIECE听筒
Headset耳机(带mic)
Headphone耳机,不带mic
Speaker扬声器
Microphone麦克风
mono单声道
stereo立体声

音频播放流程

在这里插入图片描述

ALSA-Probe的流程

在这里插入图片描述

Tinyalsa pcm_open的调用流程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Ref

Linux音频ASoC架构驱动解析
ALSA驱动框架分析
Android 音频系统

Audio基本概念及处理流程

Linux ALSA音频驱动之一:框架概述
Linux ALSA驱动之二:声卡的创建流程
Linux ALSA驱动之三:PCM创建流程源码分析(基于Linux 5.18)
Linux ALSA驱动之四:Control设备创建流程源码分析(5.18)

Linux ALSA声卡驱动之三:PCM设备的创建 *

Android Audio学习

Linux ALSA 音频系统:物理链路篇

Linux Audio

Linux 音频驱动(一) ASoC音频框架简介
Linux 音频驱动(二) ASoC音频驱动之Platform驱动
Linux 音频驱动(三) ASoC音频驱动之Codec驱动
Linux 音频驱动(四) ASoC音频驱动之Machine驱动
Linux 音频驱动(五) ALSA音频驱动之PCM逻辑设备
Linux 音频驱动(六) ALSA音频驱动之PCM Write数据传递过程

kernel-sound

Android

Android耳机拔插事件流程

对于Headset的插入检测,一般通过jack耳机插座来完成,大概原理是使用带检测机构的耳机插座,将检测脚连到GPIO中断上,耳机插入时,是的检测脚的电平变化,引起中断。通过GPIO的值判断耳机是插入还是拔出。

在Android系统中,有线耳机分两种:

  • 一种带mic,一种不带mic,带mic的耳机被称为Headset,
  • 不带mic的耳机被称为HeadPhone

Uevent

目前使用的耳机插拔事件使用的是UEvent。但是也可以使用InputEvent,这种设置在frameworks/base/core/res/res/values/config.xml中,设置项为

<boolname="config_useDevInputEventForAudioJack">false</bool>

值为false,所以目前kernel是用Uevent来通知应用层耳机插拔的。

什么是Uevent:
  1. 内核通知应用的一种方式
  2. 目前使用socket进行内核和应用的通信
  3. uevent就是一个特殊格式的字符串
  4. 内核发送uevent使用kobject_uevent_env,它还有一个wrapper是kobject_uevent,这个函数使用的比较多

Ref

Android耳机拔插事件流程
Android HDMI audio设备插拔事件
耳机插拔流程 *
Android 耳机插拔流程源码跟踪浅析

CarAudioService

Android汽车服务篇(四) CarAudioService
Android CarAudioFocus详解(一)

car

Android10.0CarAudioZone(一)

audio

Android9.0CarAudio分析之一启动过程
Android9.0CarAudio分析之而AUDIO_DEVICE_OUT_BUS

音频系统

Android 音频

Android-Audio

音频输出设备是如何决定的

Ref

Android9.0AudioPolicy之audio_policy_configuration.xml解析(一)
Android9.0AudioPolicy之audio_policy_configuration.xml解析(二)
配置音频政策 google
Android音频框架之一 详解audioPolicy流程及HAL驱动加载与配置 *
Android音频驱动学习(一) Audio HAL *
Qualcomm Audio HAL 音频通路设置 *
Android音频框架之一 详解audioPolicy流程及HAL驱动加载与配置
Android Audio音频系统之深入浅出
蓝牙电话(hfp)与Android audio hal的关联
android – 蓝牙 bluetooth (五)接电话与听音乐

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1405263.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【就现在这个市场环境,还是别选游戏开发行业了】

就现在这个市场环境&#xff0c;还是别选游戏开发行业了 最近上网闲逛时我发现&#xff0c;一提到“怎样进入游戏开发行业&#xff1f;”&#xff0c; 大部分都是劝退。 劝退的点大致有以下几点&#xff1a; &#x1f7e5; 游戏开发经常需要加班&#xff0c;尤其是项目快要…

如何在Shopee平台上选择LED产品进行销售的步骤和策略

在如今的电商市场中&#xff0c;Shopee平台是一个非常受欢迎的在线销售平台。如果您计划在Shopee上销售LED产品&#xff0c;那么了解如何选择合适的产品是至关重要的。在本文中&#xff0c;我们将为您介绍一些在Shopee平台上选择LED产品进行销售的步骤和策略&#xff0c;以帮助…

防御保护-防火墙

1.防火墙的主要职责&#xff1a; 控制和防护--安全策略&#xff08;本质ACL&#xff09;--防火墙可以根据安全策略来抓取流量之后做出相应的动作 2-4层 2.防火墙分类&#xff1a; 吞吐量&#xff1a;防火墙同一时间处理的数据量 3.防火墙的发展历程 包过滤防火墙 应用代理防…

thinkphp5实战之phpstudy v8环境搭建,解决Not Found找不到路径问题

引言 thinkphp以快速、简约的大道至简的思想广受欢迎&#xff0c;适合开发小型项目。本地环境下&#xff0c;phpstudy v8是一款比较优秀的集成环境软件。部署完项目后&#xff0c;访问的时候傻眼&#xff0c;报错。 解决方案 不要慌&#xff0c;这个是伪静态的原因。选择apach…

【漏洞复现】SpringBlade export-user接口SQL注入漏洞

文章目录 前言声明一、SpringBlade系统简介二、漏洞描述三、影响版本四、漏洞复现五、修复建议 前言 SpringBlade 是一个由商业级项目升级优化而来的微服务架构 采用Spring Boot 2.7 、Spring Cloud 2021 等核心技术构建&#xff0c;完全遵循阿里巴巴编码规范。提供基于React和…

乳糖不耐受人群,多喝牛奶,反而降低糖尿病风险?

撰文 | 宋文法 牛奶是生活中常见的饮品&#xff0c;牛奶含有丰富的营养成分&#xff0c;包括蛋白质、钙、维生素D、维生素B等&#xff0c;牛奶的营养成分可以帮助增强人体的体质&#xff0c;提高免疫力&#xff0c;预防疾病。 在中国&#xff0c;奶制品的消费量远低于西方人口&…

大模型学习与实践笔记(十二)

将RAG生成模型部署到openxlab 平台 代码仓库&#xff1a;https://github.com/AllYoung/LLM4opencv 1&#xff1a;创建代码仓库 在 GitHub 中创建存放应用代码的仓库&#xff0c;其代码大致目录树如下&#xff1a; ├─GitHub repo │ ├─app.py # …

云渲染平台在场景渲染作业中提供的优势

​云渲染平台在场景渲染作业中提供的优势不容小觑&#xff0c;它开启了一种高效、便捷且成本可控的渲染流程。通过利用强大的云端计算资源&#xff0c;艺术家和开发者们可以轻松上传他们的项目&#xff0c;并快速得到高质量的渲染结果。这种技术特别适合处理那些对计算能力要求…

技术浪潮中的职业变革:程序员面临的裁员挑战与应对策略

目录 前言 冲破时空壁垒&#xff1a;探索技术变革的酷时代&#xff01; 逆境成长&#xff1a;一个互联网人战胜失业困境的故事 裁员的双面影响&#xff1a;挑战与机遇 应对裁员潮危机&#xff1a;程序员的超级英雄之路 前言 惊人的新闻传来&#xff0c;一对来自中国的工程师…

leetcode第 381 场周赛最后一题 差分,对称的处理

第 381 场周赛 - 力扣&#xff08;LeetCode&#xff09;最后一题3017. 按距离统计房屋对数目 II - 力扣&#xff08;LeetCode&#xff09; dijkstra超时了&#xff0c;看了灵神的解题方法力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台&#xff0c;其…

头条文章采集ChatGPT4.0改写软件环境配置教程步骤

大家好&#xff0c;我是淘小白~ 下面给大家整理一下&#xff0c;ChatGPT4.0改写软件环境配置教程 下面是我们拿到的环境配置软件&#xff0c;分别是&#xff1a;117版本的谷歌浏览器&#xff0c;谷歌浏览器驱动&#xff0c;notepad&#xff08;用于打开config.ini&#xff0c…

计算机网络-物理层基本概念(接口特性 相关概念)

文章目录 总览物理层接口特性星火模型给出的相关概念解释&#xff08;仅供参考&#xff09; 总览 求极限传输速率&#xff1a;奈氏准则&#xff0c;香农定理&#xff08;背景环境不一样&#xff09; 编码&#xff1a;数据变成数字信号 调制&#xff1a;数字信号变成模拟信号 信…

go和swoole性能比较

开发效率 Go语言是本质上是静态语言&#xff0c;开发效率稍差&#xff0c;但性能更强&#xff0c;更适合底层软件的开发 Swoole使用PHP语言&#xff0c;动态脚本语言&#xff0c;开发效率最佳&#xff0c;更适合应用软件的开发 IO模型 go语言使用单线程eventloop处理IO事件&…

机器学习-numpy

机器学习–numpy Numpy&#xff08;Numerical Python&#xff09;是一个开源的Python科学计算库&#xff0c;用于快速处理任意维度的数组。 Numpy支持常见的数组和矩阵操作。对于同样的数值计算任务&#xff0c;使用Numpy比直接使用Python要简洁的多。 Numpy使用ndarray对象来…

提取文案小助手小程序使用方法?

​很多人经常会说文案提取小程序&#xff0c;今天就来说说提取文案小助手如何将视频转化为文本的&#xff01;如何免费提取视频文案&#xff1a; 视频转换文字使用步骤 步骤一 复制你想提取的短视频链接; 步骤二 打开微信客户端搜索 : 文案提取小程序&#xff0c;或者保存下…

【办公类-22-01】20240123 UIBOT逐一提取CSDN质量分

背景需求&#xff1a; 最近每天传2份Python&#xff0c;发现平均分从73.5降到了72.7。网上搜索一下原因&#xff0c;发现每篇CSDN都有一个评分&#xff08;以下是查分网站&#xff09; https://www.csdn.net/qchttps://www.csdn.net/qc 但是一篇一篇查询&#xff0c;显然太繁…

多线程-线程的等待通知wait、notify

目录 1.什么是线程的等待通知 2.wiat&#xff08;&#xff09;方法 2.1 wait 做的事情: 2.2wait 结束等待的条件: 代码示例&#xff1a; 2.3wait的三种重载方式 2.4 面试问题&#xff1a;wait&#xff08;&#xff09;和sleep&#xff08;&#xff09;之间的区别 3.notify…

CHS_03.2.2.3_1+2.2.5+进程调度的时机、切换与过程、方式

CHS_03.2.2.3_12.2.5进程调度的时机、切换与过程、方式 知识总览进程调度的时机进程调度的方式进程的切换与过程 知识回顾 在这个小节中 我们会继续学习进程调度相关的一系列知识点 知识总览 首先 我们会来回答下 进程调度的时机是什么 什么时候需要进行进程调度 而什么时候又…

docker 搭建mysql集群一主一从,两台机器

一、准备两条机器&#xff0c;分别为IP1和IP2&#xff0c;其中IP1为主,IP2为从 二、在两台机器上分别拉取mysql镜像 docker pull mysql:8.0.29三、在home目录下新建目录&#xff0c;分别为/home/mysql/data,/home/mysql/conf 1、在IP1主机下的/home/mysql/conf目录下新建my.cn…

日期处理第四篇(终)- Java日期时间处理大总结

文章目录 日期时间概念通用标准日期字段解析国际化的日期格式 日期的实战第一个问题&#xff1a;日期常用时间操作第二个问题&#xff1a;时区的问题时区概念时区的处理ZoneID的使用 ZoneOffset的使用让人恼火的夏令时 第三个问题&#xff1a;MySQL存储时间用什么类型&#xff…