Creating codec to codec dai link for ALSA dapm
大多数情况下,音频流始终从CPU到编解码器,因此你的系统将如下所示:---------          ---------
|         |  dai   |         |CPU    ------->    codec
|         |        |         |---------          ---------
如果你的系统如下所示:---------|         |codec-2|         |---------|dai-2|----------          ---------
|          |  dai-1 |         |CPU     ------->  codec-1
|          |        |         |----------          ---------|dai-3|---------|         |codec-3|         |---------
假设codec-2是一个蓝牙芯片,而codec-3连接到扬声器,你有一个下面的场景:codec-2将接收音频数据,用户想要通过编解码器-3播放该音频而不涉及CPU。上述情况是应该使用编解码器到编解码器连接的理想情况。你的dai_link应如下所示在您的计算机文件中:/** this pcm stream only supports 24 bit, 2 channel and* 48k sampling rate.*/
static const struct snd_soc_pcm_stream dsp_codec_params = {.formats = SNDRV_PCM_FMTBIT_S24_LE,.rate_min = 48000,.rate_max = 48000,.channels_min = 2,.channels_max = 2,
};{.name = "CPU-DSP",.stream_name = "CPU-DSP",.cpu_dai_name = "samsung-i2s.0",.codec_name = "codec-2,.codec_dai_name = "codec-2-dai_name",.platform_name = "samsung-i2s.0",.dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF| SND_SOC_DAIFMT_CBM_CFM,.ignore_suspend = 1,.params = &dsp_codec_params,
},
{.name = "DSP-CODEC",.stream_name = "DSP-CODEC",.cpu_dai_name = "wm0010-sdi2",.codec_name = "codec-3,.codec_dai_name = "codec-3-dai_name",.dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF| SND_SOC_DAIFMT_CBM_CFM,.ignore_suspend = 1,.params = &dsp_codec_params,
},
Above code snippet is motivated from sound/soc/samsung/speyside.c.注意“params”回调,它让dapm知道这个dai_link是编解码器连接的编解码器。在dapm核心中,在cpu_dai回放小部件和用于回放路径的codec_dai捕获小部件之间创建路由,反之亦然,对于捕获路径。为了使上述路由被触发,DAPM需要找到有效的端点,该端点可以是分别对应于回放和捕获路径的宿或源小部件。为了触发这个dai_link小部件,可以创建一个用于扬声器放大器的精简编解码器驱动程序,如wm8727.c文件中所示,它为设备设置了适当的约束,即使它不需要控制。确保命名相应的cpu和编解码器播放,并分别捕获以“播放”和“捕获”结尾的dai名称,因为dapm核心将根据名称链接并为这些dais供电。请注意,在当前设备树中,无法将dai_link标记为编解码器的编解码器。但是,它将来可能会改变。

ALSA DAPM创建codec到codec的dai连接相关推荐

  1. Linux ALSA声卡驱动之四:Codec 以及Codec_dai

    ALSA声卡驱动: 1.Linux ALSA声卡驱动之一:ALSA架构简介和ASOC架构简介 2.Linux ALSA声卡驱动之二:Platform 3. Linux ALSA声卡驱动之三:Platf ...

  2. Linux ALSA音频系统:platform,machine,codec

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_41965270/arti ...

  3. 【转】C#调用ADOX创建Access数据文件后关闭连接

    因为公司要做一个导库的功能,需要用ADOX创建Access将Oracle中的数据倒出来. 事情倒是挺简单的,但是生成之后才发现,除非关掉服务,否则Access进程一直关闭!纠结了一晚上.最后终于在以为 ...

  4. 电脑摄像头未能创建连接服务器,电脑提示未能创建视频预览,请检查设备连接的原因及解决办法...

    电脑提示"未能创建视频预览,请检查设备连接"的原因及解决办法 发布时间:2012-05-29 10:49:26   作者:佚名   我要评论 不知道大家有没有遇到这样的情况,当打开 ...

  5. linux 创建wifi 热点_Linux_ubuntu14.04怎么建立wifi热点?,创建的热点手机也是可以连接 - phpStudy...

    ubuntu14.04怎么建立wifi热点? 创建的热点手机也是可以连接的,这里将分享两个方法 一,kde-nm-connection-editor工具开启热点 在ubuntu软件中心搜索kde nm ...

  6. PC上摄像头未能创建视频预览,请检查设备连接的解决办法

    PC上摄像头未能创建视频预览,请检查设备连接的解决办法 摄像头打开不了,但是在别人电脑可以打开,提示 ================================================= ...

  7. 亚马逊云创建Aws EC2示例+用Xshell7连接登录Aws+设置允许使用root登录

    在学Linux,想着搞个服务器来玩玩,发现亚马逊云可以弄免费的服务器,跌跌撞撞才了不少坑,最后给弄好了,这里记录一下我的创建Aws EC2示例+用Xshell7连接登录Aws+设置允许使用root登录 ...

  8. 如何在mysql中创建连接_如何在MySQL中创建新用户并开启远程连接访问?

    如何在MySQL中创建新用户并开启远程连接访问? 发布时间:2020-05-21 14:55:19 来源:亿速云 阅读:176 作者:鸽子 下面由mysql教程给大家介绍MySQL创建新用户并开启远程 ...

  9. [转] Linux ALSA声卡驱动之三:component、dai、codec以及platform之间的关系

    版权声明:本文为CSDN博主「MOON20704」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/moonli ...

最新文章

  1. html 重置画布坐标系,html5清空画布方法(三种)
  2. UVa10905 - Children's Game(贪心算法)
  3. 设置文本区域大小_数据验证基本设置技巧
  4. 在数学空间中,物理分辨率可能失去了意义(behind the paper)
  5. 【今日CS 视觉论文速览】 24 Jan 2019
  6. 使用 Pandas 的 to_excel() 方法来将多个 csv 文件合并到一个 xlsx 的不同 sheets 内
  7. linux命令行快捷命令及vim常用快捷命令
  8. POI设置EXCEL单元格格式为文本、小数、百分比、货币、日期、科学计数法和中文大写...
  9. 阿里云云计算 51 在线实验--安全中心初体验
  10. 计算机操作系统主要特征,计算机操作系统的最基本特征是什么
  11. 局域网电脑屏幕桌面监控怎么样
  12. C++入门教程(23)深度优先,广度优先(连连看判断是否可以消除)
  13. 浏览器中performance的基本使用
  14. java 基础: 一些稀奇古怪的好东西总结 丰富知识面
  15. 辛弃疾 青玉案·元宵赏析
  16. 联邦学习笔记-《Federated Machine Learning: Concept and Applications》论文翻译个人笔记
  17. 微信公众平台开发之基于百度 BAE3.0 的开发环境搭建(MyEclipse + SVN)
  18. Spring Cloud底层原理以及项目实战分析
  19. 破开C语言暗夜的第二道光 —— 数据与数据类型(1)
  20. MATLAB 中的调用C语音DLL 库

热门文章

  1. cordova构建项目命令小结
  2. RAID0、RAID1、RAID0+1、RAID5原理介绍
  3. A - A Dangerous Maze
  4. 双线性插值算法实现和opencv、matlab结果不一致问题
  5. 伟福6000微型计算机,伟福6000仿真软件
  6. 调度失败:执行器地址为空_三千字带你搞懂XXL-JOB任务调度平台
  7. submit和button的区别
  8. c语言中输入大数,如何使用C语言实现输入10个数按从大到小的顺序排序输出
  9. 网关 跨域_好文推荐:微服务网关实战—Spring Cloud Gateway
  10. django 笔记3