From: Miguel F. <mi...@ce...> - 2002-08-09 21:44:04
|
On Fri, 2002-08-09 at 09:03, Hamish Guthrie wrote: > The issue I have noticed is that in xine-engine/video_out.c, there is code > which retrieves the number of frame buffers from the driver, then sets > num_frame_buffers to that value (in my case 4 because I only have 4 decode > buffers), or 5, whichever is the greater. If I modify this code so that it > will accept 4 as the minimum number of frame buffers, I get a lot of errors > from the decoder such as: dropping b-frame because ref is bad (fw ref frame > 0, bad 1;bw ref frame 1, bad 1). > > I have not looked into the logic behind frame re-ordering and fwd/back > referencing yet, but wondered if the algorithm used has a limitation to a > minimum of 5 frames? Difficult question, since we don't know exactly what have you changed. The minimum of 5 frames is needed to prevent xine from doing weird things like blending overlay in a frame that was still needed as reference frame. For instance one frame is hold at video out driver to do the snapshot function, so if this is a critical thing you may try removing these lines from video_out.c: /* hold current frame for snapshot feature */ if( this->last_frame ) { vo_frame_dec_lock( this->last_frame ); } vo_frame_inc_lock( img ); this->last_frame = img; i'm not sure if it will help you thought. changes are you will really need to check why ref frame is bad. i guess you are working over our libmpeg2 plugin, and if i remember correctly every frame is "bad" until it gets completely decoded. btw, is this thing a commercial product or something? regards, Miguel |