实验六——MPEG2音频编码实验

本文详细介绍了MPEG2音频编码实验中的感知编码原理,包括利用人耳对某些频率不敏感的特性进行编码优化。通过对不同音频文件(音乐、噪声)的码率分配实例分析,展示了频域掩蔽效应和心理声学模型在码率分配中的应用。实验结果显示,噪声音频比特分配相对均匀,音乐音频则在高频子带上分配较少比特,这符合人耳对音频的感知特性。
摘要由CSDN通过智能技术生成

感知音频编码的设计思想
由于人耳对于某些频率段的声音听觉效果不明显,则对于此部分音频可以不编码。
频域掩蔽效应
在这里插入图片描述

心理声学模型
在这里插入图片描述
码率分配的实现思路
在这里插入图片描述
噪掩比等于信掩比减去信噪比,最好降低噪掩比到0。对最高NMR的子带分配比特,使获益最大的子带的量化级别增加一级。重新计算分配了更多比特子带的NMR。循环上述步骤,直到所有NMR都降到0或者没有比特可供分配。
main函数代码解读

  frame_info frame;//结构体包含头信息、比特分配表、声道数、子带数等内容
  frame_header header;//头信息
  char original_file_name[MAX_NAME_SIZE];//输入文件名
  char encoded_file_name[MAX_NAME_SIZE];//编码后输出文件名
  short **win_buf;
  static short buffer[2][1152];
  static unsigned int bit_alloc[2][SBLIMIT], scfsi[2][SBLIMIT];//存放2声道各个子带的比特分配表,SBLIMIT=32,也就是32个子带
  static unsigned int scalar[2][3][SBLIMIT], j_scale[3][SBLIMIT];//存放2声道,3组,每组12个样值的各子带的比例因子
  static double smr[2][SBLIMIT], lgmin[2][SBLIMIT], max_sc[2][SBLIMIT];
  // FLOAT snr32[32];
  short sam[2][1344];		/* was [1056]; */
  int model, nch, error_protection;
  static unsigned int crc;
  int sb, ch, adb;
  unsigned long frameBits, sentBits = 0;
  unsigned long num_samples;
  int lg_frame;
  int i;

  /* Used to keep the SNR values for the fast/quick psy models */
  static FLOAT smrdef[2][32];

  static int psycount = 0;
  extern int minimum;

  time_t start_time, end_time;
  int total_time;

  sb_sample = (SBS *) mem_alloc (sizeof (SBS), "sb_sample");
  j_sample = (JSBS *) mem_alloc (sizeof (JSBS), "j_sample");
  win_que = (IN *) mem_alloc (sizeof (IN), "Win_que");
  subband = (SUB *) mem_alloc (sizeof (SUB), "subband");
  win_buf = (short **) mem_alloc (sizeof (short *) * 2, "win_buf");

  /* clear buffers */
  memset ((char *) buffer, 0, 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值