首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux ALSA声卡驱动之二:声卡的创建

一、结构体struct snd_card: 1.1. snd_card是什么: snd_card可以说是整个ALSA音频驱动最顶层的一个结构,整个声卡的软件逻辑结构开始于该结构,几乎所有与声音相关的逻辑设备都是在...第二步,创建声卡的芯片专用数据: 声卡的专用数据主要用于存放该声卡的一些资源信息,例如中断资源、io资源、dma资源等。...irq %i", card->shortname, chip->ioport, chip->irq); snd_card的driver字段保存着芯片的ID字符串,user空间的alsa-lib...通常,alsa-driver的已经提供了一些常用的部件的创建函数,而不必直接调用snd_device_new(),比如: PCM ---- snd_pcm_new() RAWMIDI --...三、snd_card_create(): 这个接口在新的Linux内核里面可能找不到,这里我们主要是学习思想! snd_card_create()在/sound/core/init.c中定义。

84810

Linux ALSA声卡驱动之五:移动设备中的ALSA(ASoC)

一、ASoC的由来: ASoC--ALSA System on Chip ,是建立在标准ALSA驱动层上,为了更好地支持嵌入式处理器和移动设备中的音频Codec的一套软件体系。...在ASoc出现之前,内核对于SoC中的音频已经有部分的支持,不过会有一些局限性: Codec驱动与SoC CPU的底层耦合过于紧密,这种不理想会导致代码的重复,例如,仅是wm8731的驱动,当时Linux...ASoC不能单独存在,他只是建立在标准ALSA驱动上的一个它必须和标准的ALSA驱动框架相结合才能工作。...所有的Codec驱动都要提供以下特性: Codec DAI 和 PCM的配置信息; Codec的IO控制方式(I2C,SPI等); Mixer和其他的音频控件; Codec的ALSA音频操作接口; 必要时...ASoC的工作机理,必须要理解这一系列数据结构之间的关系和作用,下面的关系图展示了ASoC中重要的数据结构之间的关联方式: 图4.1 Kernel-2.6.35-ASoC中各个结构的静态关系 ASoC把声卡实现为一个

48510
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

    中的PCM中间层: ALSA已经为我们实现了功能强劲的PCM中间层,自己的驱动中只要实现一些底层的需要访问硬件的函数即可。...每个声卡最多可以包含4个pcm的实例,每个pcm实例对应一个pcm设备文件。pcm实例数量的这种限制源于linux设备号所占用的位大小,如果以后使用64位的设备号,我们将可以创建更多的pcm实例。...,这个回调函数会在声卡的注册阶段被调用。...snd_pcm_set_ops 设置操作该pcm的控制/操作接口函数,参数中的snd_pcm_ops结构中的函数通常就是我们驱动要实现的函数 snd_card_register 注册声卡,在这个阶段会遍历声卡下的所有逻辑设备...,并且调用各设备的注册回调函数,对于pcm,就是第二步提到的snd_pcm_dev_register函数,该回调函数建立了和用户空间应用程序(alsa-lib)通信所用的设备文件节点:/dev/snd/

    72420

    ALSA声卡驱动的DAPM(二)-建立过程

    一、创建widget:snd_soc_dapm_new_controls: snd_soc_dapm_new_controls函数完成widget的创建工作,并把这些创建好的widget注册在声卡的widgets...power_check设置完成后,需要设置widget所属的codec、platform和context,几个用于音频路径的链表也需要初始化,然后,把该widget加入到声卡的widgets链表中: 1...3 ...... 4 5 return 0; 6 } snd_soc_dapm_add_path函数是整个调用链条中的关键,我们来分析一下:(注意linux3.10.28...代码没有相应的snd_soc_dapm_add_path函数,在linux3.12才有设计snd_soc_dapm_add_path函数) 1 static int snd_soc_dapm_add_path...到这里为止,我们为声卡创建并初始化好了所需的widget,各个widget也通过path连接在了一起,接下来,dapm等待用户的指令,一旦某个dapm kcontrol被用户空间改变,利用这些连接关系,

    3.5K50

    Linux音频驱动-OSS和ALSA声音系统简介及其比较

    概述 昨天想在Ubuntu上用一下HTK工具包来绘制语音信号的频谱图和提取MFCC的结果,但由于前段时间把Ubuntu升级到13.04,系统的声卡驱动是ALSA(Advanced Linux Sound...ALSA高级Linux声音系统简介 高级Linux声音体系(英语:Advanced Linux Sound Architecture,缩写为ALSA)是Linux内核中,为声卡提供的驱动组件,以替代原先的...从2.6版本开始ALSA成为Linux内核中默认的标准音频驱动程序集,OSS则被标记为废弃。 ALSA由许多声卡声卡驱动程序组成,同时它也提供一个称为libasound的API库。...ALSA对待机支持更好,而用OSS,你需要在待机前使用soundoff来停止OSS驱动,在恢复后使用soundon来启动OSS。...声卡驱动之一:ALSA架构简介: http://blog.csdn.net/droidphone/article/details/6271122 [5]Linux ALSA声卡编程简介: http:/

    5.3K31

    Linux下使用alsa-lib库完成音频开发: 实现放音和录音(从声卡获取PCM数据保存、向声卡写PCM数据输出)

    一、环境介绍 系统: 虚拟机运行ubuntu18.04 (64位) 声卡: 电脑自带声卡 二、安装alsa-lib库 参考文章: https://blog.csdn.net/xiaolong1126626497.../article/details/104916277 三、参考代码:从声卡获取PCM数据,实现录音功能 下面代码在命令行通过gcc编译运行: 读取声卡数据,保存为文件,结束录音可以按下Ctrl+C即可结束.../* 进行音频采集,采集pcm数据并直接保存pcm数据 音频参数: 声道数: 1 采样位数: 16bit、LE格式 采样频率: 44100Hz 运行示例: $ gcc linux_pcm_save.c.../a.out hw:0 123.pcm */ #include #include #include #include.../* 进行音频采集,读取存放pcm数据的文件通过声卡进行播放 音频参数: 声道数: 1 采样位数: 16bit、LE格式 采样频率: 44100Hz 运行示例: $ gcc linux_pcm_save.c

    7.9K20

    在 Ubuntu 上换用 OSS4 声音系统

    自从上次升级了内核之后就没用过这个鸟系统,主要是linux下的qq太但疼了,不能输入中文,而我又不想用那个鸟webqq。于是也就没怎么折腾。直到这几天装了个wineqq。...后来才发现升级内核的时候吧alsa声卡驱动搞没了,而现在的驱动是oss的。就是上图看到的那样。 尝试重装alsa的驱动未果于是想办法把系统的声卡驱动换成oss。...目前已知的问题,笔记本休眠之后会导致声卡无法正常使用。目前俺也不知到该怎么解决。很淡疼的说。...---- 分享文章: 相关文章: Ubuntu 9.04 Ubuntu Fcitx输入法以及Flash乱码 Ubuntu 10.04安装IDA PRO ubuntu 16.04 uwsgi自启动...mysqlclient Ubuntu 10.04下IDA5.2的Call Graph View ubuntu uwsgi No module named ‘django’ IDA Pro 5.2 For Linux

    65130

    Linux音频采集和在国产化平台中遇到的坑(一)

    很多人都觉得银河麒麟不就是linux么,那不直接用ALSA就好了,我原本也是这么想的,但是实际开发下来才发现,还是有各种坑需要自己去趟的。这里我简单记录一下。...虽然都是linux,芯片也是基于同样的架构,同样的指令集,但是考虑到芯片的实现毕竟是不同的,于是所有涉及到硬件交互的软件部分,也会有所差异,最终会导致了有些应用层面的接口,不能按照普通linux的通常用法去使用...linux ALSA音频采集 首先,银河麒麟既然是linux系统,那首先考虑到的是通过ALSA(Advanced Linux Sound Architecture)来进行采集,ALSAlinux的默认声卡驱动...刚开始我以为是ALSA默认设备的问题,因为出问题的国产化芯片平台,有两个声卡,其中一个是可以正常使用的,另一个是无效声卡。...,来设置默认声卡,这里推荐一个工具“alsamixer”,是一个字符化界面的ALSA配置工具,可以通过如下命令安装: sudo apt-get install alsa-utils 启动后就是一个这样的界面

    1.7K40

    Linux音频采集和在国产化平台中遇到的坑(一)

    很多人都觉得银河麒麟不就是linux么,那不直接用ALSA就好了,我原本也是这么想的,但是实际开发下来才发现,还是有各种坑需要自己去趟的。这里我简单记录一下。...linux ALSA音频采集 首先,银河麒麟既然是linux系统,那首先考虑到的是通过ALSA(Advanced Linux Sound Architecture)来进行采集,ALSAlinux的默认声卡驱动...刚开始我以为是ALSA默认设备的问题,因为出问题的国产化芯片平台,有两个声卡,其中一个是可以正常使用的,另一个是无效声卡。...于是我尝试通过系统配置的方式,来设置默认声卡,这里推荐一个工具“alsamixer”,是一个字符化界面的ALSA配置工具,可以通过如下命令安装: sudo apt-get install alsa-utils...启动后就是一个这样的界面 然而,修改以后,发现默认设备的修改,并不能影响到alsa采集的结果。

    1.5K20

    deepin关闭bee,在按键盘删除键删到顶端会毕一声,wineQQ里面尤其明显

    [deepin][linux][bee]deepin关闭bee,在按键盘删除键删到顶端会毕一声,wineQQ里面尤其明显 全局设置 可以通过在内核模块中移除 pcspkr 模块来完全禁用PC喇叭: #...用户设置 X $ xset -b 将这条命令加入启动文件, 例如 ~/.xinitrc, 可以在每次X启动时关掉PC喇叭....另一种方法是将下面的命令加入 ~/.inputrc: $ set bell-style none 使用 ALSA Tip: 大部分 Intel 声卡不会显示在 alsamixer 的默认设备中,请按 F6...如果使用 ALSA, 可以试试下面的命令关掉 PC 喇叭: $ amixer set 'PC Speaker' 0% mute 对某些声卡,PC 喇叭在 PC Beep 中: $ amixer set...保存 alsa 设置: # alsactl store 注意: 不是每一个声卡都会在 alsamixer 中创建 PC Speaker 或者 PC Beep 滑动控制条。

    63520

    Linux应用开发【第八章】ALSA应用开发

    8.2 ALSA架构 ​ ALSA全称是Advanced Linux Sound Architecture,中文音译是Linux高级声音体系。...ALSALinux内核2.6后续版本中支持音频系统的标准接口程序,由ALSA库、内核驱动和相关测 试开发工具组成,更好的管理Linux中音频系统。 ​ 本小节将介绍ALSA的架构。...8.2.1 ALSA架构介绍 ​ ALSALinux系统中为声卡提供驱动的内核组件。它提供了专门的库函数来简化相应应用程序的编写。相较于OSS的编程接口,ALSA的函数库更加便于使用。 ​.../configure --prefix=/home/m/3rd/alsa/install/ --host=arm-linux --with-alsa-inc-prefix=/home/m/3rd/alsa...内核层的alsa-drivier驱动再经由sound core对硬件声卡芯片进行访问。

    3.4K20

    (干货)Ai音箱和Linux音频驱动小谈

    四、TINYALSA子系统 (1)代码介绍 目前linux中主流的音频体系结构是ALSA(Advanced Linux Sound Architecture),ALSA在内核驱动层提供了alsa-driver...声卡接口中有一个指针来指示声卡硬件缓存区中当前的读写位置。只要接口在运行,这个指针将循环地指向缓存区中的某个位置。...五、CODEC介绍 (1)专用术语 ASLA - Advanced Sound Linux Architecture OSS - 以前的Linux音频体系结构,被ASLA取代并兼容 Codec -...对某些老声卡有着更好的支持比如创新(Creative)的X-Fi。 声音程序的初始反应时间一般更好。...ALSA对待机支持更好,而用OSS,你需要在待机前使用soundoff来停止OSS驱动,在恢复后使用soundon来启动OSS。

    3.6K21
    领券