当前位置: 首页 > news >正文

鄂州网站建设哪家专业个人怎么做免费百度推广

鄂州网站建设哪家专业,个人怎么做免费百度推广,武汉手机网站建设公司哪家好,设计的商城网站建设ALSA内部函数调用流程 一直都有这样的一个疑问 就是在linux系统中我们调用snd_pcm_open后,就不知道alsa内部是怎么运行的了 用户的pcm_open()相当于先对ASoC各个驱动模块startup(),再做hw_params()。 pcm_open()pcm->fd open("/dev/snd/pcm…

ALSA内部函数调用流程

一直都有这样的一个疑问

就是在linux系统中我们调用snd_pcm_open后,就不知道alsa内部是怎么运行的了

用户的pcm_open()相当于先对ASoC各个驱动模块startup(),再做hw_params()。

pcm_open()pcm->fd = open("/dev/snd/pcmC0D0c")snd_pcm_capture_open()snd_pcm_open(SNDRV_PCM_STREAM_CAPTURE)snd_pcm_open_file()snd_pcm_open_substream()substream->ops->open()soc_pcm_open()cpu_dai->driver->ops->startup()platform->driver->ops->open()codec_dai->driver->ops->startup()rtd->dai_link->ops->startup()ioctl(pcm->fd, SNDRV_PCM_IOCTL_HW_PARAMS, &params)snd_pcm_hw_params_user()snd_pcm_hw_params()substream->ops->hw_params()soc_pcm_hw_params()rtd->dai_link->ops->hw_params()dai->driver->ops->hw_params()platform->driver->ops->hw_params()ioctl(pcm->fd, SNDRV_PCM_IOCTL_SW_PARAMS, &sparams)

用户的pcm_read()相当于做从内核缓冲区到用户缓冲区的copy_to_user()。即把硬件写到内核缓冲区的数据拷贝到用户缓冲区。(mmap模式例外,其没有数据拷贝的动作,性能更好。)

pcm_read()if (!pcm->running)pcm_start()pcm->running = 1ioctl(pcm->fd, SNDRV_PCM_IOCTL_READI_FRAMES, &x)snd_pcm_lib_read()snd_pcm_lib_read1(transfer)transfer(substream, appl_ofs, data, offset, frames)snd_pcm_lib_read_transfer()substream->ops->copy() *or* copy_to_user()

用户的pcm_start()相当于对ASoC的各个驱动模块做prepare()和trigger(START)动作。

pcm_start()ioctl(pcm->fd, SNDRV_PCM_IOCTL_PREPARE)snd_pcm_prepare()snd_pcm_do_prepare()substream->ops->prepare()soc_pcm_prepare()rtd->dai_link->ops->prepare()platform->driver->ops->prepare()codec_dai->driver->ops->prepare()cpu_dai->driver->ops->prepare()ioctl(pcm->fd, SNDRV_PCM_IOCTL_START)snd_pcm_action_lock_irq()snd_pcm_do_start()substream->ops->trigger(substream, SNDRV_PCM_TRIGGER_START)soc_pcm_trigger()codec_dai->driver->ops->trigger()platform->driver->ops->trigger()cpu_dai->driver->ops->trigger()rtd->dai_link->ops->trigger()

用户的pcm_close()相当于对ASoC的各个驱动模块做trigger(STOP), hw_free()和shutdown()动作。

pcm_close()close(pcm->fd)snd_pcm_release()snd_pcm_release_substream()snd_pcm_drop(substream)snd_pcm_stop(substream, SNDRV_PCM_STATE_SETUP)snd_pcm_do_stop()substream->ops->trigger(substream, SNDRV_PCM_TRIGGER_STOP)soc_pcm_trigger()codec_dai->driver->ops->trigger()platform->driver->ops->trigger()cpu_dai->driver->ops->trigger()rtd->dai_link->ops->trigger()if (substream->hw_opened)if (substream->ops->hw_free != NULL)substream->ops->hw_free(substream)substream->ops->close(substream)soc_pcm_close()cpu_dai->driver->ops->shutdown()codec_dai->driver->ops->shutdown()rtd->dai_link->ops->shutdown()platform->driver->ops->close()substream->hw_opened = 0

以snd开头的函数都是在alsa-core中提供的

以soc开头的函数都是在asoc-core中提供的

总结:

1.一般情况下,系统中移植了alsa,音频我们只需要修改底层asoc core 中的dai link ,让asoc core 能匹配到我们的codec,配置好iis 通信格式和时序就可以了

而alsa core 一般是不用动的,上层alsa-lib alsa-utils 也是不用动的

2.当使用了不同版本的alsa lib,会导致amixer有一些区别

http://www.mmbaike.com/news/86284.html

相关文章:

  • 怎么做网站外链网络运营推广怎么做
  • 鬼佬做爰网站站长之家怎么用
  • 报名网站辽宁省建设银行网站做优化
  • 五莲网站建设今日头条郑州头条新闻
  • 做单页网站价格seo秘籍优化课程
  • 山东做网站建设公司产品营销策划方案3000字
  • 城市建设鹤岗市网站上海谷歌seo
  • 金堂县建设局网站百度pc网页版登录入口
  • 天眼查官网查询企业合肥seo网站建设
  • 青岛专业做商业房的网站贴吧高级搜索
  • cpa推广做网站成都网站优化排名推广
  • 做网站一定需要icp么厦门人才网官网登录
  • 网站编辑器做段落空格最新网络营销方式
  • 太仓公司做网站项目推广网站
  • 网络服务与协议课件seo的优化技巧有哪些
  • 普洱市网站建设制作怎样做搜索引擎推广
  • 天河公司网站建设公司百度关键词价格
  • sqlite做网站郑州seo排名第一
  • 在线平台教育网站开发seo黑帽技术有哪些
  • app下载平台服务好搜自然seo
  • 长沙知名网站seo网站外包公司
  • 网站建设品牌策划小红书关键词排名怎么做
  • 网站建设sunmunseo入门培训课程
  • 有什么平台做网站比较好如何建立网上销售平台
  • html视频网站模板外贸业务推广
  • 郑州睿网站建设营销策略手段有哪些
  • 怎样建设个人影视网站国外媒体报道
  • 中英文网站前端怎么做一手渠道推广平台
  • 网站建设能赚多少钱谷歌浏览器免费入口
  • 网站建设能挣钱吗下载百度app并安装