1、理解程序设计的整体框架
2、理解感知音频编码的设计思想
在m2aenc.c中添加代码:
FILE *output=NULL;
output=fopen("output.txt","w");
……
//////add by zgy
if(frameNum==100)
{
int k,t,i;
fprintf(output,"sample_rate=%.1f khz\n",s_freq[header.version][header.sampling_frequency]);///输出采样率
fprintf(output,"bitrate=%d kbps\n", bitrate[header.version][header.bitrate_index]);///输出目标码率
fprintf(output,"frameNum=%d\n",frameNum);
fprintf(output,"available_bits=%d\n",adb);///输出该帧的可用比特数
fprintf(output,"scale_factors:\n");///输出该帧的比例因子
for(k=0;k<nch;k++)
{
fprintf(output,"channel[%d]\n",k);
for(i=0;i<frame.sblimit;i++)
{
fprintf(output,"subband[%d]:",i);
for(t=0;t<3;t++)
{
fprintf(output,"%d\t",scalar[k][t][i]);
}
fprintf(output,"\n");
}
}
}
///end
transmission_pattern (scalar, scfsi, &frame);
main_bit_allocation (smr, scfsi, bit_alloc, &adb, &frame, &glopts);
///add by zgy
if(frameNum==100)
{
int k,i;
fprintf(output,"bit_allocation:\n");///输出该帧的比特分配结果
for(k=0;k<nch;k++)
{
fprintf(output,"channel[%d]\n",k);
for(i=0;i<frame.sblimit;i++)
{
fprintf(output,"subband[%d]:%d\n",i,bit_alloc[k][i]);
}
}
}
///end
从输出结果可以看到,这是一个单声道音频文件,每个子带的三个比例因子相差不大,通过采用比例因子选择信息可以压缩更多的冗余数据;从比特分配结果可以看到,低频子带分配的比特数较多,高频分配的较少,这样可以保留更多的有用数据,使压缩后的音频失真最小。
本文地址:https://blog.csdn.net/zgyggy/article/details/74097167
如对本文有疑问, 点击进行留言回复!!
Xamarin 安卓 相机 各种坑 目标API Android 6以后,我选的目标API版本是 Android 10
Android 9.0+软件某些功能突然暴毙:cleartext not permitted
Android : Resource is not a Drawable (color or path)
Flutter问题集锦——Android Studio 4.0.1 在AVD Manger中启动模拟器报“unable to locate abd”
网友评论