summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libvo/vo_x11.c6
-rw-r--r--postproc/swscale.c4
-rw-r--r--postproc/swscale_template.c4
3 files changed, 7 insertions, 7 deletions
diff --git a/libvo/vo_x11.c b/libvo/vo_x11.c
index 9ba5edbf96..547d59f46a 100644
--- a/libvo/vo_x11.c
+++ b/libvo/vo_x11.c
@@ -178,11 +178,11 @@ static uint32_t init( uint32_t width,uint32_t height,uint32_t d_width,uint32_t d
image_width=vo_screenwidth;
image_height=vo_screenheight;
} else {
- image_width=d_width&(~3);
+ image_width=d_width&(~7);
image_height=d_height;
}
- scale_xinc=(width << 8) / image_width - 1; // -1 needed for proper rounding
- scale_yinc=(height << 16) / image_height;
+ scale_xinc=(width << 16) / image_width - 2; // needed for proper rounding
+ scale_yinc=(height << 16) / image_height +2;
SwScale_Init();
}
diff --git a/postproc/swscale.c b/postproc/swscale.c
index 02e9650892..3b0e7b9e15 100644
--- a/postproc/swscale.c
+++ b/postproc/swscale.c
@@ -71,7 +71,7 @@ static uint8_t funnyUVCode[10000];
// *** bilinear scaling and yuv->rgb conversion of yv12 slices:
// *** Note: it's called multiple times while decoding a frame, first time y==0
// *** Designed to upscale, but may work for downscale too.
-// s_xinc = (src_width << 8) / dst_width
+// s_xinc = (src_width << 16) / dst_width
// s_yinc = (src_height << 16) / dst_height
void SwScale_YV12slice_brg24(unsigned char* srcptr[],int stride[], int y, int h,
unsigned char* dstptr, int dststride, int dstw, int dstbpp,
@@ -104,7 +104,7 @@ static int s_xinc2_diff=0;
int canMMX2BeUsed;
// we need that precission at least for the mmx2 code
-s_xinc*= 256;
+//s_xinc*= 256;
s_xinc2=s_xinc>>1;
canMMX2BeUsed= (s_xinc <= 0x10000 && (dstw&31)==0) ? 1 : 0;
diff --git a/postproc/swscale_template.c b/postproc/swscale_template.c
index 02e9650892..3b0e7b9e15 100644
--- a/postproc/swscale_template.c
+++ b/postproc/swscale_template.c
@@ -71,7 +71,7 @@ static uint8_t funnyUVCode[10000];
// *** bilinear scaling and yuv->rgb conversion of yv12 slices:
// *** Note: it's called multiple times while decoding a frame, first time y==0
// *** Designed to upscale, but may work for downscale too.
-// s_xinc = (src_width << 8) / dst_width
+// s_xinc = (src_width << 16) / dst_width
// s_yinc = (src_height << 16) / dst_height
void SwScale_YV12slice_brg24(unsigned char* srcptr[],int stride[], int y, int h,
unsigned char* dstptr, int dststride, int dstw, int dstbpp,
@@ -104,7 +104,7 @@ static int s_xinc2_diff=0;
int canMMX2BeUsed;
// we need that precission at least for the mmx2 code
-s_xinc*= 256;
+//s_xinc*= 256;
s_xinc2=s_xinc>>1;
canMMX2BeUsed= (s_xinc <= 0x10000 && (dstw&31)==0) ? 1 : 0;