summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiguel Freitas <miguelfreitas@users.sourceforge.net>2003-04-29 13:47:48 +0000
committerMiguel Freitas <miguelfreitas@users.sourceforge.net>2003-04-29 13:47:48 +0000
commit87f46ff35a96d3405217bdf7c0cf443603722d75 (patch)
treee63bb4adb56623215fb7485ec8fd64c7100b4551
parent59cf71a556f257e53e99a2019561bac4b44736e9 (diff)
downloadxine-lib-87f46ff35a96d3405217bdf7c0cf443603722d75.tar.gz
xine-lib-87f46ff35a96d3405217bdf7c0cf443603722d75.tar.bz2
sometimes old frames are displayed after a seek (reset)
mark them as bad so that doesn't happen obs: i'm aware this is a delicate code, please report if this change causes any problems (like with dvd menus). i hope it won't. CVS patchset: 4706 CVS date: 2003/04/29 13:47:48
-rw-r--r--src/libmpeg2/decode.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/libmpeg2/decode.c b/src/libmpeg2/decode.c
index d44940e3a..88d520e12 100644
--- a/src/libmpeg2/decode.c
+++ b/src/libmpeg2/decode.c
@@ -601,9 +601,18 @@ void mpeg2_reset (mpeg2dec_t * mpeg2dec) {
mpeg2_discontinuity(mpeg2dec);
- if( !picture->mpeg1 )
+ if( !picture->mpeg1 ) {
mpeg2dec->is_wait_for_ip_frames = 2;
- else {
+
+ /* mark current frames as bad so they won't make to screen */
+ if ( picture->current_frame )
+ picture->current_frame->bad_frame=1;
+ if (picture->forward_reference_frame )
+ picture->forward_reference_frame->bad_frame=1;
+ if (picture->backward_reference_frame)
+ picture->backward_reference_frame->bad_frame=1;
+
+ } else {
/* to free reference frames one also needs to fix slice.c to
* abort when they are NULL. unfortunately it seems to break
* DVD menus.