android音频驱动工程师,4.Android音频驱动(底层1)
1.介绍
Android使用的音频驱动库是tinyalsa,所以后面的说明都是基于驱动程序与tinyalsa的。
2.编译
编译出tinyalsa应用程序
$ mmm external/tinyalsa/
$ cp out/target/product/tiny4412/symbols/system/bin/tiny* /mnt/hgfs/Desktop/
生成的文件在out/target/product/tiny4412/symbols/system/bin/目录下。
然后可以将生成的文件拷贝到SD卡中:
$ ls /mnt/media_rw/sd_external/images/
Android
FriendlyARM.ini
Linux
Superboot4412.bin
UbuntuCore
tinycap
tinymix
tinypcminfo
tinyplay
在Android系统中,如果出现:
mkdir failed for share, Read-only file system
解决办法为:
$ su
$ mount -o remount /system
之后,就可以将文件拷贝到Android中了。
$ mkdir /share
$ cp /mnt/media_rw/sd_external/images/tiny* /share
$ cd /share
$ ./tinyplay
Usage: ./tinyplay file.wav [-D card] [-d device] [-p period_size] [-n n_periods]
要注意,使用tinyplay的时候,最好查看一下要播放的文件的格式,我是用过cooledit制作音频文件,发现是不符合tinyplay格式要求的。
需要注意的是如下内容:
音频文件格式
按照红色划分,主要是根据分析tinyplay.c源码分析出来的。
可以看到数据组织格式为:
数据
意义
备注
0x0001
audio_format
音频格式
0x0002
num_channels
左右2个声道
0x0000ac44
sample_rate
采样速率为44100
0x0002b110
byte_rate
176400
0x0004
block_align
4
0x0010
bits_per_sample
16bit
tinyplay是支持16bits per sample,2声道。我在cooledit上报错主要原因是这里不正确。
播放、录制音频
$ ./tinyplay 1.wav
Playing sample: 2 ch, 44100 hz, 16 bit
$ ./tinycap 2.wav
Capturing sample: 2 ch, 44100 hz, 16 bit
^CCaptured 241664 frames
经过验证,在Tiny4412开发板上,播放与录制音频都能成功。
android音频驱动工程师,4.Android音频驱动(底层1)相关推荐
- 嵌入式linux驱动工程师面试,嵌入式Linux驱动工程师/BSP开发工程师面试笔试题集锦...
以下题目可能与原题目有差入,但力争使题目与原题目接近. [一.来自Q群友] 1. linux内核里面,内存申请有哪几个函数,各自的区别? 2. IRQ和FIQ有什么区别,在CPU里面是是怎么做的? 3 ...
- android面试软件工程师,华为ANDROID软件工程师面试经验
面试过程: 首先他让我简单介绍一下自己,我介绍了本科和硕士期间分别是什么专业,具体学习了哪些方向的内容,又讲了一下中间的工作经历.然后他问我对算法有什么了解,能不能挑一种熟悉的算法解释一下原理.我正好 ...
- Android音频架构工程师开篇引言
Android音频架构师 目的 风格 受众 文章结构 更新进度 目的 写这样一个专栏的初衷,是因为本人在2019年上半年入职目前这家公司,最初入职的职位是驱动工程师,一开始从事的内容也都是驱动这一块的 ...
- linux/android驱动工程师面试相关内容总结
理论的东西不常用时就会慢慢的被遗忘,但是找工作就是一个如何让别人相信自己的过程,理论知识就是一个非常重要的途径. 一次次机会在错失,每次想找工作时,刷一下简历就去面试了,一次次因为理论被鄙视,也该长长 ...
- android4.2 音频模块启动分析,Android 音频模块学习小结
现在移动端已不仅仅局限于文本.图片这些 pc 平台上的常见信息类型,语音的使用愈见频繁,于是前段时间萌生了个想法:如果在移动端对语音内容做处理,提取特征出来构建关键词库是否可以对这些语音进行分类.搜索 ...
- Android/linux从usb声卡获取音频(使用libusb库)----环境,lsusb命令的介绍(一)
Android/linux从usb声卡获取音频(使用libusb库)---环境,lsusb命令的介绍(一) Android/linux从usb声卡获取音频(使用libusb库)---设备 ...
- Android 9 Audio系统笔记:音频路由实现——从AudioTrack到audiohal
目录 一.动态路由的初始化 1.获取路由策略 2.向AudioPolicyManager注册路由策略 二.动态路由的路由流程,以AudioTrack创建为例 创建AudioTrack的路由选择 如何定 ...
- Android深度探索(卷1)HAL与驱动开发 第四章 源代码的下载和编译 读书笔记
Android深度探索(卷1)HAL与驱动开发 第四章 源代码的下载和编译 读书笔记 本章学习了使用git下载两套源代码并搭建两个开发环境.分别为Android源代码和Linux内核源代码.A ...
- 【Android RTMP】音频数据采集编码 ( FAAC 编码器编码 AAC 音频采样数据 | 封装 RTMP 音频数据头 | 设置 AAC 音频数据类型 | 封装 RTMP 数据包 )
文章目录 安卓直播推流专栏博客总结 一. FAAC 编码器编码 AAC 音频采样数据 二. 封装 RTMP 音频数据头 三. 封装 RTMP 音频数据类型 四. 拷贝 AAC 音频数据到 RTMPPa ...
- 【Android RTMP】音频数据采集编码 ( FAAC 编码器编码 AAC 音频解码信息 | 封装 RTMP 音频数据头 | 设置 AAC 音频数据类型 | 封装 RTMP 数据包 )
文章目录 安卓直播推流专栏博客总结 一. FAAC 编码器编码 AAC 音频解码信息 二. 封装 RTMP 音频数据头 三. 封装 RTMP 音频数据类型 四. 拷贝 AAC 音频数据到 RTMPPa ...
最新文章
- Linux常用压缩与解压缩命令
- 一般筛法求素数+快速线性筛法求素数
- 【python教程入门学习】学习Python可以做什么
- 行业洞见 | 一文了解自动驾驶汽车
- 025_CSS框模型概述
- Siamese Network (应用篇1) :孪生网络特征用于图像匹配 ICPR2016
- MVC 3.0 在各个版本IIS中的部署
- matlab2017b修改mesh的着色方案
- Spring事务配置方式(一) 拦截器方式配置
- 2017杭州云栖大会FAQ(持续更新中)
- 微信linux 下载文件夹,把Windows下微信文件夹复制到Deepin-WeChat目录以更新微信
- redis集群原理面试回答
- RAID环境中增加容量-在线扩容
- [面试]HR最常用的20个面试问题及答案
- 计算机思维导论raptor实验报告,计算机基础实验报告Raptor.pdf
- 这些年,这些ACM大佬-吴作凡访谈
- 安卓txt极简记事本文件保存内部存储无广告
- 我的java开发总结
- 【RK3288 Android 7.1 / KEN】双屏异显流程
- ajax自动加载blogjava和博客园的rss
热门文章
- netty报错LEAK: ByteBuf.release() was not called before it‘s garbage-collected.的解决方法
- 金庸走过,留给马云和阿里巴巴一个“江湖”
- jabref java_Jabref安装及使用教程
- 六线小县城实录美食篇
- 我是不是该安静的走开
- 变额年金(一、 递增年金)
- js实现页面视频监控全屏
- 计算机怎么通电启动,电脑通电自动开机怎么设置
- Student‘s t分布
- 分子生物学中常用数据库