首页 新闻 搜索 专区 学院

为什么MP3的帧与帧之间存在垃圾信息?

0
悬赏园豆:10 [待解决问题]

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,这些数据不需要解码,直接丢掉,跳过就可以了。

但是我不明白,为啥要有这样的垃圾数据存在?????????

Writers的主页 Writers | 初学一级 | 园豆:136
提问于:2012-09-20 16:11
< >
分享
所有回答(1)
0

你找几个mp3文件调试下,观察下 bytes_to_discard 的变化情况。

Launcher | 园豆:45045 (高人七级) | 2012-09-20 16:36

额。。我看了下,但似乎没啥规律。。。

支持(0) 反对(0) Writers | 园豆:136 (初学一级) | 2012-09-20 16:44

@Writers: 我也不了解,不过你是不是可以从 一帧的大小+bytes_to_discard 的值来看看是否有规律。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2012-09-20 16:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册