diff libmpcodecs/vf.c @ 12515:7ddeffd0dbda

Big Endian fix. Patch by Romain Dolbeau
author nplourde
date Mon, 31 May 2004 15:07:58 +0000
parents 6f1b4c989914
children 9e81af56f554
line wrap: on
line diff
--- a/libmpcodecs/vf.c	Mon May 31 15:07:20 2004 +0000
+++ b/libmpcodecs/vf.c	Mon May 31 15:07:58 2004 +0000
@@ -217,12 +217,19 @@
 	    unsigned int* p=(unsigned int*) dst;
 	    int size=(mpi->bpp>>3)*w/4;
 	    int i;
+#ifdef WORDS_BIGENDIAN
+#define CLEAR_PACKEDYUV_PATTERN 0x00800080
+#define CLEAR_PACKEDYUV_PATTERN_SWAPPED 0x80008000
+#else
+#define CLEAR_PACKEDYUV_PATTERN 0x80008000
+#define CLEAR_PACKEDYUV_PATTERN_SWAPPED 0x00800080
+#endif
 	    if(mpi->flags&MP_IMGFLAG_SWAPPED){
-	        for(i=0;i<size;i+=4) p[i]=p[i+1]=p[i+2]=p[i+3]=0x00800080;
-		for(;i<size;i++) p[i]=0x00800080;
+	        for(i=0;i<size-3;i+=4) p[i]=p[i+1]=p[i+2]=p[i+3]=CLEAR_PACKEDYUV_PATTERN_SWAPPED;
+		for(;i<size;i++) p[i]=CLEAR_PACKEDYUV_PATTERN_SWAPPED;
 	    } else {
-	        for(i=0;i<size;i+=4) p[i]=p[i+1]=p[i+2]=p[i+3]=0x80008000;
-		for(;i<size;i++) p[i]=0x80008000;
+	        for(i=0;i<size-3;i+=4) p[i]=p[i+1]=p[i+2]=p[i+3]=CLEAR_PACKEDYUV_PATTERN;
+		for(;i<size;i++) p[i]=CLEAR_PACKEDYUV_PATTERN;
 	    }
 	} else
 	    memset(dst,0,(mpi->bpp>>3)*w);