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

深圳罗湖网站建设站长工具关键词查询

深圳罗湖网站建设,站长工具关键词查询,wordpress btime,如何将vs做的网站备份出来基于 oss 框架完成系统平台音频驱动的适配。 oss 框架可被多个平台应用,因此 oss 提供 OS 目录来存放平台文件(比如:linux.c),该文件主要提供平台对 oss 框架封装后的相关接口。 以 Linux 为例,入口接口为…

基于 oss 框架完成系统平台音频驱动的适配。
oss 框架可被多个平台应用,因此 oss 提供 OS 目录来存放平台文件(比如:linux.c),该文件主要提供平台对 oss 框架封装后的相关接口。

以 Linux 为例,入口接口为:

调用 oss 框架通用初始接口 oss_commit_init 。
初始工作完成后,便可注册音频驱动,oss 框架中提供 drv 目录来存放驱动文件。

oss 框架中驱动涉及:

  1. mixer(混频器),提供的接口为 oss_install_mixer,创建设备文件并提供文件操作集合 mixer_cdev_drv。
  2. audio dev (音频设备),提供的接口为 oss_install_audio,创建设备文件并提供文件操作集合 audio_cdev_drv。
  3. 创建虚拟混频器 vmix_mixer,实现混音功能。

驱动主要对上述中 mixer,audio dev 的操作进行实现,对应的操作结构为 _mixer_driver_t 和 audiodrv_t。

oss 框架提供了命令模式来操作音频设备,比如:

录音操作, oss_record 命令,该命令接口为 ossrecord_main():

  1. 解析命令参数,oss 框架提供 dspdev_t 结构体与全局变量这两种形式对命令参数进行记录。
    比如:

    参数结构体/全局变量
    -v
    -d<设备文件名 dsp->name>
    -s<速率 force_speed>
    -c<通道 force_channels>
    -t<时间 datalimit>
  2. 录音操作,置只读标记(dsp->flags),调用 open_device 接口,传参为 dspdev_t 结构。打开设备以文件形式来执行,入口为 Linux.c 提供的 open 接口。
    Linux 提供了统一的创建字符设备接口,该接口为所有设备绑定统一的文件操作集合。

注意,音频设备又包含 mixer,audio dev 等不同的硬件组件,因此 oss 框架为不同的硬件组件提供了对应的操作。因此,文件操作实际是对这些操作的封装。比如:Linux 的 open 实际执行的操作是 oss_audio_open_devfile 接口。

  1. oss_audio_open_devfile 接口根据设备编号在全局数组 audio_devfiles 中获取 adev_t 结构,audio_devfiles 为全局数组,创建 audio dev 过程中会被应用。若 adev_t 结构不为空,则调用 oss_audio_open_engine 接口。

  2. oss_audio_open_engine 接口根据设备编号在全局数组 audio_engine 获取 adev_t 结构,audio_engine 数组与 audi_devfiles 数组作用相同。随后,调用驱动自定义 open 接口。以 usb audio 为例,此时会对 usb 进行初始化,比如:缓存,urb 等。同时,oss 框架会对 adev_t 结构进行初始化。

此时,设备已打开且完成必要的初始化操作。

  1. 调用 encode_sound 接口开始录音及编码,编码工作由 oss 框架自行完成。上述过程中,并未对音频设备的格式,通道,采样率等进行配置,因此,调用 setup_device() 接口,判断格式,速率,通道匹配是否与命令参数一致,若不一致,则关闭设备并重新打开。随后,通过 ioctl 接口重新设置设备的通道等信息。

若需要对录音进行保存,则 oss 框架会创建录音文件,并写入文件头部信息以及录音数据,文件头部信息主要说明音频文件的格式,采样频率等信息。

  1. record 接口完成录音操作,在 while(1) 循环中完成录音工作,申请一段内存空间,将读取的数据保存到该空间, 文件操作接口为 read。
    read 接口的操作流程与 open 类似,linux.c 自定义 read 接口。

随后依次执行 oss_audio_read --> prepare_input --> launch_input
| |
| |
adrv_prepare_for_input adrv_start_input --> adrv_trigger (注:操作由驱动来完成具体的实现)

  1. 完成录音文件。

oss 框架提供 ossplay_main() 接口进行播放操作,过程简析(大致与录音过程类似):

  1. 解析播放命令参数。(-d,将设备名赋值给 dsp->name)。
  2. 标记只写标志,dsp->flag = O_WRONLY;
  3. open_device() 打开设备。调用顺序与录音相同,依次为 lib_open --> oss_open --> oss_audio_open_devfile --> oss_aduio_open_engine --> usbaudio_open
  4. play_file() 读取音频文件,并解析文件头,根据文件头类型选择对应的操作。
  5. play_iff() --> decode_sound() 播放音频文件。
  6. 申请内存空间,读取音频文件,将数据写入该空间中,调用 write 接口开始将数据写入设备。与录音相同,创建 uio 结构,调用 oss_audio_write()。
  7. 获取音频设备 audio_dev,查找其拥有 dmap_out 地址空间,将数据写入该控件,随后调用 launch_output()。
  8. 触发输出标记,开始将 dmap 空间中的数据进行输出。

调用 open 打开设备阶段,oss 框架为每一个音频设备创建内存空间,由 dmap_p 结构进行相关的描述,实际类型为 _dmap_t。

因此,oss 框架中,核心结构体为 _adev_t 结构,用于对设备进行描述,后期的初始,读,写等操作都是通过 _adev_t 结构来完成。
驱动主要对 _adev_t 结构进行填充,主要为驱动操作集合,使用的端口。

驱动集合结构为 audiodrv_t 和 _mixer_driver_t。端口由驱动根据硬件设备构建,同时由 _adev_t 指向。

设备打开时,驱动主要自行对端口进行设置。以 USB 为例,驱动主要为设备关联 usb 设备端点,同时创建通信管道(即 urb)。触发设备时,查看当前端口触发条件,随后通过端口的 usb 端点设备进行数据的发送或接收。

http://www.tj-hxxt.cn/news/22938.html

相关文章:

  • 广州移动网站建设免费的网页模板网站
  • 南昌手机模板建站百度客户端官网
  • 怎么做网站导航条营销型网站设计
  • 做相亲网站的安全责任做seo需要哪些知识
  • 网站的规划建设与分析惠州seo代理商
  • curl 账号本地化网站短期培训班学什么好
  • 企业专业网站建设谷歌sem推广
  • 网站编辑是网页制作么成年学校培训班
  • 烟台市住房和城乡建设厅网站直播网站排名
  • 什么叫网站根目录如何提高网站seo排名
  • 网站设计服务表邯郸seo推广
  • 台州路桥做网站的公司四种营销策略
  • 做php网站会员开店代码如何编写seo基础知识培训视频
  • 江苏企业网站制作哪家好东莞网络推广系统
  • 株洲网站开发软文写作的三个要素
  • 网站城市切换如何做全国疫情最新情况
  • java cms 做动漫网站深圳优化公司
  • 如何做网站的逻辑结构图企业网站优化关键词
  • 网站请人做的 域名自己注册的 知道网站后台 怎么挂自己的服务器上海网络营销上海网络推广
  • 做微网站常用软件营销推广软件有哪些
  • 高质量网站外链建设大揭秘软文网站大全
  • 做餐饮公司网站肇庆百度快速排名
  • 网站建设和数据库维护网页代码大全
  • 鹤壁建设网站推广渠道网站推广优化怎么做最好
  • 东莞做网站需要多少钱网址缩短在线生成器
  • 天津网站设计品牌广告语
  • 宿迁市建设局网站维修基金泉州seo培训
  • sns网站建设深圳关键词优化公司哪家好
  • 网站刚建好怎么做能让百度收录手机app免费下载
  • 网站建设新闻建网站需要什么条件