- 14
- 12月
今天删除了网站上安装的dokuwiki。
dokuwiki是早期想用来整理一些东东用的,最后还是没能好好地经营下去。算了,还是删了。
然后重新整理了一下那个mp3与wma的解码对ram和mips的需求。
突然发现,我们现在技术进步还是挺快的啊,现在我们的解码技术,已经完爆这些指标了啊,
有木有!
今天删除了网站上安装的dokuwiki。
dokuwiki是早期想用来整理一些东东用的,最后还是没能好好地经营下去。算了,还是删了。
然后重新整理了一下那个mp3与wma的解码对ram和mips的需求。
突然发现,我们现在技术进步还是挺快的啊,现在我们的解码技术,已经完爆这些指标了啊,
有木有!
Spirit DSP 解码处算法指标
SpiritDSP是一家提供音视频方案的公司。以下主要就是整理一下该公司提供方案的一些算法的指标,以便作为日后的评估及程序优化的一个参考指标。
MP3解码
平台 | ARM7 | ARM9 | ARM9E | ARM11 | Tensilica HFi2 | Cortex-M3 | Nios II | TI C55xx |
平均MIPS | 19.5 | 17.5 | 8 | 7.5 | 5.7 | 23 | 18 | 12 |
峰值MIPS | 25 | 22 | 10 | 9.5 | 8 | 28 | 22 | 13 |
程序大小(KB) | 16.5 | 19.7 | 15 | 16.5 | 19.9 | 13.7 | 16 | 11.4 |
常量大小(KB) | 7.5 | 7.2 | 6.6 | 7.5 | 15 | 7.6 | 6.8 | 7.5 |
连续变量(KB) | 12.1 | 12.3 | 12.1 | 12.1 | 20.1 | 12.3 | 13.3 | 12.3 |
临时变量(KB) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
堆栈(KB) | 0.5 | 0.5 | 0.5 | 0.5 | 1 | 0.5 | 0.5 | 0.5 |
平台 | AudioDE Revision2 |
平均MIPS | 5 |
峰值MIPS | 5.5 |
程序大小(KB) | 27 |
Y Memory(KB) | 15 |
X Memory(KB) | 12 |
WMA解码
这几天,一直在看WMA解码的IMDCT及加窗重构部分。
经常了很多资料的查阅,终于对这一块有了一个初步的认识。
第一个认识就是:其实不管是MP3还是WMA解码,整个大的流程都是差不多的。先是一个Huffman解码,反量化,然后就是立体声合成,然后就是IMDCT及加窗,最后,MP3还有一个子带合成。
第二个认识就是重点看了IMDCT这一块了。其实大学时是有学过数字信号处理的。只是大学时感觉这门课好抽象,也没好好学好。现在,也算是一次补课的机会吧。
在音视频中,编码时一般我们会用一些“变换”来对样点进行处理,将时域信号转换到频域,以消除信号的相关性。因此,在解码过程中,需要用“逆变换”来将频域上的点转回时域,还原出原来的音视频信号。
傅立叶变换是整个信号处理的基础。DFT是离散傅立叶变换,它先将傅立叶信号在时域上进行离散,变成离散时间的傅立叶变换,然后在频域上再进行离散,就成了傅立叶变换了。
DCT,即离散余弦变换。它其实是离散傅立叶变换的一个简换,只有实部而没有虚部。DCT的变换公式有很多(8条),在JPEG图像压缩当中就有用到DCT变换。但是DCT变化有一个缺点:DCT变换是分块进行的,块与块之间不能平滑过度,可能会对音频信号带来噪声。
MDCT全称是改进的离散余弦变换。主要在DCT变换进行改进,对前后块进行混叠处理。也就是说2N的样点的输入,得到N的样点的输出。IMDCT则相反,N个样点的输入,得到2N的样点的输出。但是需要注意的是:假设原信号为
a, b, c。 MDCT(a, b) = A, MDCT(b, c) = B。 然后 IMDCT(A) = a1, b2,IMDCT(B) = b1, c2。然后再进行混叠,b1+b2才是b的输出样点。
加窗这一块暂时还没搞懂,还需要进一步学习。