最近用vlc的0.9.9播放一段视频,出现了下列警告:
decoder is leaking pictures, resetting the heap/*****************************************************************************
* RunThread: video output thread
*****************************************************************************
* Video output thread. This function does only returns when the thread is
* terminated. It handles the pictures arriving in the video heap and the
* display device events.
*****************************************************************************/
static void RunThread( vout_thread_t *p_vout)
在这个函数里面,看到下列code, 很难理解了,
!p_picture->b_force &&
p_picture != p_last_picture &&
display_date < current_date + p_vout->render_time &&
b_drop_late )
这个p_vout->render_time ,到底是怎么算出来的。
到底,pcr,pts,出现了什么错误,导致不能播放,还没有搞清楚。
以下内容为转载:
http://www.wangchao.net.cn/bbsdetail_61529.htmlvout_DatePicture ( vout_thread_t *p_vout, picture_t *p_pic ) : Gives the picture a presentation date. You can start working on a picture before knowing precisely at what time it will be displayed. For instance to date an I or P picture, you must wait until you have decoded all previous B pictures (which are indeed placed after - decoding order != presentation order).
vout_DisplayPicture ( vout_thread_t *p_vout, picture_t *p_pic ) : Tells the video output that a picture has been completely decoded and is ready to be rendered. It can be called before or after vout_DatePicture.
vout_DestroyPicture ( vout_thread_t *p_vout, picture_t *p_pic ) : Marks the picture as empty (useful in case of a stream parsing error).
不过上面这个内容说的很简洁了,不详细。