summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2011-04-07 21:08:49 +0000
committerUoti Urpala <uau@mplayer2.org>2011-05-02 00:36:20 +0300
commitdbde82d0f27819f707a6b35f8c9424653a9dd544 (patch)
treec1aefbaf8dff67ca667fa5bb8963bc1b37ac1f14
parente617653265aeb63cc555761b685ca98a6e2cb80f (diff)
downloadmpv-dbde82d0f27819f707a6b35f8c9424653a9dd544.tar.bz2
mpv-dbde82d0f27819f707a6b35f8c9424653a9dd544.tar.xz
sub/spudec: fix artefacts at right border of subtitles
Fix artefacts at right border of scaled bitmap subtitles by clearing the destination to 0 first if the width is not a multiple of 8. This is necessary because some of the optimized sub drawing functions always draw pixels in multiples of 8, so we cannot rely on any "dirt" in the "unused" borders being ignored. Note that due to the way rendering works, both alpha and the image need to be cleared. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33230 b3059339-0415-0410-9bf9-f77b7e298cf2
-rw-r--r--sub/spudec.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sub/spudec.c b/sub/spudec.c
index f48d47fd2a..dbf956bb25 100644
--- a/sub/spudec.c
+++ b/sub/spudec.c
@@ -920,6 +920,10 @@ void spudec_draw_scaled(void *me, unsigned int dxs, unsigned int dys, void (*dra
}
if (spu->scaled_image) {
unsigned int x, y;
+ // needs to be 0-initialized because draw_alpha draws always a
+ // multiple of 8 pixels. TODO: optimize
+ if (spu->scaled_width & 7)
+ memset(spu->scaled_image, 0, 2 * spu->scaled_image_size);
if (spu->scaled_width <= 1 || spu->scaled_height <= 1) {
goto nothing_to_do;
}