ALSA
Vincentywj
这个作者很懒,什么都没留下…
展开
-
Android音频驱动-ASOC之Machine
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2017-08-28 16:31:56 · 1213 阅读 · 0 评论 -
Android音频驱动-ASOC之Control Open
struct mixer *mixer_open(unsigned int card){ struct snd_ctl_elem_list elist; struct snd_ctl_elem_info tmp; struct snd_ctl_elem_id *eid = NULL; struct mixer *mixer = NULL; unsigned原创 2017-09-07 15:39:01 · 1832 阅读 · 0 评论 -
Android音频驱动-ASOC之Control Device创建
soc-core.c snd_soc_instantiate_card init.c snd_card_new control.c snd_ctl_createControl设备和PCM设备一样,都属于声卡下的逻辑设备。用户空间的应用程序通过alsa-lib访问该Control设备, 读取或控制control的控制状态,从而达到控制音频Codec进行各种Mixer原创 2017-09-07 14:58:01 · 573 阅读 · 0 评论 -
Android音频驱动-ASOC之PCM HW Params
struct pcm *pcm_open(unsigned int card, unsigned int device, unsigned int flags, struct pcm_config *config){ struct pcm *pcm; struct snd_pcm_info info; struct snd_pcm_原创 2017-09-05 15:41:03 · 3037 阅读 · 0 评论 -
Android音频驱动-ASOC之PCM Write
int pcm_write(struct pcm *pcm, const void *data, unsigned int count){ struct snd_xferi x; if (pcm->flags & PCM_IN) return -EINVAL; x.buf = (void*)data; x.frames = count / (pcm->c原创 2017-09-05 11:30:37 · 7722 阅读 · 2 评论 -
Android音频驱动-ASOC之PCM Prepare
int pcm_write(struct pcm *pcm, const void *data, unsigned int count){ struct snd_xferi x; if (pcm->flags & PCM_IN) return -EINVAL; x.buf = (void*)data; x.frames = count / (pcm->c原创 2017-09-04 17:33:37 · 4785 阅读 · 0 评论 -
Android音频驱动-ASOC之创建设备节点
创建设备文件的方法: 第一种是使用mknod手工创建:mknod filename type major minor第二种是自动创建设备节点:利用udev(mdev)来实现设备文件的自动创建,首先应保证支持udev(mdev),由busybox配置。 具体udev相关知识这里不详细阐述,可以移步Linux 文件系统与设备文件系统 —— udev 设备文件系统,这里主要讲使用方法。原创 2017-09-01 16:42:39 · 1680 阅读 · 0 评论 -
Android音频驱动-ASOC之主&从设备号
设备号是在驱动module中分配并注册的,驱动module拥有这个设备号,而/dev目录下的设备文件是根据这个设备号创建的, 当访问/dev目录下的设备文件时,驱动module就知道,自己该出场服务了(当然是由内核通知)。 在Linux内核看来,主设备号标识设备对应的驱动程序,告诉Linux内核使用哪一个驱动程序为该设备(也就是/dev下的设备文件)服务; 而次设备号则用来标识具体且唯一的某个原创 2017-09-01 09:52:22 · 1094 阅读 · 0 评论 -
Android音频驱动-ASOC之Sound Card创建
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;原创 2017-08-31 17:05:14 · 1413 阅读 · 0 评论 -
Android音频驱动-ASOC之常用对象
struct snd_soc_dai { const char *name; int id; struct device *dev; void *ac97_pdata; /* platform_data for the ac97 codec */ /* driver ops */ struct snd_soc_dai_driver *driver;原创 2017-08-29 19:42:46 · 1305 阅读 · 0 评论 -
Android音频驱动-ASOC之PCM Open
soc-core.csnd_soc_instantiate_cardinit.csnd_card_registerdevice.csnd_device_register_all__snd_device_registerdev->ops->dev_register(dev);pcm.csnd_pcm_dev_registersprintf(str, "pcmC%iD%ip", pc原创 2017-08-29 12:51:28 · 6862 阅读 · 0 评论 -
Android音频驱动-ASOC之PCM Device创建
soc-core.csnd_soc_instantiate_cardsoc_probe_link_daissoc-pcm.csoc_new_pcmpcm.csnd_pcm_new_internal_snd_pcm_newsnd_pcm_new_stream snd_device_new(card, SNDRV_DEV_PCM, pcm, &ops)pcm_lib.c //设置具体原创 2017-08-29 12:50:11 · 3317 阅读 · 0 评论 -
Android音频驱动-ASOC之Sound Card注册
soc-core.csnd_soc_instantiate_cardsoc_probe_link_daissoc-pcm.csoc_new_pcmpcm.csnd_pcm_new_internal_snd_pcm_newsnd_pcm_new_stream snd_device_new(card, SNDRV_DEV_PCM, pcm, &ops)pcm_lib.c //设置具体原创 2017-08-29 12:47:46 · 2044 阅读 · 0 评论 -
Android音频驱动-ASOC之CPU DAI
static int __init mtk_dai_stub_init(void){ int ret; soc_mtk_dai_dev = platform_device_alloc(MT_SOC_DAI_NAME , -1); ret = platform_device_add(soc_mtk_dai_dev); return platform_driver_re原创 2017-08-28 20:15:50 · 1388 阅读 · 0 评论 -
Android音频驱动-ASOC之Platform
static struct platform_driver mtk_I2S0dl1_driver = { .driver = { .name = MT_SOC_I2S0DL1_PCM, .owner = THIS_MODULE, }, .probe = mtk_I2S0dl1_probe, .remove = mtk_I2S原创 2017-08-28 17:48:12 · 1328 阅读 · 0 评论 -
Android音频驱动-ASOC之Codec
mt_soc_codec_63xx.cstatic int __init mtk_mt6331_codec_init(void){ int ret = 0; soc_mtk_codec6331_dev = platform_device_alloc(MT_SOC_CODEC_NAME, -1); ret = platform_device_add(soc_mtk_codec原创 2017-08-28 17:21:56 · 2436 阅读 · 0 评论 -
Android音频驱动-ASOC之DAMP
static int snd_soc_instantiate_card(struct snd_soc_card *card) { ...... /* card bind complete so register a sound card */ ret = snd_card_create(SNDRV_DEFAULT_IDX1, SNDRV原创 2017-09-11 08:58:27 · 755 阅读 · 0 评论 -
录音机和录像机的输入通路SPELayer
//speech enhancement setting and processbool SPELayer::Start(SPE_MODE mode) //for VOIP, both uplink/downlink{ ALOGD("%s+, mode=%d", __FUNCTION__, mode); Mutex::Autolock lock(mLock); if原创 2017-09-30 14:28:05 · 652 阅读 · 0 评论