- 1、本文档共83页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ALSA声卡驱动详解
1.ALSA声卡驱动中的DAPM详解之一:kcontrol
DAPM是Dynamic Audio Power Management的缩写,直译过来就是动态音频电源管理的意思,DAPM是为了使基于linux的移动设备上的音频子系统,在任何时候都工作在最小功耗状态下。DAPM对用户空间的应用程序来说是透明的,所有与电源相关的开关都在ASoc core中完成。用户空间的应用程序无需对代码做出修改,也无需重新编译,DAPM根据当前激活的音频流(playback/capture)和声卡中的mixer等的配置来决定那些音频控件的电源开关被打开或关闭。
/*****************************************************************************************************/声明:本博内容均由/droidphone原创,转载请注明出处,谢谢!/*****************************************************************************************************/
DAPM控件是由普通的soc音频控件演变而来的,所以本章的内容我们先从普通的soc音频控件开始。
snd_kcontrol_new结构
在正式讨论DAPM之前,我们需要先搞清楚ASoc中的一个重要的概念:kcontrol,不熟悉的读者需要浏览一下我之前的文章:Linux ALSA声卡驱动之四:Control设备的创建。通常,一个kcontrol代表着一个mixer(混音器),或者是一个mux(多路开关),又或者是一个音量控制器等等。 从上述文章中我们知道,定义一个kcontrol主要就是定义一个snd_kcontrol_new结构,为了方便讨论,这里再次给出它的定义:
[cpp]?view plaincopy
struct?snd_kcontrol_new?{??
????????snd_ctl_elem_iface_t?iface;?????/*?interface?identifier?*/??
????????unsigned?int?device;????????????/*?device/client?number?*/??
????????unsigned?int?subdevice;?????????/*?subdevice?(substream)?number?*/??
????????const?unsigned?char?*name;??????/*?ASCII?name?of?item?*/??
????????unsigned?int?index;?????????????/*?index?of?item?*/??
????????unsigned?int?access;????????????/*?access?rights?*/??
????????unsigned?int?count;?????????????/*?count?of?same?elements?*/??
????????snd_kcontrol_info_t?*info;??
????????snd_kcontrol_get_t?*get;??
????????snd_kcontrol_put_t?*put;??
????????union?{??
????????????????snd_kcontrol_tlv_rw_t?*c;??
????????????????const?unsigned?int?*p;??
????????}?tlv;??
????????unsigned?long?private_value;??
};??
回到Linux ALSA声卡驱动之四:Control设备的创建中,我们知道,对于每个控件,我们需要定义一个和他对应的snd_kcontrol_new结构,这些snd_kcontrol_new结构会在声卡的初始化阶段,通过snd_soc_add_codec_controls函数注册到系统中,用户空间就可以通过amixer或alsamixer等工具查看和设定这些控件的状态。
snd_kcontrol_new结构中,几个主要的字段是get,put,private_value,get回调函数用于获取该控件当前的状态值,而put回调函数则用于设置控件的状态值,而private_value字段则根据不同的控件类型有不同的意义,比如对于普通的控件,private_value字段可以用来定义该控件所对应的寄存器的地址以及对应的控制位在寄存器中的位置信息。值得庆幸的是,ASoc系统已经为我们准备了
您可能关注的文档
- 42光合作用同步测试苏教版必修一.doc
- 43美容造型艺术课程标准20148.doc
- 4专题四光合作用呼吸作用蒸腾作用.doc
- 4人教版四年级语文上册生字拼音组词.doc
- 42现代社会调查方法(风笑天第四版)备考重点及课后习题.doc
- 4《近代西方资本主义政治制度的确立与发展.doc
- 4刷磨板生产线.doc
- 4建筑材料(设备)供货合同文本.doc
- 430课程设计报告-红外遥控小车完整版.docx
- 4砂石换填隐蔽工程.doc
- 2023年江苏省镇江市润州区中考生物二模试卷+答案解析.pdf
- 2023年江苏省徐州市邳州市运河中学中考生物二模试卷+答案解析.pdf
- 2023年江苏省苏州市吴中区中考冲刺数学模拟预测卷+答案解析.pdf
- 2023年江苏省南通市崇川区田家炳中学中考数学四模试卷+答案解析.pdf
- 2023年江西省吉安市中考物理模拟试卷(一)+答案解析.pdf
- 2023年江苏省泰州市海陵区九年级(下)中考三模数学试卷+答案解析.pdf
- 2023年江苏省苏州市高新二中中考数学二模试卷+答案解析.pdf
- 2023年江苏省南通市九年级数学中考复习模拟卷+答案解析.pdf
- 2023年江苏省南通市海安市九年级数学模拟卷+答案解析.pdf
- 2023年江苏省泰州市靖江外国语学校中考数学一调试卷+答案解析.pdf
最近下载
- 篮球进校园方案.pdf VIP
- CESA--2023-105《算力服务可信性评估规范》.pdf
- 部编版四年级语文上册《精卫填海》教材分析及相关素材.docx VIP
- 2024年共青团知识自测题库及答案.pdf VIP
- 环环相扣PPT立体图表.ppt
- 2024-2025学年八年级英语上学期期中考试(上海卷)(含解析)(牛津上海版).pdf VIP
- 药学专业知识一.pdf
- 湖北省武汉市洪山高级中学2024-2025学年高一上学期9月考试化学试卷.docx VIP
- 2024年公共卫生与预防医学继续教育平台“大学习”活动线上培训栏目考试题库(1392题).docx
- 地方标准审评工作细则.pdf VIP
文档评论(0)