Android音频驱动-ASOC之Sound Card创建

本文详细探讨了Android中ASOC(Advanced Smart Audio Codec)框架下的Sound Card创建过程,通过进入Android系统的proc/asound目录,展示了card0等关键信息,揭示了Android音频驱动的工作原理。
摘要由CSDN通过智能技术生成
static const struct file_operations snd_fops =
{
    .owner =    THIS_MODULE,
    .open =     snd_open,
    .llseek =   noop_llseek,
};
static int __init alsa_sound_init(void)
{
    snd_major = major;
    snd_ecards_limit = cards_limit;
    if (register_chrdev(major, "alsa", &snd_fops)) {
  //注册声卡主设备,设置声卡的回调函数
        pr_err("ALSA core: unable to register native major device number %d\n", major);
        return -EIO;
    }
    if (snd_info_init() < 0) {
        unregister_chrdev(major, "alsa");
        return -ENOMEM;
    }
    snd_info_minor_register();
    return 0;
}
int __init snd_info_init(void)
{
    struct proc_dir_entry *p;

    p = proc_mkdir("asound", NULL);//创建asound根目录
    if (p == NULL)
        return -ENOMEM;
    snd_proc_root = p;
#ifdef CONFIG_SND_OSSEMUL
    {
        struct snd_info_entry *entry;
        if ((entry = snd_info_create_module_entry(THIS_MODULE, "oss", NULL)) == NULL)
            return -ENOMEM;
        entry->mode = S_IFDIR | S_IRUGO | S_IXUGO;
        if (snd_info_register(entry) < 0) {
            snd_info_free_entry(entry);
            return -ENOMEM;
        }
        snd_oss_root = entry;
    }
#endif
#if IS_ENABLED(CONFIG_SND_SEQUENCER)
    {
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值