• 27
  • 9月

这几天,一直在看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的输出样点。

加窗这一块暂时还没搞懂,还需要进一步学习。

  • 26
  • 9月

又是一年八月十九,这个被遗忘的日子。

今天,是单身二十四周年的纪念日吧。果然,日子过得还是很平静。早晨,一样地去上班、打卡。中午,突然间心血来潮,出去买了几个小蛋糕,也没说为什么,就说突然想吃蛋糕,然后分给了周边的几个同事。

自从发生了那事以后,这一段时间,似乎也没有什么急的任务了。然后,又开始学大学时最遗憾的一门课:数字信号处理。也许这是给我的再一次机会吧。

老家的房价依然飙升着。我实在没想明白,为什么像这种五六线的小城市,房价也能涨成这样。父母已经奔波了大半辈子了,今天的愿望就是,希望父母能住在自己的房子,哪怕就是一间小水泥格子。

杂乱的心。。。。

  • 18
  • 9月

突然想起大学时,睡在我的下铺的小B同学。小B当然不是真名,也不是我们给的外号。只是,在本文中对他的一个代号,就像小A,小C一样,没有什么特别的含义。

小B同学经常是我们宿舍“开涮”的对象。记得有一次,我们都躺在床上,我开玩笑似地对小B说:我的床下躺着一坨臭肉。当时,小B同学就立即反驳:我的床上才躺着一坨臭肉。于是乎,整个宿舍都笑了。小B同学这时也才反应了过来,于是纠正到:我的上铺……但是已经来不及了。这句话已经成为宿舍的焦点。

还有一次,我们一起去打话,我又在涮他,他就“生气”地踢了我一下,并说“我捶你一脚”。然后,“捶你一脚”又成为我们宿舍的流行语。当然,下一次的时候,小B同学就纠正为“踹你一脚”,但是这一次他用的是手。

小B的趣事还很多,有一些事情当时笑笑,后来也就忘了。毕业两年多了,突然有点想念小B,想念大学的生活了。

  • 16
  • 9月

给妈妈寄了一盒月饼。果然,妈妈打电话给我说:字写得真丑!

  • 8
  • 9月

简单记录一下USB的DP与DM状态。

RESET,DP、DM都拉低,并维持20MS以上。
SUSPEND,处于IDLE状态DP为高,DM为低,即连续三次没有等到SOF。
RESUME,DP为低、DM为高,并维持20MS以上。

在做USB的Host时,有几个地方需要注意:
1、在做插拔简测时,检测到DP没有上拉时间,判定设备掉线的时间一定要远远大于RESET的时间。因为在RESET的时候,DP可能拉低很长一段时间,会造成拔出误判;
2、在整个USB的枚举及通信过程,不要去随意修改DP、DM的上下拉电阻,可能会对设备制造一些RESUME误判等。
3、在检测到设备插入时,最好能第一时间对设备进行RESET。
4、在发送第一条命令之前,确认发送足够的SOF,以便部分芯片内部的初始化。
5、SCSI命令的超时时间,建议采取Windows的标准,也就是10s。