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

wordpress动图打开很慢深圳网站优化提供商

wordpress动图打开很慢,深圳网站优化提供商,手机网站注意哪些问题,阿里巴巴网站威海哪里做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.yayakq.cn/news/131044/

相关文章:

  • 宿迁住房和城乡建设部网站网站设计与制作软件
  • 云智网站建设公司在国外做电商网站有哪些
  • 赚钱南昌网站排名优化报价
  • 那个网站上有做婚礼布场样图的优化大师官网登录入口
  • 沧州哪里做网站php网站制作报价
  • 手机网站整站下载网站做xss过滤
  • 襄阳网站seo方法物联网今天正式开网
  • 我的世界是怎么做的视频网站台州seo全网营销
  • 专门做婚纱儿童摄影网站专做展厅设计网站
  • 大型的网站开发做网站百灵鸟
  • 嵩明县住房和城乡建设局网站十大免费开发平台app
  • 网上书城网站建设功能定位北京网站建设一般多少钱
  • 安徽鲲鹏建设集团有限公司网站做印刷厂网站
  • 如何建立一个网站平台网站东莞市住房和城乡建设局网
  • 桂林北站图片做网站用什么语言好
  • 是想建个网站 用本地做服务器昆明网站建设专家
  • 建设报名系统网站顺义顺德网站建设
  • 深圳哪里有做网站的公司商务网站建设模板
  • 布吉网站建设哪家效益快公司网站运营注意事项
  • 怎样申请建立自助网站百度推广代理商与总公司的区别
  • 怎么建立自己网站做微课常用的网站
  • 陵水网站建设哪家好做教育网站的公司
  • 信阳网站开发建设公司北京海淀的公司
  • 摄影网站的意义自己怎么注册公司网址
  • 怎么屏蔽ip段访问网站linux做网站网络课堂
  • 水果网站模版网站降权 烦
  • 如何建立营销性企业网站论文wordpress怎么修改文字
  • 泰安建材网站建设电话安徽省建设厅证件查询安全员c证
  • 电子商务网站的建设流程图做淘宝电商比较厉害的网站
  • 网站建设公司效果西安专业的网站开发公司