实验6 MPEG音频编码

一、MPEG音频编码采用的技术:

  • 心理声学模型
  • 子带编码
  • 动态比特分配
  • 比例因子
  • 时域&频域分析
    ……

MPEG-1 Audio LayerII编码器原理

传入编码器的PCM码流分为两路:一路做时域分析,一路做频域分析。时域分析将码流分解为32个子带分别进行滤波,每个子带有12个样本(MPEG-2有12*3个),提取比例因子传给做频域分析(1024点FFT)的一路。
动态比特分配的目的是使整帧和每个子带的总噪声—掩蔽比最小。具体算法如下:

码率分配


二、实验代码:

m2aenc.c

int main (int argc, char **argv)
{
    ……
    adb = available_bits (&header, &glopts);
    //print the available_bits of the 3th frame
    if (frameNum == 3)
        fprintf(stderr,"available_bits number of the 3th frame is %d\n",adb);
    ……
   scale_factor_calc (*sb_sample, scalar, nch, frame.sblimit);
    pick_scale (scalar, &frame, max_sc);

    {
        //print the available_bits of the 3th frame
        int sb,gr,ch;
        if(frameNum==3)
        {
            fprintf(stderr,"\nScale_Factor:\n");
            for(ch=0;ch<nch;ch++)
            {
                fprintf(stderr,"channel[%d]\n",ch+1);
                for(sb=0;sb<frame.sblimit; sb++)
                {
                    fprintf(stderr,"subband[%d]:   ",sb+1);
                    for(gr=0;gr<3;gr++)
                    {
                        fprintf(stderr,"%d   ",scalar[ch][gr][sb]);
                    }
                    fprintf(stderr,"\n");
                }
            }
        }
    }
    ……
    transmission_pattern (scalar, scfsi, &frame);
    main_bit_allocation (smr, scfsi, bit_alloc, &adb, &frame, &glopts);

    {
        //print the bit_allocation of the 3th frame
        int sb,gr,ch;
        if(frameNum==3)
        {
            fprintf(stderr,"\nbit_allocation:\n");
            for(ch=0;ch<nch;ch++)
            {
                fprintf(stderr,"channel[%d]\n",ch+1);
                for(sb=0;sb<frame.sblimit; sb++)
                {
                    fprintf(stderr,"subband[%d]:   %d\n",sb+1,bit_alloc[ch][sb]);
                }
            }
        }
    }

三、实验结果及分析:

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
图中显示了音频的采样率是44.1kHz,目标码率是192kbps,为第三帧分配的比特数为5016,并输出了第三帧的比例因子和比特分配结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值