![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
alsa
文章平均质量分 51
aningxiaoxixi
此人很聪明,一看就会,所以不写
展开
-
ffplay音视频同步之视频同步音频
对于音视频同步是有三种方案的,一种是以外部时钟为基准,音频时钟和视频时钟在播放时都以外部时钟为参考系,谁快了就等待,慢了就丢帧;第二种是以视频时钟为基准,音频时钟在播放的过程中参考视频时钟;第三种是以音频时钟为基准,视频时钟在播放的过程中参考音频时钟。由于人体器官对视觉的敏感读没有听觉的灵敏度高,因此为了更好的体验,在音视频同步时一般都是以音频时钟为基准的方案。那是不是说其他两种方案没有用处呢?也不是的,比如说一个只有视频没有音频的的视频文件,在播放的时候就需要以视频为基准了。转载 2023-08-20 23:25:52 · 85 阅读 · 0 评论 -
linux内核 寄存器读写函数writel readl
readl() 从内存映射的 I/O 空间读取数据,readl 从 I/O 读取 32 位数据 ( 4 字节 )。往内存映射的 I/O 空间上写数据,wirtel() I/O 上写入 32 位数据 (4字节)。data:要写入的一个字节的数据.addr:32位I/O 地址。从 I/O 空间读取的数值。addr :I/O 地址。原创 2022-09-17 16:31:26 · 1854 阅读 · 0 评论 -
alsa buffer管理 (appl_ptr hw_ptr更新)
2 用户空间通过mmap的方式往缓冲区中写入数据时, 在mmap方式下, 内核并不知道用户空间何时完成写入了, 因此用户空间完成写入时需要通过某种方式告知内核. alsa提供了ioctl SNDRV_PCM_IOCTL_SYNC_PTR, 供用户空间通知内核更新appl_ptr, 例如tinyalsa中的pcm_sync_ptr采用的就是这种方式. 在内核层,buffer_size:HW buffer的大小,大小为period_size * period_count。HW buffer的硬件逻辑指针(转载 2022-09-17 15:37:45 · 861 阅读 · 0 评论 -
alsa pcm函数调用流程
用户的pcm_read()相当于做从内核缓冲区到用户缓冲区的copy_to_user()。用户的pcm_close()相当于对ASoC的各个驱动模块做trigger(STOP), hw_free()和shutdown()动作。用户的pcm_start()相当于对ASoC的各个驱动模块做prepare()和trigger(START)动作。用户的pcm_open()相当于先对ASoC各个驱动模块startup(),再做hw_params()。pcm_start()栈。pcm_read()栈。转载 2022-09-17 11:23:17 · 1524 阅读 · 0 评论 -
alsa的新理解
1 snd_open 开始分析从 snd_minors[ ]中取出新的file_operations2 snd_register_device_for_dev 通过这个函数 构造出 snd_minors[ ] 这个数组3 一个函数通过 snd_register_device_for_dev 构造出了,控制设备4 一个函数通过 snd_register_device_for_dev 构造出了 pcm设备这个函数会 创建 一个输出设备,一个输入设备......原创 2020-12-09 23:55:28 · 227 阅读 · 0 评论 -
asoc 知识点
triggertrigger的执行会在上层的alsalib调用write的函数触发用户层的write到内核里面都是通过ioctl来做的,这里面会触发trigger函数的执行,等trigger执行完以后,才会真正调用函数把用户层的东西copy到dma分配的空间;tinyalsa1 hal 库 文件操作硬件是依赖 tinyalsa 里面的 pcm.c 里面的函数的2 如何控制 可以参考 里面的 tinymix.c tinycap.c tinycap.c 可以了解到 函原创 2020-11-24 18:30:42 · 353 阅读 · 0 评论 -
alsa DMA 切入点
描述 DMA 的重点参数snd_pcm_substream是pcm中间层的核心,绝大部分任务都是在substream中处理,尤其是他的ops(snd_pcm_ops)字段,许多user空间的应用程序通过alsa-lib对驱动程序的请求都是由该结构中的函数处理。它的runtime字段则指向snd_pcm_runtime结构,snd_pcm_runtime记录这substream的一些重要的软件和硬件运行环境和参数。在声卡的hw_params阶段,snd_soc_platform_driver结构的op原创 2020-11-15 21:37:58 · 623 阅读 · 0 评论 -
pcm_new 调用
pcm_new (一般指的是 platfrom 中的参数段)在这一句被调用ret = component->driver->pcm_new(rtd)从下到上一次被调用soc_new_pcmsoc_probe_link_daisstatic int snd_soc_instantiate_cardsnd_soc_register_card从中可知 pcm_new 在card 初始话的时候被调用...原创 2020-11-15 11:57:31 · 218 阅读 · 0 评论 -
hw_params 被调用流程
索引 ->hw_paramserr = substream->ops->hw_params(substream, params);被调用 snd_pcm_hw_params上面又被snd_pcm_hw_params_usersnd_pcm_kernel_ioctlsnd_pcm_hw_params_old_usersnd_pcm_hw_params_user 会被 pcm_open调用[RK3288][Android6.0] 调试笔记 — 修改录音采样率提示报错问题原创 2020-11-15 11:35:45 · 875 阅读 · 0 评论 -
snd_soc_platform 之 ops:snd_pcm_ops 分析
snd_pcm_ops注意其中的 音频数据流向图 就是 dpam 中 流向图原创 2020-11-14 22:12:51 · 456 阅读 · 0 评论 -
kcontrol 总结
kcontrol 表示一种功能 控制一个或多个寄存器tinymix 可以看出 kcontrol 名字对应的 序号如何使用kcontrol首先 open 打开 dev/snd 里面 控制节点所有的 kcontrol 都会经过 tinyalsa 里面的 control.c 文件中的 snd_ctl_ioctlsnd_soc_dapm_path不需要自己定义,会在注册snd_soc_dapm_route时动态地生成。...原创 2020-11-11 00:04:04 · 752 阅读 · 1 评论 -
alsa 启动
alsa声卡分析alsa-utils调用过程(一)-tinyplayhttps://www.cnblogs.com/linhaostudy/archive/2018/03/07/8515277.htmlAndroid tinyplay与tinycap流程https://blog.csdn.net/u010164190/article/details/103396270PCM的open流程https://blog.csdn.net/qq_30295609/article/details/106497原创 2020-11-02 00:08:09 · 317 阅读 · 0 评论 -
asoc总结 2
1 因为 snd_soc_register_codec snd_soc_register_dai 函数都需要 platform_device 相关数据。所以 在probe 函数中调用codec注意 :1.codec_name = “wm8976-codec”, // 对应驱动 codec 文件.codec_dai_name = “wm8976-iis”, // 对应驱动 codec 文件.cpu_dai_name = “s3c2440-iis”,2原创 2020-10-21 23:49:55 · 236 阅读 · 0 评论 -
asoc 总结 1
ASoC框架分为3部分:platform(用来描述芯片的DAI接口,负责数据传输):含有 DMADAI:snd_soc_dai_driver,用来表示支持哪些格式数据,提供设置格式的函数,启动数据传输数据传输:snd_soc_platform_drivercodec (用来描述音频编解码芯片,含有2部分:DAI接口,控制接口):DAI:snd_soc_dai_driver,用来表示支持哪些格式数据,提供设置格式的函数控制接口:snd_soc_codec_driver读写芯片的原创 2020-10-20 22:46:49 · 317 阅读 · 0 评论 -
切换声音通道流程
5.4 切换声音通道流程A. 在驱动程序中切换:比如: 插上耳麦发生中断, 在中断处理程序中设置声卡让声音从耳机中输出B. 把输出通道的选择权交给android系统驱动程序上报音频拔插事件,该事件为某个device插入或拔出,Android系统需要切换声音通道,过程为(核心文件为frameworks/av/services/audiopolicy/AudioPolicyManager.cpp):(核心函数为 setDeviceConnectionState)a. checkOutputsF原创 2020-09-29 22:50:28 · 1031 阅读 · 0 评论 -
安卓识别耳机插拔事件
5.3 耳麦拔插事件调用流程分析使用input子系统还是使用state dev(uevent)上报拔插操作,取决于config_useDevInputEventForAudioJack配置值,该值为true时使用input子系统, 为false时使用uevent机制,该值在下述文件中定义, 后一个文件会覆盖前一个文件:frameworks/base/core/res/res/values/config.xmldevice/friendly-arm/tiny4412/overlay/framewo原创 2020-09-29 22:12:38 · 523 阅读 · 0 评论 -
ALSA DAPM
kcontrol 介绍kcontrol 结构中包含 一个或多个寄存器值,表示一个功能**kcontrol结构**1 snd_kcontrol 结构体 表示 kcontrol2 snd_kcontrol 结构体 放入 snd_card的 controls 的链表中原创 2020-09-01 07:22:37 · 191 阅读 · 0 评论 -
AudioPolicyService服务
AudioPolicyService服务1 默认的声卡是哪一个?2 声卡中有哪些设备这些都需要 厂家设置设置的方法就是 搞一个配置文件AudioPolicyService服务调用流程图AudioPolicyService服务1 启动就要读取设备文件,因为启动进行设置,所有必须要有一个配置文件为标准2 @ AudioFlinger 不会主动做任何事情@ AudioPolicyService服务 给 AudioFlinger服务 发信息做事情A1 创建实例B1 注册服务原创 2020-08-29 21:41:39 · 266 阅读 · 0 评论 -
安卓audio 解析
audio中 输出传输流程audio中配置文件路径 与其包含 配置信息原创 2020-08-27 22:33:53 · 2095 阅读 · 0 评论 -
route_path分析
原创 2020-06-28 22:46:01 · 870 阅读 · 0 评论 -
ALSA声卡驱动的 DAPM
参考文章ALSA声卡驱动的 DAPMDAPM是Dynamic Audio Power Management的缩写,直译过来就是动态音频电源管理的意思,DAPM是为了使基于linux的移动设备上的音频子系统,在任何时候都工作在最小功耗状态下。DAPM对用户空间的应用程序来说是透明的,所有与电源相关的开关都在ASoc core中完成。用户空间的应用程序无需对代码做出修改,也无需重新编译,DAPM根据当前激活的音频流(playback/capture)和声卡中的mixer等的配置来决定那些音频控件的电源开关被原创 2020-06-27 20:56:28 · 813 阅读 · 0 评论 -
alsa 的 kcontrol
控制 codec原创 2020-06-27 12:58:02 · 309 阅读 · 0 评论 -
asoc 框架
原创 2020-06-26 15:36:41 · 228 阅读 · 0 评论 -
alsa驱动的 operation设置和 设备创建
原创 2020-06-26 11:06:50 · 127 阅读 · 0 评论 -
alsa设备节点解析
声卡是一个card它 可以多个device,device上有 录音和播放原创 2020-06-26 09:46:20 · 1137 阅读 · 0 评论 -
alsa 使用
https://blog.csdn.net/hsl416604093/article/details/83017021?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase原创 2020-06-05 17:30:57 · 301 阅读 · 0 评论 -
alsa框架编写应用层,实现边播放边录音
#include <stdio.h>#include <stdlib.h>#include <alsa/asoundlib.h>snd_pcm_t *open_sound_dev(snd_pcm_stream_t type){ int err; snd_pcm_t *handle; snd_pcm_hw_params_t *hw_params;...原创 2020-02-07 14:47:48 · 2122 阅读 · 8 评论