changeset 33143:1cad23803d94

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.
author reimar
date Thu, 07 Apr 2011 21:08:49 +0000
parents 3aa60275d74f
children a2a32138597b
files sub/spudec.c
diffstat 1 files changed, 4 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/sub/spudec.c	Wed Apr 06 22:11:27 2011 +0000
+++ b/sub/spudec.c	Thu Apr 07 21:08:49 2011 +0000
@@ -919,6 +919,10 @@
 	}
 	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;
 	  }