summaryrefslogtreecommitdiff
path: root/src/libmpeg2/slice_xvmc.c
diff options
context:
space:
mode:
authorThomas Hellström <totte67@users.sourceforge.net>2005-04-26 09:02:55 +0000
committerThomas Hellström <totte67@users.sourceforge.net>2005-04-26 09:02:55 +0000
commit93236a755d9303fa1eee68853d35b502b8395128 (patch)
tree60a34b1c2fe8725106552b6a7acf86b4b698f025 /src/libmpeg2/slice_xvmc.c
parent0e226aea818f0735b2f566894856eeee6a0a9a36 (diff)
downloadxine-lib-93236a755d9303fa1eee68853d35b502b8395128.tar.gz
xine-lib-93236a755d9303fa1eee68853d35b502b8395128.tar.bz2
**BUGFIX**
Fix IDCT / Mocomp rendering errors in xxmc and xvmc modules caused by them not resetting the macroblock counter when a frame is created. Fixed libmpeg2 Mocomp XvMC forgetting to handle the signed / usigned intra flag, resulting in a purple screen on Nvidia when XvMC Mocomp only is used. CVS patchset: 7500 CVS date: 2005/04/26 09:02:55
Diffstat (limited to 'src/libmpeg2/slice_xvmc.c')
-rw-r--r--src/libmpeg2/slice_xvmc.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/libmpeg2/slice_xvmc.c b/src/libmpeg2/slice_xvmc.c
index f3ce5fb74..43d9666ee 100644
--- a/src/libmpeg2/slice_xvmc.c
+++ b/src/libmpeg2/slice_xvmc.c
@@ -1663,7 +1663,8 @@ static inline int slice_xvmc_init (picture_t * picture, int code)
picture->limit_y = height - 16;
//TODO conversion to signed format signed format
- if((picture->mc->xvmc_accel & ACCEL) == MOTION_ACCEL) {
+ if((picture->mc->xvmc_accel & ACCEL) == MOTION_ACCEL &&
+ !(picture->mc->xvmc_accel & SIGNED_INTRA)) {
//Motion Comp only unsigned intra
// original:
picture->dc_dct_pred[0] = picture->dc_dct_pred[1] =
@@ -1920,7 +1921,8 @@ void mpeg2_xvmc_slice (mpeg2dec_accel_t *accel, picture_t * picture, int code, u
picture->pitches[2]); // cc2 croma
}
- if((picture->mc->xvmc_accel & ACCEL) == MOTION_ACCEL) {
+ if((picture->mc->xvmc_accel & ACCEL) == MOTION_ACCEL &&
+ !(picture->mc->xvmc_accel & SIGNED_INTRA)) {
// original:
picture->dc_dct_pred[0] = picture->dc_dct_pred[1] =
picture->dc_dct_pred[2] = 128 << picture->intra_dc_precision;
@@ -1977,7 +1979,8 @@ void mpeg2_xvmc_slice (mpeg2dec_accel_t *accel, picture_t * picture, int code, u
mba_inc += mba->mba;
if (mba_inc) {
//TODO conversion to signed format signed format
- if((picture->mc->xvmc_accel & ACCEL) == MOTION_ACCEL) {
+ if((picture->mc->xvmc_accel & ACCEL) == MOTION_ACCEL &&
+ !(picture->mc->xvmc_accel & SIGNED_INTRA)) {
// original:
picture->dc_dct_pred[0] = picture->dc_dct_pred[1] =
picture->dc_dct_pred[2] = 128 << picture->intra_dc_precision;