b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

void函数如何调用_fgetc函数_fscanf函数的正确调用形式(4)

电脑杂谈  发布时间:2017-01-23 20:07:29  来源:网络整理

这就是我们实际中通过音频设备采集到的数字音频信号。根据实际中的量化位数,乘以不同量化因子。

我们再回到open al播放音频信号的程序中。

source_data =

MyGetOpenALAudioData(music_URL, &source_size,&source_format, &source_freq);通过上一小节的分析我们可以知道,open al读取进来的数据是存放在source_data所标示的地址中的。我们接下来要分析这里面存储的数据是不是我们所期待的。

我们可以编写一小段测试代码,并通过xcode的debug调试命令可以的到以下结果。

int i;

short t;

UInt32 *source_data1=source_data;

for (i=0;i<10;i) {

t=*(source_data1i);

}

下面利用刚才我们新建的工程播放本地pcm音频文件。首先利用matlab对wav文件进行解码。将解码之后的pcm文件保存下来。注意利用matlab解码之后的pcm文件是被归一化在-1到1之间的数据,要根据wav头文件信息中的参数,即nbits量化位数装化为相应的数据。例如在此工程中使用的是16bit量化。因此将matlab解码之后的pcm数据乘以32767。转化为short数据类型。至于文件扩展名,可以定义为.h文件,也可以定义为.txt文件。在本小节中使用的是short_pqfile.h来保存数据文件。注意利用matlab对文件保存,也具有一定的式。下面截取了一段pcm音频数据。可见这段音频数据按照n*1的数据结构来排列,数据类型为浮点型科学计数法。只所以设计成这种形式时为了方便我们在后续的文件操作中数据读取方便。

1.0240000e04

1.1177000e04

1.1819000e04

1.2099000e04

1.1969000e04 … …

以下是具体实现的源代码。在使用的时候将此段代码放置在:

source_data =

MyGetOpenALAudioData(music_URL, &source_size,&source_format, &source_freq);

….与alBufferDataStaticProc(buffer, source_format,source_data, source_size, source_freq)代码之间。

//pcm播放测试代码

1 const

char *filename1="/Users/zhengwei/Desktop/audio_play/audio_play_open_pcm/short_pqfile.h";

2 FILE *f1=fopen(filename1,"r");

3 int i=0;short t;float ui;

4 UInt32 *source_data1=source_data;

5 while(!feof(f1))

{

6fscanf(f1,"%f",&ui);

7t=(short)ui;

8*(source_data1i)=t;

}

9 fclose(f1);

10 source_size=i*4;

程序第一行定义文件全名所在的本地路径。注意这个short_pqfile.h文件在我的电脑中是这个路径,但是在你的电脑中可能就不是这个路径,因此在使用的时候需要将文件存放的路径改成目前你正在使用的工程路径。第二行根据文件路径利用文本打开函数fopen打开文本。第三行定义pcm音频播放程序所需要的一些参数。i定义文本文件中pcm文件中数据的个数,ui读取文本文件中的数据,t将读取的浮点类型数据转化为short短整型数据。第四行备份原始wav音频数据文件的存储地址。第五行判断文件中的内容是否读取完毕。第六行从文件f1中将数据保存在ui地址中。第七到第八行将从文本文件中读取的pcm数据转化为short类型,然后存在source_data1数据源地址中。并且i同时负责地址的步进以及pcm数据个数的计算。第九行关闭文本文件。第十行中i数据需要乘以4.因为这里采用的openal播放参数为双通道,16bit。而source_size代表的是字节的个数。因此这里需要乘以4。这里需要注意的是,我采用的pcm文件与原工程中所播放的wav音频文件的音频参数是基本相同的。fscanf函数的正确调用形式唯一不通的是数据的大小,因此我在播放本地音频文件的时候仅仅修改了音频数据大小source_size参数,对其他参数如音频通道、采样频率都沿用原工程中的参数。如果读者想播放自己所下载的pcm文件的时候,只休要将相应参数修改为你所想要播放的文件参数即可。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-28346-4.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...