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

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

list_head controls:记录该声卡下所有的控制单元的链表 void *private_data:声卡的私有数据,可以在创建声卡时通过参数指定数据的大小 二、声卡的建立流程: 2.1.1....第二步,创建声卡的芯片专用数据: 声卡的专用数据主要用于存放该声卡的一些资源信息,例如中断资源、io资源、dma资源等。...第三步,设置Driver的ID和名字: strcpy(card->driver, "My Chip"); strcpy(card->shortname, "My Own Chip 123"); sprintf...第四步,创建声卡的功能部件(逻辑设备),例如PCM,Mixer,MIDI等: 这时候可以创建声卡的各种功能部件了,还记得开头的snd_card结构体的devices字段吗?...三、snd_card_create(): 这个接口在新的Linux内核里面可能找不到,这里我们主要是学习思想! snd_card_create()在/sound/core/init.c中定义。

36910

31.Linux-wm9876声卡驱动(移植+测试)

本节学习目的 1)分析Linux中的OSS声卡系统 2)移植wm9876声卡 3)使用madplay应用程序播放mp3 1.声音三要素 采样频率 音频采样率是指录音设备在一秒钟内对声音信号的采样次数,...常用的采样率有: 8KHz      - 电话所用采样率, 对于人的说话已经足够清除 22.05KHz - 无线电广播所用采样率 32KHz   -  miniDV 数码视频、DAT所用采样率 44.1KHz... - 音频 CD, 也常用于 MPEG-1 音频(VCD, SVCD, MP3)所用采样率 48KHz   - miniDV、数字电视、DVD、DAT、电影和专业音频所用的数字声音所用采样率 50KHz...本节的WM8976的MODE脚接的高电平,所以是3线控制 3.接下来便来分析linux内核的声卡系统 在linux声卡中存在两种声卡系统,一种是OSS(开放声音系统),一种是ALSA(先 进Linux声音架构.../configure --host=arm-linux --prefix=/app/tmp //修改configure,设置编译器,设置安装路径 make    //编译

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

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

一、环境介绍 系统: 虚拟机运行ubuntu18.04 (64位) 声卡: 电脑自带声卡 二、安装alsa-lib库 参考文章: https://blog.csdn.net/xiaolong1126626497.../* 进行音频采集,采集pcm数据并直接保存pcm数据 音频参数: 声道数: 1 采样位数: 16bit、LE格式 采样频率: 44100Hz 运行示例: $ gcc linux_pcm_save.c...0))<0) { printf("无法设置采样率(%s)\n",snd_strerror(err)); exit(1); } printf("采样率设置成功\n"); /*设置声道,.../* 进行音频采集,读取存放pcm数据的文件通过声卡进行播放 音频参数: 声道数: 1 采样位数: 16bit、LE格式 采样频率: 44100Hz 运行示例: $ gcc linux_pcm_save.c...0))<0) { printf("无法设置采样率(%s)\n",snd_strerror(err)); exit(1); } printf("采样率设置成功\n"); /*设置声道,

6.5K20

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

每个声卡最多可以包含4个pcm的实例,每个pcm实例对应一个pcm设备文件。pcm实例数量的这种限制源于linux设备号所占用的位大小,如果以后使用64位的设备号,我们将可以创建更多的pcm实例。...另一个用于设置pcm操作函数接口的api: void snd_pcm_set_ops(struct snd_pcm *pcm, int direction, struct snd_pcm_ops *ops...); 新建一个pcm可以用下面一张新建pcm的调用的序列图进行描述: 图3.1 新建pcm的序列图 snd_card_create pcm是声卡下的一个设备(部件),所以第一步是要创建一个声卡...,参数ops中的dev_register字段指向了函数snd_pcm_dev_register,这个回调函数会在声卡的注册阶段被调用。...snd_pcm_set_ops 设置操作该pcm的控制/操作接口函数,参数中的snd_pcm_ops结构中的函数通常就是我们驱动要实现的函数 snd_card_register 注册声卡,在这个阶段会遍历声卡下的所有逻辑设备

36210

Linux下音频开发: 读取声卡PCM数据保存到文件(alsa-lib库)

一、环境介绍 系统: ubuntu18.04 (64位) 声卡: 电脑自带 二、功能介绍 通过alsa-lib库读取电脑声卡的PCM数据保存到文件。...在ubuntu系统上安装alsa-lib库方法: sudo apt-get install libasound2-dev 如果是在其他发行版linux系统上或者需要在嵌入式linux系统上使用alsa-lib...开源ALSA架构的官网地址:https://www.alsa-project.org/wiki/Main_Page 三、获取本机可用的声卡设备 获取声卡可以使用arecord -L命令。...wbyq@wbyq:/mnt/hgfs/linux-share-dir/linux_c/linux_pcm_save$ arecord -L default Playback/recording...,0))<0) { printf("无法设置采样率(%s)\n",snd_strerror(err)); exit(1); } printf("采样率设置成功\n"); /*设置声道

3.5K30

Tina_Linux_音频_开发指南

的fifo_size大小,用于声卡硬件参数限定,默认 128 dac_txdata 设置播放流DMA搬运地址(audiocodec模块的tx_fifo寄存器地址) adc_txdata 设置录音流DMA...snd_pcm_runtime的fifo_size大小,用于声卡硬件参数限定,默认 128 rx_fifo_size 设置录音流snd_pcm_runtime的fifo_size大小,用于声卡硬件参数限定...表2-137: DMIC dmic_mach节点配置项(linux4.9) 配置项名称 配置项说明 soundcard-mach machine层配置前缀 name 声卡名字 cpu machine...3.1.1 3.1.1 amixer amixer是命令行的ALSA声卡驱动调节器工具,用于设置mixer control。...选项 功能 -D,–card 指定声卡设备,默认使用card0 -p,–period-size 指定period大小,单位为帧 -c,–channels 指定通道数 -r,–rate 指定采样率 -b,

7.2K10

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

到现在还没办法完全复原,现在只能通过alsamixer来设置音量了,系统的音量设置根本无法用,而且声音设置中的输入设备和输出设备都是空的。...(现在将系统升级到13.10版,系统的音量设置可以用了,哈哈)捣鼓了半天也没还原回来唉,整个人都快崩溃了,都是由于对Linux不熟悉才被虐至如此地步,得恶补啊!!!...ALSA高级Linux声音系统简介 高级Linux声音体系(英语:Advanced Linux Sound Architecture,缩写为ALSA)是Linux内核中,为声卡提供的驱动组件,以替代原先的...从2.6版本开始ALSA成为Linux内核中默认的标准音频驱动程序集,OSS则被标记为废弃。 ALSA由许多声卡声卡驱动程序组成,同时它也提供一个称为libasound的API库。...比如plughw:,表示一个插件,这个插件不提供对硬件设备的访问,而是提供像采样率转换这样的软件特性,硬件本身并不支持这样的特性。

5.1K31

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

8.2 ALSA架构 ​ ALSA全称是Advanced Linux Sound Architecture,中文音译是Linux高级声音体系。...ALSA 是Linux内核2.6后续版本中支持音频系统的标准接口程序,由ALSA库、内核驱动和相关测 试开发工具组成,更好的管理Linux中音频系统。 ​ 本小节将介绍ALSA的架构。...8.2.1 ALSA架构介绍 ​ ALSA是Linux系统中为声卡提供驱动的内核组件。它提供了专门的库函数来简化相应应用程序的编写。相较于OSS的编程接口,ALSA的函数库更加便于使用。 ​...在LINUX系统中,每个设备文件都是文件。...0设备0的录音设备,c表示capter; (3)pcmC0D0p:声卡0设备0的播音设备,p表示play; (4)timer:定时器设置

3.2K20

10. 100ASK_V853-PRO开发板支持录音和播放音频

如下图所示: 如果您想要使用喇叭接口播放声音,需要外接一个喇叭 2.音频驱动框架使用 在 Tina Linux 中使用的是标准的 ALSA API,所以使用音频的功能可以使用标准的 alsa-utils...ALSA (Advanced Linux Sound Architecture) utilities 如下图所示: 选中完成后会启用amixer、aplay、arecord功能,重新编译打包更新系统即可体验...2.1 驱动调控:amixer amixer是命令行的 ALSA 声卡驱动调节工具,用于启用、关闭各声卡设置声卡的音量。使用 amixer 命令列出当前注册的音频设备。...,如voc,wav,raw,不指定的情况下会去读取文件头部作识别 -c,--channels 指定通道数 -f,--format 指定采样格式 -r,--rate 采样率...,如voc,wav,raw,不指定的情况下会去读取文件头部作识别 -c,--channels 指定通道数 -f,--format 指定采样格式 -r,--rate 采样率

1K20

科普常识:常见音频参数解析

它是用来衡量声音波动变化的一个参数,也就是声卡的分辨率或可以理解为声卡处理声音的解析度。它的数值越大,分辨率也就越高,录制和回放的声音就越真实。...而声卡的位是指声卡在采集和播放声音文件时所使用数字声音信号的二进制位数,声卡的位客观地反映了数字声音信号对输入声音信号描述的准确程度。...常见的声卡主要有8位和16位两种,如今市面上所有的主流产品都是16位及以上的声卡。        ...1.单身道         单声道是比较原始的声音复制形式,早期的声卡采用的比较普遍。...如今四声道技术已经广泛融入于各类中高档声卡的设计中,成为未来发展的主流趋势。

2.3K00

SoundFlower+QuickTime录屏Mac含系统声音

其原理是添加虚拟声卡,使系统声音输出到该声卡,再将其作为QuickTime录屏的输入。 soundflower是一个开源插件,已于2014年停止维护,但其最新版本仍可用于当前版本的mac。...mattingalls/Soundflower/releases/tag/2.0b2 Loopback:https://rogueamoeba.com/loopback/ 安装soundflower时,需要设置...我的需求是网课录屏,录屏时需要输出到soundflower虚拟声卡和耳机,输入仅需soundflower虚拟声卡,不需要录麦克风声音。...如果是录zoom的网课,需要在zoom中设置如下: 在join audio中,select microphone选择multi-output device。...我猜测可能是采样率低的原因,因为我将airpods设为主设备,而其采样率是固定的(不可下拉选择),为8kHz,与它作为输入时的48kHz相去甚远。由于麦克风录音不是刚需,遂放弃。

1.3K30

ALSA的入门介绍

采样率(rate):每秒钟采样次数,该次数是针对帧而言,常用的采样率如8KHz的人声, 44.1KHz的mp3音乐, 96Khz的蓝光音频。...比特率(Bits Per Second):比特率表示每秒的比特数,比特率=采样率×通道数×样本长度 ALSA 介绍 ALSA基础 ALSA由许多声卡声卡驱动程序组成,同时它也提供一个称为libasound...一个典型的声音程序 使用PCM的程序通常类似下面的伪代码: 打开回放或录音接口 设置硬件参数(访问模式,数据格式,信道数,采样率,等等) while 有数据要被处理: 读PCM数据(录音) 或 写PCM...接下来,我们调用API来设置我们所需的硬件参数。 这些函数需要三个参数:PCM流句柄,参数类型,参数值。 我们设置流为交错模式,16位的样本大小,2 个信道,44100bps的采样率。...对于采样率而言,声音硬件并不一定就精确地支持我们所定的采样率,但是我们可以使用函数 snd_pcm_hw_params_set_rate_near来设置最接近我们指定的采样率采样率

1.9K30

「SDL第七篇」PCM音频播放器的实现

那么有人会问,为什么声卡可以精准的计算出播放时间来呢?这是因为在播放之前我们给它设置采样率、通道数、采样大小等参数,通过这些参数它就可以计算出时间来。...我们来做个计算,假设采样率是 48000, 双通道,采样大小是 16bit,那么一秒种的数据是多少呢? 48000*2*16=1536000....反过来,如果我们有一段 8M 的数据,那么声卡就知道它能播放 5秒多的声音。 上面的一大段文字描述,实际上只是想说明一个道理,就是要播放的声音数据,是声卡主动要的,不能由上层直接设置。...打开音频设备 设置音频参数 播放音频 向声卡喂数据 关闭音频设置 详细API介绍 打开音频设备 int SDL_OpenAudio(SDL_AudioSpec* desired,...SDL_AudioSpec* obtained) desired: 设置音频参数。

1.9K10

Audio CODEC 基本知识及应用

◆ 低音增强——Bass Boost: 用来设置低音表现力。利用Bass Boost 的音效,可以在音乐回放时得到低音增强的效果,使的音乐更具震撼力。...它在声卡中最常见,声卡里的CODEC如果是AC'97 CODEC,则前面一定要有一个SRC的过程。...常见的声卡都支持44.1kHz 和48kHz 的信号输入,而这2 种采样率不是整数倍关系,如果同时支持这2 种采样率输出的话,声卡上需要2 颗晶振。...而通过SRC 后,输出的采样率一般固定在48kHz,这样声卡可以节省一颗晶振,降低了成本。...◆可编程增益放大器(PGA) PGA 的增益可以设置。它有两种工作模式:固定增益模式、自动增益调节模式。如果使用录音的ALC 功能,则PGA 必须工作在自动增益调节模式。

2.1K11

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

一、音频基础 (1)采样率(samplerate) 采样就是把模拟信号数字化的过程,不仅仅是音频需要采样,所有的模拟信号都需要通过采样转换为可以用0101来表示的数字信号,示意图如下所示: ?...I2S不同的标准介绍:I2S主要是针对ADC和主控,如果ADC设置的I2S标准和主控的不一致,那么录音肯定是要出问题的,正常使用的时候,会涉及1bit delay,大家在量I2S波形的时候也可以看出来...四、TINYALSA子系统 (1)代码介绍 目前linux中主流的音频体系结构是ALSA(Advanced Linux Sound Architecture),ALSA在内核驱动层提供了alsa-driver...声卡接口中有一个指针来指示声卡硬件缓存区中当前的读写位置。只要接口在运行,这个指针将循环地指向缓存区中的某个位置。...五、CODEC介绍 (1)专用术语 ASLA - Advanced Sound Linux Architecture OSS - 以前的Linux音频体系结构,被ASLA取代并兼容 Codec -

3.4K21
领券