audio widget

DAPM是Linux移动设备上音频子系统的动态电源管理技术,旨在实现最低功耗。它对应用程序透明,根据音频流和配置自动管理电源。DAPM的核心单元是widget,结合了kcontrol和电源管理,且能定义音频路径。相关结构体包括snd_soc_dapm_widget,用于描述音频路径中的组件和连接。
摘要由CSDN通过智能技术生成

DAPM是Dynamic Audio Power Management的缩写,直译过来就是动态音频电源管理的意思,DAPM是为了使基于linux的移动设备上的音频子系统,在任何时候都工作在最小功耗状态下。DAPM对用户空间的应用程序来说是透明的,所有与电源相关的开关都在ASoc core中完成。用户空间的应用程序无需对代码做出修改,也无需重新编译,DAPM根据当前激活的音频流(playback/capture)和声卡中的mixer等的配置来决定那些音频控件的电源开关被打开或关闭。

DAPM的基本单元widget

widget,其实可以理解为是kcontrol的进一步升级和封装,她同样是指音频系统中的某个部件,比如mixer,mux,输入输出引脚,电源供应器等等,甚至,我们可以定义虚拟的widget,例如playback stream widget。widget把kcontrol和动态电源管理进行了有机的结合,同时还具备音频路径的连结功能,一个widget可以与它相邻的widget有某种动态的连结关系

相关结构体

/* dapm widget */

struct snd_soc_dapm_widget {

    enum snd_soc_dapm_type id;

    const char *name;        /* widget name */

    const char *sname;    /* stream name */

    struct snd_soc_codec *codec;

    struct list_head list;

    struct snd_soc_dapm_context *dapm;

    void *priv;                /* widget specific data */

    struct regulator *regulator;        /* attached regulator */

    const struct snd_soc_pcm_stream *params; /* params for dai links */

    /* dapm control */

    int reg;                /* negative reg = no direct dapm */

    unsigned char shift;            /* bits to shift */

    unsigned int mask;            /* non-shifted mask */

    unsigned int on_val;            /* on state value */

    unsigned int off_val;            /* off state value */

    unsigned char power:1;            /* block power status */

    unsigned char active:1;            /* active stream on DAC, ADC's */

    unsigned char connected:1;        /* connected codec pin *

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值