diff options
author | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2002-04-02 02:19:42 +0000 |
---|---|---|
committer | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2002-04-02 02:19:42 +0000 |
commit | d38f4b69cb45fe215e84278f46a96649eb136ee6 (patch) | |
tree | 76f5c29d42d8b1f99317b02c8a93d7e72320d454 /src | |
parent | bc085b3b89b232b2d972221048f0cb947487b2b1 (diff) | |
download | xine-lib-d38f4b69cb45fe215e84278f46a96649eb136ee6.tar.gz xine-lib-d38f4b69cb45fe215e84278f46a96649eb136ee6.tar.bz2 |
enable flusing the same frame more than once
CVS patchset: 1661
CVS date: 2002/04/02 02:19:42
Diffstat (limited to 'src')
-rw-r--r-- | src/libmpeg2/decode.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/libmpeg2/decode.c b/src/libmpeg2/decode.c index 2c2020ee9..d94382e44 100644 --- a/src/libmpeg2/decode.c +++ b/src/libmpeg2/decode.c @@ -474,20 +474,24 @@ void mpeg2_flush (mpeg2dec_t * mpeg2dec) { if (!picture) return; - - if (picture->backward_reference_frame && !picture->backward_reference_frame->drawn - && !picture->backward_reference_frame->bad_frame) { + + /* we use drawn = 2 here as a special case: the frame can be flushed + * more than once (thus fixing the problem of blasting unfinished + * frames). + */ + if (picture->current_frame && picture->current_frame->drawn != 1 + && !picture->current_frame->bad_frame) { vo_frame_t *img; - printf ("libmpeg2: blasting out backward reference frame %d on flush\n", - picture->backward_reference_frame->id); + printf ("libmpeg2: blasting out current frame %d on flush\n", + picture->current_frame->id); - picture->backward_reference_frame->drawn = 1; + picture->current_frame->drawn = 2; /* output a copy instead of the frame used by decoder */ - img = picture->backward_reference_frame->instance->duplicate_frame(picture->backward_reference_frame->instance, - picture->backward_reference_frame); + img = picture->current_frame->instance->duplicate_frame(picture->current_frame->instance, + picture->current_frame); img->pts = 0; img->bad_frame = 0; img->drawn = 1; |