一.实验原理
二.实验流程
理解过程
- 理解程序设计的整体框架
- 理解感知音频编码的设计思想
- 理解心理声学模型的实现过程
临界频带的概念
掩蔽值计算的思路
理解码率分配的实现思路
输出要求
- 输出音频的采样率和目标码率
- 选择某个数据帧,输出
该帧所分配的比特数
该帧的比例因子
该帧的比特分配结果
————————————————
关键代码
FILE *output_txt;
char temp[100] = "info.txt";
int main (int argc, char **argv)
{
...
output_txt = fopen(temp, "w");
if (output_txt == NULL)
printf("Creating output txt file failed.\n");
...
}
int sb, gr, ch;
if (frameNum == 66)
{
fprintf(output_txt, "采样频率为 %d kHz. \n 目标码率为 %d kbps.\n",
header.sampling_frequency, bitrate[header.version][header.bitrate_index]);
fprintf(output_txt, "输出的为第 %d 帧\n", frameNum);
fprintf(output_txt, "分配的比特数为 %d\n", adb);
fprintf(output_txt, "比例因子为:\n");
for (ch = 0; ch < nch; ch++)
{
fprintf(output_txt, "channel[%2d] \n", ch + 1);
for (sb = 0; sb < frame.sblimit; sb++)
{
fprintf(output_txt, "subband[%2d]: ", sb + 1);
for (gr = 0; gr < 3; gr++)
{
fprintf(output_txt, "%2d\t", scalar[ch][gr][sb]);
}
fprintf(output_txt, "\n");
}
}
}
实验结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210628204150409.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81NTc1MDQxMA==,size_16,color_FFFFFF,t_70)![在这里插入图片描述](https://img-blog.csdnimg.cn/20210628204208391.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81NTc1MDQxMA==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210628204229277.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81NTc1MDQxMA==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210628204250316.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81NTc1MDQxMA==,size_16,color_FFFFFF,t_70)