summaryrefslogtreecommitdiff
path: root/src/libmpeg2/slice_xvmc_vld.c
diff options
context:
space:
mode:
authorThomas Hellström <totte67@users.sourceforge.net>2005-01-30 18:01:25 +0000
committerThomas Hellström <totte67@users.sourceforge.net>2005-01-30 18:01:25 +0000
commit204bc7799afd8ea60e34036d94a9051703e4848f (patch)
tree18c8e9e72b27b454d527edc5986b5b33ab254d2b /src/libmpeg2/slice_xvmc_vld.c
parent8277e17065942e71e3d9edc8cea27cd014209e5e (diff)
downloadxine-lib-204bc7799afd8ea60e34036d94a9051703e4848f.tar.gz
xine-lib-204bc7799afd8ea60e34036d94a9051703e4848f.tar.bz2
**BUGFIX**
Bug 1092411 Makes XvMC handle cases where each slice is split into more than two parts. This got broken on IDCT / MOCOMP with a previous commit to fix a search segfault. Has never worked before with VLD. Still IDCT / MOCOMP exhibit bad picture quality in this case but not worse than before it got broken. CVS patchset: 7375 CVS date: 2005/01/30 18:01:25
Diffstat (limited to 'src/libmpeg2/slice_xvmc_vld.c')
-rw-r--r--src/libmpeg2/slice_xvmc_vld.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/libmpeg2/slice_xvmc_vld.c b/src/libmpeg2/slice_xvmc_vld.c
index 006aea275..f099bc22a 100644
--- a/src/libmpeg2/slice_xvmc_vld.c
+++ b/src/libmpeg2/slice_xvmc_vld.c
@@ -192,7 +192,8 @@ void mpeg2_xxmc_slice( mpeg2dec_t *mpeg2dec, picture_t *picture, int code,
}
}
- if ((code == mpeg2dec->xvmc_last_slice_code + 1) &&
+ if (((code == mpeg2dec->xvmc_last_slice_code + 1) ||
+ (code == mpeg2dec->xvmc_last_slice_code)) &&
code <= mpeg2dec->xxmc_mb_pic_height) {
/*
@@ -220,6 +221,7 @@ void mpeg2_xxmc_slice( mpeg2dec_t *mpeg2dec, picture_t *picture, int code,
* went well, tell libmpeg2 that we are ready.
*/
+ mpeg2dec->xvmc_last_slice_code = code;
mpeg2_xxmc_vld_frame_complete(mpeg2dec,picture,code);
return;
} else {
@@ -228,7 +230,7 @@ void mpeg2_xxmc_slice( mpeg2dec_t *mpeg2dec, picture_t *picture, int code,
* Keep track of slices.
*/
- mpeg2dec->xvmc_last_slice_code++;
+ mpeg2dec->xvmc_last_slice_code = code;
}
} else {
@@ -259,7 +261,6 @@ void mpeg2_xxmc_vld_frame_complete(mpeg2dec_t *mpeg2dec, picture_t *picture, int
return;
}
xxmc->decoded = 1;
- mpeg2dec->xvmc_last_slice_code++;
if (picture->picture_structure == 3 || picture->second_field) {
if (xxmc->result == 0)
frame->bad_frame = 0;