audio control控制接口

本文介绍了ALSA音频系统中snd_kcontrol_new结构体在控制接口中的应用,主要用于MIXER。详细讲解了接口的各字段含义,如iface、name、index、access等,并探讨了control的命名规范、访问类型以及回调函数的作用。同时,还提到了元数据的概念,如DECLARE_TLV_DB_SCALE和DECLARE_TLV_DB_LINEAR宏定义的音量控制。
摘要由CSDN通过智能技术生成

control的主要用于mixer。它能被用户空间存取,从而读写CODEC相关寄存器,可以控制amix指令,它用snd_kcontrol_new结构体描述

相关结构体

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;

};

iface字段指出了control的类型,alsa定义了几种类型(SNDDRV_CTL_ELEM_IFACE_XXX),常用的类型是MIXER,当然也可以定义属于全局的CARD类型,也可以定义属于某类设备的类型,

#define    SNDRV_CTL_ELEM_IFACE_CARD    ((__force snd_ctl_elem_iface_t) 0) /* global control */

#define    SNDRV_CTL_ELEM_IFACE_HWDEP    ((__force snd_ctl_elem_iface_t) 1) /* hardware dependent device */

#define    SNDRV_CTL_ELEM_IFACE_MIXER    ((__force snd_ctl_elem_iface_t) 2) /* virtual mixer device */

#define    SNDRV_CTL_ELEM_IFACE_PCM    ((__force snd_ctl_elem_iface_t) 3) /* PCM device */

#define    SNDRV_CTL_ELEM_IFACE_RAWMIDI    ((__force snd_ctl_elem_iface_t) 4) /* RawMidi device */

#define    SNDR

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值