为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

本例程主要介绍WAV格式音乐文件的播放 因为wav格式就是直接记录

2017-09-27 2页 doc 12KB 10阅读

用户头像

is_511210

暂无简介

举报
本例程主要介绍WAV格式音乐文件的播放 因为wav格式就是直接记录本例程主要介绍WAV格式音乐文件的播放 因为wav格式就是直接记录 本例程主要介绍WAV格式音乐文件的播放. 因为wav格式就是直接记录的声音的PCM数据,是原始值没有经过压缩处理的. wav文件由若干个chunk组成:RIFF WAVE Chunk,Format Chunk,Fact Chunk(可选),Data Chunk. 音乐数据在Data Chunk中,前面RIFF WAVE Chunk,Format Chunk,Fact Chunk(可选)的大小均为偶数. 因此在本例中我们播放与音频DAC对应的固定参数的...
本例程主要介绍WAV格式音乐文件的播放 因为wav格式就是直接记录
本例程主要介绍WAV格式音乐文件的播放 因为wav格式就是直接记录 本例程主要介绍WAV格式音乐文件的播放. 因为wav格式就是直接记录的声音的PCM数据,是原始值没有经过压缩处理的. wav文件由若干个chunk组成:RIFF WAVE Chunk,Format Chunk,Fact Chunk(可选),Data Chunk. 音乐数据在Data Chunk中,前面RIFF WAVE Chunk,Format Chunk,Fact Chunk(可选)的大小均为偶数. 因此在本例中我们播放与音频DAC对应的固定的WAV音乐,不再读取文件头识别音乐的采样率和大小. 同时也不区分文件头和数据,直接把所有数据全部 "扔" DAC. 本例我们使用的wav文件参数为: 位速1411Kbps(44.1K),16bit,stereo. <大部转换软件默认即本参数> 大多数系统中,从文件系统中读取数据的速度要比发送到设备中快很多. 但每建立一次读取数据的过程却耗时颇多. 因此大多数流处理中都使用双缓冲技术(也叫乒乓缓冲),本例也一样. 但本例使用RTT一个很有用的组件-内存池(mempool)来助我们实现. 内存池在创建时向系统申请一大块内存,然后分成同样大小的多个小内存块,形成链连接起来 (此链表也称为空闲链表).每次分配的时候,从空闲链表中取出头上一块,提供给申请者。 当申请不成功时,申请者即被挂起.我们正是利用此特性控制数据的读取进度. 运作流程: finsh>>wav("/test.wav") 1.打开文件. |-> 2.从内存池申请一片空间. | 如果不成功则挂起等待. <--- 如果此时有申请在等待,就会成功返回 <--------| | 3.读取文件中的数据到缓存中. | | 4.将缓存中的数据发送到DAC. | | | 如果设备已经在发送. |--当设备每发送完一片缓冲区,就释放本内存池--| | 则把设备添加到设备驱动的待发送队列. | |-- 5.判断文件是否读取完成,否则回到步骤2
/
本文档为【本例程主要介绍WAV格式音乐文件的播放 因为wav格式就是直接记录】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索