MP3 编码总算初步完成了,就此打住
Layer III的编码是我有史以来最艰苦的一次课题,过了年以后就陆续在写,开始之前已经有心理准备,这是一次跨越万水千山荆棘满途的西征路,走到哪走不下去了,可能真得要依二师兄的话,咱们把行李分了,你回你的水帘洞当土匪,我回我的高老庄当姑爷去。
还是某位高人说得高,现场有神灵,天下间万事万物,只要你足够专注,突破总在绝望中咋现,仿佛上帝之手在生死关头救你一把。此中多少困难不足为外人所道,非亲历亲为,说了也白说。依照中国人一向惯性思维,别人搞的基本上是碎料,自己搞的,基本上领先火星别人绝对搞不了,所以,在此就不再如同祥林嫂似的逮个人就哭诉这课题有多恶心,总之,搞过的人自然心领神会会心一笑,未搞过的人绝不肯垂下高贵的头正视一下。MP3,注定就是小众课题。
和每一次的课题一样,开始的时候以为完成了就阿弥陀佛功德圆满,结果都是带出了无限多的问题草草了事。MP3是跨越了计算机和通信两个领域的技术。核心部分是滤波器的设计,这部分学信号学透了也只能对其有个感性认识,因为里面的MDCT变换是没有一本信号的书有推导过程。从DFT到DCT是一次的改进,从DCT到MDCT又是一次改进。MDCT恐怕是80年代以后的技术,我们的书本基本上都是100年前的原理。因此,只能用DFT的原理来猜测MDCT的性质,少了证明过程,总觉得少了点什么。但真正动手靠的是计算机的功底,硬桥硬马地做结构。
和以往的任何一次编码一样,遵循的顺序是先搞解码再搞编码,解码调通了以后,等于MP3码流格式吃透了。很幸运,在解码过程中有大量的资料和数据可对,否则,单凭一份错漏百出的ISO-11172文档,做到死那天都猜不透细节。解码过程异常神勇,天天在对数据,一点一点地调对。但到了编码阶段就溃不成军,在内忧外患二B当道下心力交瘁。最后的临门一脚霍夫曼编码如同一道久久难以愈合的刀口一样拖了足足一个月。虽然深知这一步一咬牙就迈过去了,但是就是打不起精神来再收尾。直到前两天才终于调通。
做这个课题,本来就不是为了高保真编码。高保真压缩注定就不是个人英雄主义可以搞的,而是精英群体作战的结果。我只不过需要一条低带宽的音频高速公路,能在10k字节/秒以下的速度传人声足矣。因此将感觉模型移除,皆因这部分不但是细活而且是重体力活,而且很吃CPU,在上年做的Matlab感觉模型中已经得到印证。我没有把握在加了感觉模型以后还能保证实时压缩。所以,我用了暴力压缩方法,自然引起失真。不过还好,如果单是人声,质量还算不错,做IP电话绝对每问题,但是乐声就差了。但是由引起了一个问题,后面的量化迭代在没有感觉模型的情况下不好估计初值,结果就是迭代次数可能因此多了不少。如果这部分抵消了感觉模型的时间,那么带来了一点启示:每准加了感觉模型对速度速度影响不大了。
总算把这个框架搭起来了,如同中诚广场一样,就先让它烂尾般地矗在那儿,不装修没水电。优化先不搞了,这是个耗时间的活,但会很爽,一秒一秒地提速心里有谱。中诚广场一烂13年终于有主,这条音频公路不知道猴年马月才能够真正通车。
鉴于不知道CSDN的发贴规则,故java源代码下载连接后面再发,甚至不发,同道中人留个邮件。如果这都删,那只能证明这CSDN上肯定有仇家。