• 10
  • 10月

总算有点看懂wma2wav(ffmpeg)中的IMDCT算法了。只是有点看懂。

wma2wav,其实就是从ffmpeg中将wma解码的程序提取了出来。IMDCT是其中的一个重要部份吧。小结了一下该程序对IMDCT的计算流程。

先是将IMDCT的式子进行分段移位,利用cos函数的对称性,将2N个点的IMDCT转换成N个点的DCT-IV算法。

然后对这N个点进行处理,以偶序列为实部,奇序列的逆序列为虚部,先进行预处理,然后就转换成N/2个点的FFT。计算完后,再进行相关的后处理,即可得到。

整个算法和http://www.ee.columbia.edu/~marios/mdct/mdct_giraffe.html中提到的imdtc4差不多。

花了几天时间终于弄明白这个预处理和后处理的推导流程。其实预处理和后处理的目的就是为了把表达示转换成标准DFT,这样就可以用FFT来进行计算了。仅此而已。

在FFT计算过程中,ffmpeg用的是按时间抽取的FFT算法,也就是先按位逆序来打乱顺序,然后计算,结果就是顺序的了。

» Tags:WMA, IMDCT

» 这篇文章共有3条评论,你可以在文章底部留下你的评论

  1. 洞房洞房环佩冷 Says:
    2010-11-16 10:38

    大幅度

  2. 2010-11-18 14:32

  3. lingxier Says:
    2012-12-03 16:09

    我一直也在做WMA中的IMDCT,我发现它的fft顺序并不是按位取反那么简单,你知道具体的输入顺序吗?

发表评论