首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > 多媒体 >

为何MP3的帧与帧之间存在垃圾信息

2013-01-11 
为什么MP3的帧与帧之间存在垃圾信息?RT,最近在看MP3的解码过程,每一帧解码时有这样一段代码:bytes_to_disc

为什么MP3的帧与帧之间存在垃圾信息?
RT,最近在看MP3的解码过程,每一帧解码时有这样一段代码:


bytes_to_discard = frame_start - main_data_end
             - III_side_info.main_data_begin ;
             if( main_data_end > 4096 )
             {   frame_start -= 4096;
                 rewindNbytes( 4096 );
             }

             frame_start += main_data_slots(fr_ps);
             if (bytes_to_discard < 0) {
         printf("Not enough main data to decode frame %d.  Frame discarded.\n", 
                        frameNum - 1); break;
             }
             for (; bytes_to_discard > 0; bytes_to_discard--) hgetbits(8);


这个我已经理解了,bytes_to_discard是指在码流的buffer里,一帧与前一帧之间没有用的main data,这些数据不需要解码,直接丢掉,跳过就可以了。

但是我不明白,为啥要有这样的垃圾数据存在?????????
[解决办法]
mp3数据帧,包括帧头和数据:
每个帧都有一个四字节长的帧头,接下来可能有两个字节的CRC校验,其存在由帧头中的具体信息决定。
接着就是帧的实体数据,也就是MAIN_DATA了。
解完第一帧后,就不需要解接来下其它帧的帧头,所以直接丢弃。
[解决办法]
mp3中是有垃圾数据,可是你说的MAIN_DATA不是垃圾数据吧。

一般帧头会有11个bit的同步码,0xff,x0e0。同步码与同步码之间的数据就是完整的一帧数据了。

热点排行