Qualcomm(高通)平台开发系列讲解-音频设备操作流程
本篇将介绍高通平台音频的操作
操作音频设备基本分为三个步骤:
- 设置音频通道
- 设置设备参数
- 读取/写入音频数据
基于高通平台,高通提供了libalsa-inf库来操作音频设备,下面介绍设置音频设备及操作步骤.
一、设置音频通道
高通提供了amix接口来设置音频通道,使用的音频通道如下:
网络下行音频通道:MultiMedia1 Mixer VOC_REC_DL
网络上行音频通道:Incall_Music Audio Mixer MultiMedia1
第一路PCM录音通道:MultiMedia1 Mixer SEC_AUX_PCM_UL_TX
第一路PCM播放通道:SEC_AUX_PCM_RX Audio Mixer MultiMedia1
设置音频通道接口如下,具体使用可参考高通amix.c的使用
struct mixer *mixer_open(const char *device) // /dev/snd/controlC0 设置通道设备节点
void mixer_close(struct mixer *mixer)
struct mixer_ctl *mixer_get_control(struct mixer *mixer, const char *name, unsigned index)
int mixer_ctl_set_value(struct mixer_ctl *ctl, int count, char ** argv)
void mixer_ctl_get(struct mixer_ctl *ctl, unsigned *value)
int mixer_ctl_select(struct mixer_ctl *ctl, const char *value)
二、设置音频设备参数
采样率:8000
通道标识:PCM_STEREO | PCM_OUT | PCM_NMMAP | PCM_MONO
通道数量:1
数据格式:SNDRV_PCM_FORMAT_S16_LE
设备名称:hw:0,0
设置音频设备接口如下,具体使用可参考高通aplay.c/arec.c
void param_init(struct snd_pcm_hw_params *p)
void param_set_mask(struct snd_pcm_hw_params *p, int n, unsigned bit)
void param_set_min(struct snd_pcm_hw_params *p, int n, unsigned val)
void param_set_int(struct snd_pcm_hw_params *p, int n, unsigned val)
int param_set_hw_refine(struct pcm *pcm, struct snd_pcm_hw_params *params)
int pcm_buffer_size(struct snd_pcm_hw_params *params)
int pcm_period_size(struct snd_pcm_hw_params *params)
int param_set_hw_params(struct pcm *pcm, struct snd_pcm_hw_params *params)
三、读写音频设备
音频设备准备完毕后就可以对音频设备进行读写(即播放和录音),主要用到的接口如下:
struct pcm *pcm_open(unsigned flags, char *device)
int pcm_ready(struct pcm *pcm)
int pcm_close(struct pcm *pcm)
int pcm_read(struct pcm *pcm, void *data, unsigned count)
int pcm_write(struct pcm *pcm, void *data, unsigned count)
Qualcomm(高通)平台开发系列讲解-音频设备操作流程相关推荐
- 高通平台开发系列讲解(USB篇)Linux Android USB软件架构
文章目录 一.高通平台USB软件架构 二.USB 设备侧软件组成 2.1.OTG driver 2.2.Device controller driver 2.3.Gadget framework 2. ...
- 高通平台开发系列讲解(外设篇)高通Camera软件架构
文章目录 一.高通Camera软件架构 1.1.Camera App 1.2.Camera Framework 1.3.Camera Service 1.4.Camera Provider 1.5.C ...
- 高通平台开发系列讲解(外设篇)高通平台Camera摄像头驱动移植
文章目录 一.高通平台摄像头软件框架 二.相关代码目录 三.驱动移植 3.1.新增camera节点 3.2.配置相关的GPIO 沉淀.分享.成长,让自己和他人都能有所收获!
- 高通平台开发系列讲解(外设篇)高通平台EMMC适配说明
文章目录 一.EMMC的内部框图说明 二.EMMC 设备树配置 三.EMMC 内核配置 四.EMMC 源码 沉淀.分享.成长,让自己和他人都能有所收获!
- 高通平台开发系列讲解(QMI篇)高通平台QMI介绍
文章目录 一.背景 一.QMI服务初始化 二.QMI CLIENT消息 2.1.消息发送 2.2.消息接收 2.3.消息发送给MODEM 三.QMI SERVER消息 3.1.初始化 3.2.消息分类 ...
- 高通平台开发系列讲解(AI篇)高通神经网络处理引擎 SNPE SDK架构
文章目录 一.SNPE开发环境 二.SNPE SDK 文件结构 三. SNPE架构 四.SNPE运行特性 沉淀.分享.成长,让自己和他人都能有所收获!
- 高通平台开发系列讲解(外设篇)高通Camera用户层移植
文章目录 一.sensor_libs移植 二.chromatix移植 三.device-vendor配置 四.配置Camera属性 沉淀.分享.成长,让自己和他人都能有所收获!
- RK3399平台开发系列讲解(其他篇)1.18、瑞芯微 RK3288 芯片介绍
平台 内核版本 安卓版本 RK3399 Linux4.4 Android7.1 文章目录 Cortex-A17 架构分析 RK3288芯片介绍 Cortex-A17 架构分析 目前,ARM Corte ...
- RKRK3399平台开发系列讲解(其他篇)1.29、查看显示时钟
平台 内核版本 安卓版本 RK3399 Linux4.4 Android7.1 cat /sys/kernel/debug/clk/clk_summary | grep vop 需要关注的显示时钟为: ...
最新文章
- php json字符串返回false,php – json_encode()返回false
- Kotlin 标准库中run、let、also、apply、with函数的用法和区别
- javascript 学习之 数组式的对象
- 笔记本电脑关机后指示灯还亮_汽车仪表常见指示符号之清洗液指示灯,灯亮了怎么办?...
- Android4.4的init进程
- MTK 驱动(60)---Audio驱动开发之音频链路
- 启动白屏处理_App启动优化一顿操作猛如虎
- oj题 根据化学方程式计算摩尔质量
- 【解释】while(~scanf(%d, n))的~的含义~scanf
- JS学习总结(7)——对象
- 知识图谱构建工具_自动构建知识图谱
- 肿瘤(Oncology)生物信息学分析简介
- 等比求和模版,下标从1开始
- MySQLyog的使用
- php如何对mysql加锁_MySQL 加锁处理分析(一)
- [DOS教程----读书笔记]命令全集
- java 数组 取部分_在Java中只获取一部分数组?
- 数据恢复软件有哪些好用又免费的?强推这6款神器
- 【趣学算法】第二章 算法之美(下)
- How to clear queued transactions?