zoukankan      html  css  js  c++  java
  • AC3 IMDCT

    AC3 encoder 在进行MDCT时,使用两种长度的block。

    512 samples的block用于输入信号频谱是stationary,或者在时间上变化缓慢。在fs 为48k时,使用512 samples block产生256个transform coefficients,对应频率分辨率为24k/256 =93.75, 时间分辨率为1/93.75=10.7ms

    256 samples的block用于输入信号在时间上变化较快,能够产生较小的时间分辨率,可以减小pre-echo的长度。在fs 为48k时,使用256samples block产生256个transform coefficients,对应频率分辨率为24k/128 =187.5, 时间分辨率为1/187.5=5.3ms

    在encoder端会分析输入信号的频谱或时间变化特性来选择合适的block 长度。在bitstream中,每个channel包含一个bit的字段blksw[ch]来标识选择哪个block.

    当blksw=0时,使用512 sample block,当blksw=1时,使用256 samples block.

    AC3 IMDCT:

    当N=512时,在decoder使用N/4点complex IFFT做pre-twiddle 和post-twiddle来计算IMDCT.

    512 点进行IMDCT计算过程如下:

    1)定义MDCT transform coefficients X[k],k=0,1,2....N/2-1

    2)pre-IFFT complex multiply

    2)进行complex IFFT

    3)post-IFFT complex multiply

    4) window and de-interleave

    5)overlap and add

    当前block的first half 和前一个block的second half相加来消除时域混叠(TDAC)

    256点进行IMDCT计算过程如下:

    1)定义MDCT transform coefficients X[k],k=0,1,2....N/2-1

     

    2)pre-IFFT complex multiply

     

    3)complex IFFT

    4)post-IFFT complex multiply

    5)window and de-interleave

    6) overlap and add

  • 相关阅读:
    CCS的一些问题
    SignalTapII新特性Storage Qualification
    信号发生器输出幅值与输出阻抗的关系
    关于print函数的一些细节问题探讨
    hp3020 打印机驱动完全卸载方法
    【转】Ruby Selenium 测试
    [nodejs]CoffeeScript里实现Mixin
    [Ruby]ARGF的使用
    【Groovy】使用Maven集成Groovy代码
    [nodejs]optimist库
  • 原文地址:https://www.cnblogs.com/fellow1988/p/8870759.html
Copyright © 2011-2022 走看看