diff src/video/SDL_yuv_sw.c @ 1662:782fd950bd46 SDL-1.3

Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API. WARNING: None of the video drivers have been updated for the new API yet! The API is still under design and very fluid. The code is now run through a consistent indent format: indent -i4 -nut -nsc -br -ce The headers are being converted to automatically generate doxygen documentation.
author Sam Lantinga <slouken@libsdl.org>
date Sun, 28 May 2006 13:04:16 +0000
parents 8a858076f39d
children 4da1ee79c9af
line wrap: on
line diff
--- a/src/video/SDL_yuv_sw.c	Sun May 21 17:27:13 2006 +0000
+++ b/src/video/SDL_yuv_sw.c	Sun May 28 13:04:16 2006 +0000
@@ -91,103 +91,104 @@
 
 /* The functions used to manipulate software video overlays */
 static struct private_yuvhwfuncs sw_yuvfuncs = {
-	SDL_LockYUV_SW,
-	SDL_UnlockYUV_SW,
-	SDL_DisplayYUV_SW,
-	SDL_FreeYUV_SW
+    SDL_LockYUV_SW,
+    SDL_UnlockYUV_SW,
+    SDL_DisplayYUV_SW,
+    SDL_FreeYUV_SW
 };
 
 /* RGB conversion lookup tables */
-struct private_yuvhwdata {
-	SDL_Surface *stretch;
-	SDL_Surface *display;
-	Uint8 *pixels;
-	int *colortab;
-	Uint32 *rgb_2_pix;
-	void (*Display1X)(int *colortab, Uint32 *rgb_2_pix,
-                          unsigned char *lum, unsigned char *cr,
-                          unsigned char *cb, unsigned char *out,
-                          int rows, int cols, int mod );
-	void (*Display2X)(int *colortab, Uint32 *rgb_2_pix,
-	                  unsigned char *lum, unsigned char *cr,
-                          unsigned char *cb, unsigned char *out,
-                          int rows, int cols, int mod );
+struct private_yuvhwdata
+{
+    SDL_Surface *stretch;
+    SDL_Surface *display;
+    Uint8 *pixels;
+    int *colortab;
+    Uint32 *rgb_2_pix;
+    void (*Display1X) (int *colortab, Uint32 * rgb_2_pix,
+                       unsigned char *lum, unsigned char *cr,
+                       unsigned char *cb, unsigned char *out,
+                       int rows, int cols, int mod);
+    void (*Display2X) (int *colortab, Uint32 * rgb_2_pix,
+                       unsigned char *lum, unsigned char *cr,
+                       unsigned char *cb, unsigned char *out,
+                       int rows, int cols, int mod);
 
-	/* These are just so we don't have to allocate them separately */
-	Uint16 pitches[3];
-	Uint8 *planes[3];
+    /* These are just so we don't have to allocate them separately */
+    Uint16 pitches[3];
+    Uint8 *planes[3];
 };
 
 
 /* The colorspace conversion functions */
 
-#if 0 /*defined(__GNUC__) && defined(__i386__) && SDL_ASSEMBLY_ROUTINES*/
-extern void Color565DitherYV12MMX1X( int *colortab, Uint32 *rgb_2_pix,
+#if 0                           /*defined(__GNUC__) && defined(__i386__) && SDL_ASSEMBLY_ROUTINES */
+extern void Color565DitherYV12MMX1X (int *colortab, Uint32 * rgb_2_pix,
                                      unsigned char *lum, unsigned char *cr,
                                      unsigned char *cb, unsigned char *out,
-                                     int rows, int cols, int mod );
-extern void ColorRGBDitherYV12MMX1X( int *colortab, Uint32 *rgb_2_pix,
+                                     int rows, int cols, int mod);
+extern void ColorRGBDitherYV12MMX1X (int *colortab, Uint32 * rgb_2_pix,
                                      unsigned char *lum, unsigned char *cr,
                                      unsigned char *cb, unsigned char *out,
-                                     int rows, int cols, int mod );
-#endif 
+                                     int rows, int cols, int mod);
+#endif
 
-static void Color16DitherYV12Mod1X( int *colortab, Uint32 *rgb_2_pix,
-                                    unsigned char *lum, unsigned char *cr,
-                                    unsigned char *cb, unsigned char *out,
-                                    int rows, int cols, int mod )
+static void
+Color16DitherYV12Mod1X (int *colortab, Uint32 * rgb_2_pix,
+                        unsigned char *lum, unsigned char *cr,
+                        unsigned char *cb, unsigned char *out,
+                        int rows, int cols, int mod)
 {
-    unsigned short* row1;
-    unsigned short* row2;
-    unsigned char* lum2;
+    unsigned short *row1;
+    unsigned short *row2;
+    unsigned char *lum2;
     int x, y;
     int cr_r;
     int crb_g;
     int cb_b;
     int cols_2 = cols / 2;
 
-    row1 = (unsigned short*) out;
+    row1 = (unsigned short *) out;
     row2 = row1 + cols + mod;
     lum2 = lum + cols;
 
     mod += cols + mod;
 
     y = rows / 2;
-    while( y-- )
-    {
+    while (y--) {
         x = cols_2;
-        while( x-- )
-        {
+        while (x--) {
             register int L;
 
-            cr_r   = 0*768+256 + colortab[ *cr + 0*256 ];
-            crb_g  = 1*768+256 + colortab[ *cr + 1*256 ]
-                               + colortab[ *cb + 2*256 ];
-            cb_b   = 2*768+256 + colortab[ *cb + 3*256 ];
-            ++cr; ++cb;
+            cr_r = 0 * 768 + 256 + colortab[*cr + 0 * 256];
+            crb_g = 1 * 768 + 256 + colortab[*cr + 1 * 256]
+                + colortab[*cb + 2 * 256];
+            cb_b = 2 * 768 + 256 + colortab[*cb + 3 * 256];
+            ++cr;
+            ++cb;
 
             L = *lum++;
-            *row1++ = (unsigned short)(rgb_2_pix[ L + cr_r ] |
-                                       rgb_2_pix[ L + crb_g ] |
-                                       rgb_2_pix[ L + cb_b ]);
+            *row1++ = (unsigned short) (rgb_2_pix[L + cr_r] |
+                                        rgb_2_pix[L + crb_g] |
+                                        rgb_2_pix[L + cb_b]);
 
             L = *lum++;
-            *row1++ = (unsigned short)(rgb_2_pix[ L + cr_r ] |
-                                       rgb_2_pix[ L + crb_g ] |
-                                       rgb_2_pix[ L + cb_b ]);
+            *row1++ = (unsigned short) (rgb_2_pix[L + cr_r] |
+                                        rgb_2_pix[L + crb_g] |
+                                        rgb_2_pix[L + cb_b]);
 
 
             /* Now, do second row.  */
 
             L = *lum2++;
-            *row2++ = (unsigned short)(rgb_2_pix[ L + cr_r ] |
-                                       rgb_2_pix[ L + crb_g ] |
-                                       rgb_2_pix[ L + cb_b ]);
+            *row2++ = (unsigned short) (rgb_2_pix[L + cr_r] |
+                                        rgb_2_pix[L + crb_g] |
+                                        rgb_2_pix[L + cb_b]);
 
             L = *lum2++;
-            *row2++ = (unsigned short)(rgb_2_pix[ L + cr_r ] |
-                                       rgb_2_pix[ L + crb_g ] |
-                                       rgb_2_pix[ L + cb_b ]);
+            *row2++ = (unsigned short) (rgb_2_pix[L + cr_r] |
+                                        rgb_2_pix[L + crb_g] |
+                                        rgb_2_pix[L + cb_b]);
         }
 
         /*
@@ -195,22 +196,23 @@
          * to the ++'s above),but they need to be at the start
          * of the line after that.
          */
-        lum  += cols;
+        lum += cols;
         lum2 += cols;
         row1 += mod;
         row2 += mod;
     }
 }
 
-static void Color24DitherYV12Mod1X( int *colortab, Uint32 *rgb_2_pix,
-                                    unsigned char *lum, unsigned char *cr,
-                                    unsigned char *cb, unsigned char *out,
-                                    int rows, int cols, int mod )
+static void
+Color24DitherYV12Mod1X (int *colortab, Uint32 * rgb_2_pix,
+                        unsigned char *lum, unsigned char *cr,
+                        unsigned char *cb, unsigned char *out,
+                        int rows, int cols, int mod)
 {
     unsigned int value;
-    unsigned char* row1;
-    unsigned char* row2;
-    unsigned char* lum2;
+    unsigned char *row1;
+    unsigned char *row2;
+    unsigned char *lum2;
     int x, y;
     int cr_r;
     int crb_g;
@@ -218,59 +220,54 @@
     int cols_2 = cols / 2;
 
     row1 = out;
-    row2 = row1 + cols*3 + mod*3;
+    row2 = row1 + cols * 3 + mod * 3;
     lum2 = lum + cols;
 
     mod += cols + mod;
     mod *= 3;
 
     y = rows / 2;
-    while( y-- )
-    {
+    while (y--) {
         x = cols_2;
-        while( x-- )
-        {
+        while (x--) {
             register int L;
 
-            cr_r   = 0*768+256 + colortab[ *cr + 0*256 ];
-            crb_g  = 1*768+256 + colortab[ *cr + 1*256 ]
-                               + colortab[ *cb + 2*256 ];
-            cb_b   = 2*768+256 + colortab[ *cb + 3*256 ];
-            ++cr; ++cb;
+            cr_r = 0 * 768 + 256 + colortab[*cr + 0 * 256];
+            crb_g = 1 * 768 + 256 + colortab[*cr + 1 * 256]
+                + colortab[*cb + 2 * 256];
+            cb_b = 2 * 768 + 256 + colortab[*cb + 3 * 256];
+            ++cr;
+            ++cb;
 
             L = *lum++;
-            value = (rgb_2_pix[ L + cr_r ] |
-                     rgb_2_pix[ L + crb_g ] |
-                     rgb_2_pix[ L + cb_b ]);
-            *row1++ = (value      ) & 0xFF;
-            *row1++ = (value >>  8) & 0xFF;
+            value = (rgb_2_pix[L + cr_r] |
+                     rgb_2_pix[L + crb_g] | rgb_2_pix[L + cb_b]);
+            *row1++ = (value) & 0xFF;
+            *row1++ = (value >> 8) & 0xFF;
             *row1++ = (value >> 16) & 0xFF;
 
             L = *lum++;
-            value = (rgb_2_pix[ L + cr_r ] |
-                     rgb_2_pix[ L + crb_g ] |
-                     rgb_2_pix[ L + cb_b ]);
-            *row1++ = (value      ) & 0xFF;
-            *row1++ = (value >>  8) & 0xFF;
+            value = (rgb_2_pix[L + cr_r] |
+                     rgb_2_pix[L + crb_g] | rgb_2_pix[L + cb_b]);
+            *row1++ = (value) & 0xFF;
+            *row1++ = (value >> 8) & 0xFF;
             *row1++ = (value >> 16) & 0xFF;
 
 
             /* Now, do second row.  */
 
             L = *lum2++;
-            value = (rgb_2_pix[ L + cr_r ] |
-                     rgb_2_pix[ L + crb_g ] |
-                     rgb_2_pix[ L + cb_b ]);
-            *row2++ = (value      ) & 0xFF;
-            *row2++ = (value >>  8) & 0xFF;
+            value = (rgb_2_pix[L + cr_r] |
+                     rgb_2_pix[L + crb_g] | rgb_2_pix[L + cb_b]);
+            *row2++ = (value) & 0xFF;
+            *row2++ = (value >> 8) & 0xFF;
             *row2++ = (value >> 16) & 0xFF;
 
             L = *lum2++;
-            value = (rgb_2_pix[ L + cr_r ] |
-                     rgb_2_pix[ L + crb_g ] |
-                     rgb_2_pix[ L + cb_b ]);
-            *row2++ = (value      ) & 0xFF;
-            *row2++ = (value >>  8) & 0xFF;
+            value = (rgb_2_pix[L + cr_r] |
+                     rgb_2_pix[L + crb_g] | rgb_2_pix[L + cb_b]);
+            *row2++ = (value) & 0xFF;
+            *row2++ = (value >> 8) & 0xFF;
             *row2++ = (value >> 16) & 0xFF;
         }
 
@@ -279,69 +276,65 @@
          * to the ++'s above),but they need to be at the start
          * of the line after that.
          */
-        lum  += cols;
+        lum += cols;
         lum2 += cols;
         row1 += mod;
         row2 += mod;
     }
 }
 
-static void Color32DitherYV12Mod1X( int *colortab, Uint32 *rgb_2_pix,
-                                    unsigned char *lum, unsigned char *cr,
-                                    unsigned char *cb, unsigned char *out,
-                                    int rows, int cols, int mod )
+static void
+Color32DitherYV12Mod1X (int *colortab, Uint32 * rgb_2_pix,
+                        unsigned char *lum, unsigned char *cr,
+                        unsigned char *cb, unsigned char *out,
+                        int rows, int cols, int mod)
 {
-    unsigned int* row1;
-    unsigned int* row2;
-    unsigned char* lum2;
+    unsigned int *row1;
+    unsigned int *row2;
+    unsigned char *lum2;
     int x, y;
     int cr_r;
     int crb_g;
     int cb_b;
     int cols_2 = cols / 2;
 
-    row1 = (unsigned int*) out;
+    row1 = (unsigned int *) out;
     row2 = row1 + cols + mod;
     lum2 = lum + cols;
 
     mod += cols + mod;
 
     y = rows / 2;
-    while( y-- )
-    {
+    while (y--) {
         x = cols_2;
-        while( x-- )
-        {
+        while (x--) {
             register int L;
 
-            cr_r   = 0*768+256 + colortab[ *cr + 0*256 ];
-            crb_g  = 1*768+256 + colortab[ *cr + 1*256 ]
-                               + colortab[ *cb + 2*256 ];
-            cb_b   = 2*768+256 + colortab[ *cb + 3*256 ];
-            ++cr; ++cb;
+            cr_r = 0 * 768 + 256 + colortab[*cr + 0 * 256];
+            crb_g = 1 * 768 + 256 + colortab[*cr + 1 * 256]
+                + colortab[*cb + 2 * 256];
+            cb_b = 2 * 768 + 256 + colortab[*cb + 3 * 256];
+            ++cr;
+            ++cb;
 
             L = *lum++;
-            *row1++ = (rgb_2_pix[ L + cr_r ] |
-                       rgb_2_pix[ L + crb_g ] |
-                       rgb_2_pix[ L + cb_b ]);
+            *row1++ = (rgb_2_pix[L + cr_r] |
+                       rgb_2_pix[L + crb_g] | rgb_2_pix[L + cb_b]);
 
             L = *lum++;
-            *row1++ = (rgb_2_pix[ L + cr_r ] |
-                       rgb_2_pix[ L + crb_g ] |
-                       rgb_2_pix[ L + cb_b ]);
+            *row1++ = (rgb_2_pix[L + cr_r] |
+                       rgb_2_pix[L + crb_g] | rgb_2_pix[L + cb_b]);
 
 
             /* Now, do second row.  */
 
             L = *lum2++;
-            *row2++ = (rgb_2_pix[ L + cr_r ] |
-                       rgb_2_pix[ L + crb_g ] |
-                       rgb_2_pix[ L + cb_b ]);
+            *row2++ = (rgb_2_pix[L + cr_r] |
+                       rgb_2_pix[L + crb_g] | rgb_2_pix[L + cb_b]);
 
             L = *lum2++;
-            *row2++ = (rgb_2_pix[ L + cr_r ] |
-                       rgb_2_pix[ L + crb_g ] |
-                       rgb_2_pix[ L + cb_b ]);
+            *row2++ = (rgb_2_pix[L + cr_r] |
+                       rgb_2_pix[L + crb_g] | rgb_2_pix[L + cb_b]);
         }
 
         /*
@@ -349,7 +342,7 @@
          * to the ++'s above),but they need to be at the start
          * of the line after that.
          */
-        lum  += cols;
+        lum += cols;
         lum2 += cols;
         row1 += mod;
         row2 += mod;
@@ -361,15 +354,16 @@
  * 16 bits replicated in the upper 16. This means I can write ints and get
  * the horisontal doubling for free (almost).
  */
-static void Color16DitherYV12Mod2X( int *colortab, Uint32 *rgb_2_pix,
-                                    unsigned char *lum, unsigned char *cr,
-                                    unsigned char *cb, unsigned char *out,
-                                    int rows, int cols, int mod )
+static void
+Color16DitherYV12Mod2X (int *colortab, Uint32 * rgb_2_pix,
+                        unsigned char *lum, unsigned char *cr,
+                        unsigned char *cb, unsigned char *out,
+                        int rows, int cols, int mod)
 {
-    unsigned int* row1 = (unsigned int*) out;
-    const int next_row = cols+(mod/2);
-    unsigned int* row2 = row1 + 2*next_row;
-    unsigned char* lum2;
+    unsigned int *row1 = (unsigned int *) out;
+    const int next_row = cols + (mod / 2);
+    unsigned int *row2 = row1 + 2 * next_row;
+    unsigned char *lum2;
     int x, y;
     int cr_r;
     int crb_g;
@@ -378,47 +372,46 @@
 
     lum2 = lum + cols;
 
-    mod = (next_row * 3) + (mod/2);
+    mod = (next_row * 3) + (mod / 2);
 
     y = rows / 2;
-    while( y-- )
-    {
+    while (y--) {
         x = cols_2;
-        while( x-- )
-        {
+        while (x--) {
             register int L;
 
-            cr_r   = 0*768+256 + colortab[ *cr + 0*256 ];
-            crb_g  = 1*768+256 + colortab[ *cr + 1*256 ]
-                               + colortab[ *cb + 2*256 ];
-            cb_b   = 2*768+256 + colortab[ *cb + 3*256 ];
-            ++cr; ++cb;
+            cr_r = 0 * 768 + 256 + colortab[*cr + 0 * 256];
+            crb_g = 1 * 768 + 256 + colortab[*cr + 1 * 256]
+                + colortab[*cb + 2 * 256];
+            cb_b = 2 * 768 + 256 + colortab[*cb + 3 * 256];
+            ++cr;
+            ++cb;
 
             L = *lum++;
-            row1[0] = row1[next_row] = (rgb_2_pix[ L + cr_r ] |
-                                        rgb_2_pix[ L + crb_g ] |
-                                        rgb_2_pix[ L + cb_b ]);
+            row1[0] = row1[next_row] = (rgb_2_pix[L + cr_r] |
+                                        rgb_2_pix[L + crb_g] |
+                                        rgb_2_pix[L + cb_b]);
             row1++;
 
             L = *lum++;
-            row1[0] = row1[next_row] = (rgb_2_pix[ L + cr_r ] |
-                                        rgb_2_pix[ L + crb_g ] |
-                                        rgb_2_pix[ L + cb_b ]);
+            row1[0] = row1[next_row] = (rgb_2_pix[L + cr_r] |
+                                        rgb_2_pix[L + crb_g] |
+                                        rgb_2_pix[L + cb_b]);
             row1++;
 
 
             /* Now, do second row. */
 
             L = *lum2++;
-            row2[0] = row2[next_row] = (rgb_2_pix[ L + cr_r ] |
-                                        rgb_2_pix[ L + crb_g ] |
-                                        rgb_2_pix[ L + cb_b ]);
+            row2[0] = row2[next_row] = (rgb_2_pix[L + cr_r] |
+                                        rgb_2_pix[L + crb_g] |
+                                        rgb_2_pix[L + cb_b]);
             row2++;
 
             L = *lum2++;
-            row2[0] = row2[next_row] = (rgb_2_pix[ L + cr_r ] |
-                                        rgb_2_pix[ L + crb_g ] |
-                                        rgb_2_pix[ L + cb_b ]);
+            row2[0] = row2[next_row] = (rgb_2_pix[L + cr_r] |
+                                        rgb_2_pix[L + crb_g] |
+                                        rgb_2_pix[L + cb_b]);
             row2++;
         }
 
@@ -427,23 +420,24 @@
          * to the ++'s above),but they need to be at the start
          * of the line after that.
          */
-        lum  += cols;
+        lum += cols;
         lum2 += cols;
         row1 += mod;
         row2 += mod;
     }
 }
 
-static void Color24DitherYV12Mod2X( int *colortab, Uint32 *rgb_2_pix,
-                                    unsigned char *lum, unsigned char *cr,
-                                    unsigned char *cb, unsigned char *out,
-                                    int rows, int cols, int mod )
+static void
+Color24DitherYV12Mod2X (int *colortab, Uint32 * rgb_2_pix,
+                        unsigned char *lum, unsigned char *cr,
+                        unsigned char *cb, unsigned char *out,
+                        int rows, int cols, int mod)
 {
     unsigned int value;
-    unsigned char* row1 = out;
-    const int next_row = (cols*2 + mod) * 3;
-    unsigned char* row2 = row1 + 2*next_row;
-    unsigned char* lum2;
+    unsigned char *row1 = out;
+    const int next_row = (cols * 2 + mod) * 3;
+    unsigned char *row2 = row1 + 2 * next_row;
+    unsigned char *lum2;
     int x, y;
     int cr_r;
     int crb_g;
@@ -452,72 +446,67 @@
 
     lum2 = lum + cols;
 
-    mod = next_row*3 + mod*3;
+    mod = next_row * 3 + mod * 3;
 
     y = rows / 2;
-    while( y-- )
-    {
+    while (y--) {
         x = cols_2;
-        while( x-- )
-        {
+        while (x--) {
             register int L;
 
-            cr_r   = 0*768+256 + colortab[ *cr + 0*256 ];
-            crb_g  = 1*768+256 + colortab[ *cr + 1*256 ]
-                               + colortab[ *cb + 2*256 ];
-            cb_b   = 2*768+256 + colortab[ *cb + 3*256 ];
-            ++cr; ++cb;
+            cr_r = 0 * 768 + 256 + colortab[*cr + 0 * 256];
+            crb_g = 1 * 768 + 256 + colortab[*cr + 1 * 256]
+                + colortab[*cb + 2 * 256];
+            cb_b = 2 * 768 + 256 + colortab[*cb + 3 * 256];
+            ++cr;
+            ++cb;
 
             L = *lum++;
-            value = (rgb_2_pix[ L + cr_r ] |
-                     rgb_2_pix[ L + crb_g ] |
-                     rgb_2_pix[ L + cb_b ]);
-            row1[0+0] = row1[3+0] = row1[next_row+0] = row1[next_row+3+0] =
-                     (value      ) & 0xFF;
-            row1[0+1] = row1[3+1] = row1[next_row+1] = row1[next_row+3+1] =
-                     (value >>  8) & 0xFF;
-            row1[0+2] = row1[3+2] = row1[next_row+2] = row1[next_row+3+2] =
-                     (value >> 16) & 0xFF;
-            row1 += 2*3;
+            value = (rgb_2_pix[L + cr_r] |
+                     rgb_2_pix[L + crb_g] | rgb_2_pix[L + cb_b]);
+            row1[0 + 0] = row1[3 + 0] = row1[next_row + 0] =
+                row1[next_row + 3 + 0] = (value) & 0xFF;
+            row1[0 + 1] = row1[3 + 1] = row1[next_row + 1] =
+                row1[next_row + 3 + 1] = (value >> 8) & 0xFF;
+            row1[0 + 2] = row1[3 + 2] = row1[next_row + 2] =
+                row1[next_row + 3 + 2] = (value >> 16) & 0xFF;
+            row1 += 2 * 3;
 
             L = *lum++;
-            value = (rgb_2_pix[ L + cr_r ] |
-                     rgb_2_pix[ L + crb_g ] |
-                     rgb_2_pix[ L + cb_b ]);
-            row1[0+0] = row1[3+0] = row1[next_row+0] = row1[next_row+3+0] =
-                     (value      ) & 0xFF;
-            row1[0+1] = row1[3+1] = row1[next_row+1] = row1[next_row+3+1] =
-                     (value >>  8) & 0xFF;
-            row1[0+2] = row1[3+2] = row1[next_row+2] = row1[next_row+3+2] =
-                     (value >> 16) & 0xFF;
-            row1 += 2*3;
+            value = (rgb_2_pix[L + cr_r] |
+                     rgb_2_pix[L + crb_g] | rgb_2_pix[L + cb_b]);
+            row1[0 + 0] = row1[3 + 0] = row1[next_row + 0] =
+                row1[next_row + 3 + 0] = (value) & 0xFF;
+            row1[0 + 1] = row1[3 + 1] = row1[next_row + 1] =
+                row1[next_row + 3 + 1] = (value >> 8) & 0xFF;
+            row1[0 + 2] = row1[3 + 2] = row1[next_row + 2] =
+                row1[next_row + 3 + 2] = (value >> 16) & 0xFF;
+            row1 += 2 * 3;
 
 
             /* Now, do second row. */
 
             L = *lum2++;
-            value = (rgb_2_pix[ L + cr_r ] |
-                     rgb_2_pix[ L + crb_g ] |
-                     rgb_2_pix[ L + cb_b ]);
-            row2[0+0] = row2[3+0] = row2[next_row+0] = row2[next_row+3+0] =
-                     (value      ) & 0xFF;
-            row2[0+1] = row2[3+1] = row2[next_row+1] = row2[next_row+3+1] =
-                     (value >>  8) & 0xFF;
-            row2[0+2] = row2[3+2] = row2[next_row+2] = row2[next_row+3+2] =
-                     (value >> 16) & 0xFF;
-            row2 += 2*3;
+            value = (rgb_2_pix[L + cr_r] |
+                     rgb_2_pix[L + crb_g] | rgb_2_pix[L + cb_b]);
+            row2[0 + 0] = row2[3 + 0] = row2[next_row + 0] =
+                row2[next_row + 3 + 0] = (value) & 0xFF;
+            row2[0 + 1] = row2[3 + 1] = row2[next_row + 1] =
+                row2[next_row + 3 + 1] = (value >> 8) & 0xFF;
+            row2[0 + 2] = row2[3 + 2] = row2[next_row + 2] =
+                row2[next_row + 3 + 2] = (value >> 16) & 0xFF;
+            row2 += 2 * 3;
 
             L = *lum2++;
-            value = (rgb_2_pix[ L + cr_r ] |
-                     rgb_2_pix[ L + crb_g ] |
-                     rgb_2_pix[ L + cb_b ]);
-            row2[0+0] = row2[3+0] = row2[next_row+0] = row2[next_row+3+0] =
-                     (value      ) & 0xFF;
-            row2[0+1] = row2[3+1] = row2[next_row+1] = row2[next_row+3+1] =
-                     (value >>  8) & 0xFF;
-            row2[0+2] = row2[3+2] = row2[next_row+2] = row2[next_row+3+2] =
-                     (value >> 16) & 0xFF;
-            row2 += 2*3;
+            value = (rgb_2_pix[L + cr_r] |
+                     rgb_2_pix[L + crb_g] | rgb_2_pix[L + cb_b]);
+            row2[0 + 0] = row2[3 + 0] = row2[next_row + 0] =
+                row2[next_row + 3 + 0] = (value) & 0xFF;
+            row2[0 + 1] = row2[3 + 1] = row2[next_row + 1] =
+                row2[next_row + 3 + 1] = (value >> 8) & 0xFF;
+            row2[0 + 2] = row2[3 + 2] = row2[next_row + 2] =
+                row2[next_row + 3 + 2] = (value >> 16) & 0xFF;
+            row2 += 2 * 3;
         }
 
         /*
@@ -525,22 +514,23 @@
          * to the ++'s above),but they need to be at the start
          * of the line after that.
          */
-        lum  += cols;
+        lum += cols;
         lum2 += cols;
         row1 += mod;
         row2 += mod;
     }
 }
 
-static void Color32DitherYV12Mod2X( int *colortab, Uint32 *rgb_2_pix,
-                                    unsigned char *lum, unsigned char *cr,
-                                    unsigned char *cb, unsigned char *out,
-                                    int rows, int cols, int mod )
+static void
+Color32DitherYV12Mod2X (int *colortab, Uint32 * rgb_2_pix,
+                        unsigned char *lum, unsigned char *cr,
+                        unsigned char *cb, unsigned char *out,
+                        int rows, int cols, int mod)
 {
-    unsigned int* row1 = (unsigned int*) out;
-    const int next_row = cols*2+mod;
-    unsigned int* row2 = row1 + 2*next_row;
-    unsigned char* lum2;
+    unsigned int *row1 = (unsigned int *) out;
+    const int next_row = cols * 2 + mod;
+    unsigned int *row2 = row1 + 2 * next_row;
+    unsigned char *lum2;
     int x, y;
     int cr_r;
     int crb_g;
@@ -552,48 +542,43 @@
     mod = (next_row * 3) + mod;
 
     y = rows / 2;
-    while( y-- )
-    {
+    while (y--) {
         x = cols_2;
-        while( x-- )
-        {
+        while (x--) {
             register int L;
 
-            cr_r   = 0*768+256 + colortab[ *cr + 0*256 ];
-            crb_g  = 1*768+256 + colortab[ *cr + 1*256 ]
-                               + colortab[ *cb + 2*256 ];
-            cb_b   = 2*768+256 + colortab[ *cb + 3*256 ];
-            ++cr; ++cb;
+            cr_r = 0 * 768 + 256 + colortab[*cr + 0 * 256];
+            crb_g = 1 * 768 + 256 + colortab[*cr + 1 * 256]
+                + colortab[*cb + 2 * 256];
+            cb_b = 2 * 768 + 256 + colortab[*cb + 3 * 256];
+            ++cr;
+            ++cb;
 
             L = *lum++;
-            row1[0] = row1[1] = row1[next_row] = row1[next_row+1] =
-                                       (rgb_2_pix[ L + cr_r ] |
-                                        rgb_2_pix[ L + crb_g ] |
-                                        rgb_2_pix[ L + cb_b ]);
+            row1[0] = row1[1] = row1[next_row] = row1[next_row + 1] =
+                (rgb_2_pix[L + cr_r] |
+                 rgb_2_pix[L + crb_g] | rgb_2_pix[L + cb_b]);
             row1 += 2;
 
             L = *lum++;
-            row1[0] = row1[1] = row1[next_row] = row1[next_row+1] =
-                                       (rgb_2_pix[ L + cr_r ] |
-                                        rgb_2_pix[ L + crb_g ] |
-                                        rgb_2_pix[ L + cb_b ]);
+            row1[0] = row1[1] = row1[next_row] = row1[next_row + 1] =
+                (rgb_2_pix[L + cr_r] |
+                 rgb_2_pix[L + crb_g] | rgb_2_pix[L + cb_b]);
             row1 += 2;
 
 
             /* Now, do second row. */
 
             L = *lum2++;
-            row2[0] = row2[1] = row2[next_row] = row2[next_row+1] =
-                                       (rgb_2_pix[ L + cr_r ] |
-                                        rgb_2_pix[ L + crb_g ] |
-                                        rgb_2_pix[ L + cb_b ]);
+            row2[0] = row2[1] = row2[next_row] = row2[next_row + 1] =
+                (rgb_2_pix[L + cr_r] |
+                 rgb_2_pix[L + crb_g] | rgb_2_pix[L + cb_b]);
             row2 += 2;
 
             L = *lum2++;
-            row2[0] = row2[1] = row2[next_row] = row2[next_row+1] =
-                                       (rgb_2_pix[ L + cr_r ] |
-                                        rgb_2_pix[ L + crb_g ] |
-                                        rgb_2_pix[ L + cb_b ]);
+            row2[0] = row2[1] = row2[next_row] = row2[next_row + 1] =
+                (rgb_2_pix[L + cr_r] |
+                 rgb_2_pix[L + crb_g] | rgb_2_pix[L + cb_b]);
             row2 += 2;
         }
 
@@ -602,50 +587,52 @@
          * to the ++'s above),but they need to be at the start
          * of the line after that.
          */
-        lum  += cols;
+        lum += cols;
         lum2 += cols;
         row1 += mod;
         row2 += mod;
     }
 }
 
-static void Color16DitherYUY2Mod1X( int *colortab, Uint32 *rgb_2_pix,
-                                    unsigned char *lum, unsigned char *cr,
-                                    unsigned char *cb, unsigned char *out,
-                                    int rows, int cols, int mod )
+static void
+Color16DitherYUY2Mod1X (int *colortab, Uint32 * rgb_2_pix,
+                        unsigned char *lum, unsigned char *cr,
+                        unsigned char *cb, unsigned char *out,
+                        int rows, int cols, int mod)
 {
-    unsigned short* row;
+    unsigned short *row;
     int x, y;
     int cr_r;
     int crb_g;
     int cb_b;
     int cols_2 = cols / 2;
 
-    row = (unsigned short*) out;
+    row = (unsigned short *) out;
 
     y = rows;
-    while( y-- )
-    {
+    while (y--) {
         x = cols_2;
-        while( x-- )
-        {
+        while (x--) {
             register int L;
 
-            cr_r   = 0*768+256 + colortab[ *cr + 0*256 ];
-            crb_g  = 1*768+256 + colortab[ *cr + 1*256 ]
-                               + colortab[ *cb + 2*256 ];
-            cb_b   = 2*768+256 + colortab[ *cb + 3*256 ];
-            cr += 4; cb += 4;
+            cr_r = 0 * 768 + 256 + colortab[*cr + 0 * 256];
+            crb_g = 1 * 768 + 256 + colortab[*cr + 1 * 256]
+                + colortab[*cb + 2 * 256];
+            cb_b = 2 * 768 + 256 + colortab[*cb + 3 * 256];
+            cr += 4;
+            cb += 4;
 
-            L = *lum; lum += 2;
-            *row++ = (unsigned short)(rgb_2_pix[ L + cr_r ] |
-                                      rgb_2_pix[ L + crb_g ] |
-                                      rgb_2_pix[ L + cb_b ]);
+            L = *lum;
+            lum += 2;
+            *row++ = (unsigned short) (rgb_2_pix[L + cr_r] |
+                                       rgb_2_pix[L + crb_g] |
+                                       rgb_2_pix[L + cb_b]);
 
-            L = *lum; lum += 2;
-            *row++ = (unsigned short)(rgb_2_pix[ L + cr_r ] |
-                                      rgb_2_pix[ L + crb_g ] |
-                                      rgb_2_pix[ L + cb_b ]);
+            L = *lum;
+            lum += 2;
+            *row++ = (unsigned short) (rgb_2_pix[L + cr_r] |
+                                       rgb_2_pix[L + crb_g] |
+                                       rgb_2_pix[L + cb_b]);
 
         }
 
@@ -653,49 +640,49 @@
     }
 }
 
-static void Color24DitherYUY2Mod1X( int *colortab, Uint32 *rgb_2_pix,
-                                    unsigned char *lum, unsigned char *cr,
-                                    unsigned char *cb, unsigned char *out,
-                                    int rows, int cols, int mod )
+static void
+Color24DitherYUY2Mod1X (int *colortab, Uint32 * rgb_2_pix,
+                        unsigned char *lum, unsigned char *cr,
+                        unsigned char *cb, unsigned char *out,
+                        int rows, int cols, int mod)
 {
     unsigned int value;
-    unsigned char* row;
+    unsigned char *row;
     int x, y;
     int cr_r;
     int crb_g;
     int cb_b;
     int cols_2 = cols / 2;
 
-    row = (unsigned char*) out;
+    row = (unsigned char *) out;
     mod *= 3;
     y = rows;
-    while( y-- )
-    {
+    while (y--) {
         x = cols_2;
-        while( x-- )
-        {
+        while (x--) {
             register int L;
 
-            cr_r   = 0*768+256 + colortab[ *cr + 0*256 ];
-            crb_g  = 1*768+256 + colortab[ *cr + 1*256 ]
-                               + colortab[ *cb + 2*256 ];
-            cb_b   = 2*768+256 + colortab[ *cb + 3*256 ];
-            cr += 4; cb += 4;
+            cr_r = 0 * 768 + 256 + colortab[*cr + 0 * 256];
+            crb_g = 1 * 768 + 256 + colortab[*cr + 1 * 256]
+                + colortab[*cb + 2 * 256];
+            cb_b = 2 * 768 + 256 + colortab[*cb + 3 * 256];
+            cr += 4;
+            cb += 4;
 
-            L = *lum; lum += 2;
-            value = (rgb_2_pix[ L + cr_r ] |
-                     rgb_2_pix[ L + crb_g ] |
-                     rgb_2_pix[ L + cb_b ]);
-            *row++ = (value      ) & 0xFF;
-            *row++ = (value >>  8) & 0xFF;
+            L = *lum;
+            lum += 2;
+            value = (rgb_2_pix[L + cr_r] |
+                     rgb_2_pix[L + crb_g] | rgb_2_pix[L + cb_b]);
+            *row++ = (value) & 0xFF;
+            *row++ = (value >> 8) & 0xFF;
             *row++ = (value >> 16) & 0xFF;
 
-            L = *lum; lum += 2;
-            value = (rgb_2_pix[ L + cr_r ] |
-                     rgb_2_pix[ L + crb_g ] |
-                     rgb_2_pix[ L + cb_b ]);
-            *row++ = (value      ) & 0xFF;
-            *row++ = (value >>  8) & 0xFF;
+            L = *lum;
+            lum += 2;
+            value = (rgb_2_pix[L + cr_r] |
+                     rgb_2_pix[L + crb_g] | rgb_2_pix[L + cb_b]);
+            *row++ = (value) & 0xFF;
+            *row++ = (value >> 8) & 0xFF;
             *row++ = (value >> 16) & 0xFF;
 
         }
@@ -703,42 +690,42 @@
     }
 }
 
-static void Color32DitherYUY2Mod1X( int *colortab, Uint32 *rgb_2_pix,
-                                    unsigned char *lum, unsigned char *cr,
-                                    unsigned char *cb, unsigned char *out,
-                                    int rows, int cols, int mod )
+static void
+Color32DitherYUY2Mod1X (int *colortab, Uint32 * rgb_2_pix,
+                        unsigned char *lum, unsigned char *cr,
+                        unsigned char *cb, unsigned char *out,
+                        int rows, int cols, int mod)
 {
-    unsigned int* row;
+    unsigned int *row;
     int x, y;
     int cr_r;
     int crb_g;
     int cb_b;
     int cols_2 = cols / 2;
 
-    row = (unsigned int*) out;
+    row = (unsigned int *) out;
     y = rows;
-    while( y-- )
-    {
+    while (y--) {
         x = cols_2;
-        while( x-- )
-        {
+        while (x--) {
             register int L;
 
-            cr_r   = 0*768+256 + colortab[ *cr + 0*256 ];
-            crb_g  = 1*768+256 + colortab[ *cr + 1*256 ]
-                               + colortab[ *cb + 2*256 ];
-            cb_b   = 2*768+256 + colortab[ *cb + 3*256 ];
-            cr += 4; cb += 4;
+            cr_r = 0 * 768 + 256 + colortab[*cr + 0 * 256];
+            crb_g = 1 * 768 + 256 + colortab[*cr + 1 * 256]
+                + colortab[*cb + 2 * 256];
+            cb_b = 2 * 768 + 256 + colortab[*cb + 3 * 256];
+            cr += 4;
+            cb += 4;
 
-            L = *lum; lum += 2;
-            *row++ = (rgb_2_pix[ L + cr_r ] |
-                       rgb_2_pix[ L + crb_g ] |
-                       rgb_2_pix[ L + cb_b ]);
+            L = *lum;
+            lum += 2;
+            *row++ = (rgb_2_pix[L + cr_r] |
+                      rgb_2_pix[L + crb_g] | rgb_2_pix[L + cb_b]);
 
-            L = *lum; lum += 2;
-            *row++ = (rgb_2_pix[ L + cr_r ] |
-                       rgb_2_pix[ L + crb_g ] |
-                       rgb_2_pix[ L + cb_b ]);
+            L = *lum;
+            lum += 2;
+            *row++ = (rgb_2_pix[L + cr_r] |
+                      rgb_2_pix[L + crb_g] | rgb_2_pix[L + cb_b]);
 
 
         }
@@ -751,13 +738,14 @@
  * 16 bits replicated in the upper 16. This means I can write ints and get
  * the horisontal doubling for free (almost).
  */
-static void Color16DitherYUY2Mod2X( int *colortab, Uint32 *rgb_2_pix,
-                                    unsigned char *lum, unsigned char *cr,
-                                    unsigned char *cb, unsigned char *out,
-                                    int rows, int cols, int mod )
+static void
+Color16DitherYUY2Mod2X (int *colortab, Uint32 * rgb_2_pix,
+                        unsigned char *lum, unsigned char *cr,
+                        unsigned char *cb, unsigned char *out,
+                        int rows, int cols, int mod)
 {
-    unsigned int* row = (unsigned int*) out;
-    const int next_row = cols+(mod/2);
+    unsigned int *row = (unsigned int *) out;
+    const int next_row = cols + (mod / 2);
     int x, y;
     int cr_r;
     int crb_g;
@@ -765,29 +753,30 @@
     int cols_2 = cols / 2;
 
     y = rows;
-    while( y-- )
-    {
+    while (y--) {
         x = cols_2;
-        while( x-- )
-        {
+        while (x--) {
             register int L;
 
-            cr_r   = 0*768+256 + colortab[ *cr + 0*256 ];
-            crb_g  = 1*768+256 + colortab[ *cr + 1*256 ]
-                               + colortab[ *cb + 2*256 ];
-            cb_b   = 2*768+256 + colortab[ *cb + 3*256 ];
-            cr += 4; cb += 4;
+            cr_r = 0 * 768 + 256 + colortab[*cr + 0 * 256];
+            crb_g = 1 * 768 + 256 + colortab[*cr + 1 * 256]
+                + colortab[*cb + 2 * 256];
+            cb_b = 2 * 768 + 256 + colortab[*cb + 3 * 256];
+            cr += 4;
+            cb += 4;
 
-            L = *lum; lum += 2;
-            row[0] = row[next_row] = (rgb_2_pix[ L + cr_r ] |
-                                        rgb_2_pix[ L + crb_g ] |
-                                        rgb_2_pix[ L + cb_b ]);
+            L = *lum;
+            lum += 2;
+            row[0] = row[next_row] = (rgb_2_pix[L + cr_r] |
+                                      rgb_2_pix[L + crb_g] |
+                                      rgb_2_pix[L + cb_b]);
             row++;
 
-            L = *lum; lum += 2;
-            row[0] = row[next_row] = (rgb_2_pix[ L + cr_r ] |
-                                        rgb_2_pix[ L + crb_g ] |
-                                        rgb_2_pix[ L + cb_b ]);
+            L = *lum;
+            lum += 2;
+            row[0] = row[next_row] = (rgb_2_pix[L + cr_r] |
+                                      rgb_2_pix[L + crb_g] |
+                                      rgb_2_pix[L + cb_b]);
             row++;
 
         }
@@ -795,101 +784,101 @@
     }
 }
 
-static void Color24DitherYUY2Mod2X( int *colortab, Uint32 *rgb_2_pix,
-                                    unsigned char *lum, unsigned char *cr,
-                                    unsigned char *cb, unsigned char *out,
-                                    int rows, int cols, int mod )
+static void
+Color24DitherYUY2Mod2X (int *colortab, Uint32 * rgb_2_pix,
+                        unsigned char *lum, unsigned char *cr,
+                        unsigned char *cb, unsigned char *out,
+                        int rows, int cols, int mod)
 {
     unsigned int value;
-    unsigned char* row = out;
-    const int next_row = (cols*2 + mod) * 3;
+    unsigned char *row = out;
+    const int next_row = (cols * 2 + mod) * 3;
     int x, y;
     int cr_r;
     int crb_g;
     int cb_b;
     int cols_2 = cols / 2;
     y = rows;
-    while( y-- )
-    {
+    while (y--) {
         x = cols_2;
-        while( x-- )
-        {
+        while (x--) {
             register int L;
 
-            cr_r   = 0*768+256 + colortab[ *cr + 0*256 ];
-            crb_g  = 1*768+256 + colortab[ *cr + 1*256 ]
-                               + colortab[ *cb + 2*256 ];
-            cb_b   = 2*768+256 + colortab[ *cb + 3*256 ];
-            cr += 4; cb += 4;
+            cr_r = 0 * 768 + 256 + colortab[*cr + 0 * 256];
+            crb_g = 1 * 768 + 256 + colortab[*cr + 1 * 256]
+                + colortab[*cb + 2 * 256];
+            cb_b = 2 * 768 + 256 + colortab[*cb + 3 * 256];
+            cr += 4;
+            cb += 4;
 
-            L = *lum; lum += 2;
-            value = (rgb_2_pix[ L + cr_r ] |
-                     rgb_2_pix[ L + crb_g ] |
-                     rgb_2_pix[ L + cb_b ]);
-            row[0+0] = row[3+0] = row[next_row+0] = row[next_row+3+0] =
-                     (value      ) & 0xFF;
-            row[0+1] = row[3+1] = row[next_row+1] = row[next_row+3+1] =
-                     (value >>  8) & 0xFF;
-            row[0+2] = row[3+2] = row[next_row+2] = row[next_row+3+2] =
-                     (value >> 16) & 0xFF;
-            row += 2*3;
+            L = *lum;
+            lum += 2;
+            value = (rgb_2_pix[L + cr_r] |
+                     rgb_2_pix[L + crb_g] | rgb_2_pix[L + cb_b]);
+            row[0 + 0] = row[3 + 0] = row[next_row + 0] =
+                row[next_row + 3 + 0] = (value) & 0xFF;
+            row[0 + 1] = row[3 + 1] = row[next_row + 1] =
+                row[next_row + 3 + 1] = (value >> 8) & 0xFF;
+            row[0 + 2] = row[3 + 2] = row[next_row + 2] =
+                row[next_row + 3 + 2] = (value >> 16) & 0xFF;
+            row += 2 * 3;
 
-            L = *lum; lum += 2;
-            value = (rgb_2_pix[ L + cr_r ] |
-                     rgb_2_pix[ L + crb_g ] |
-                     rgb_2_pix[ L + cb_b ]);
-            row[0+0] = row[3+0] = row[next_row+0] = row[next_row+3+0] =
-                     (value      ) & 0xFF;
-            row[0+1] = row[3+1] = row[next_row+1] = row[next_row+3+1] =
-                     (value >>  8) & 0xFF;
-            row[0+2] = row[3+2] = row[next_row+2] = row[next_row+3+2] =
-                     (value >> 16) & 0xFF;
-            row += 2*3;
+            L = *lum;
+            lum += 2;
+            value = (rgb_2_pix[L + cr_r] |
+                     rgb_2_pix[L + crb_g] | rgb_2_pix[L + cb_b]);
+            row[0 + 0] = row[3 + 0] = row[next_row + 0] =
+                row[next_row + 3 + 0] = (value) & 0xFF;
+            row[0 + 1] = row[3 + 1] = row[next_row + 1] =
+                row[next_row + 3 + 1] = (value >> 8) & 0xFF;
+            row[0 + 2] = row[3 + 2] = row[next_row + 2] =
+                row[next_row + 3 + 2] = (value >> 16) & 0xFF;
+            row += 2 * 3;
 
         }
         row += next_row;
     }
 }
 
-static void Color32DitherYUY2Mod2X( int *colortab, Uint32 *rgb_2_pix,
-                                    unsigned char *lum, unsigned char *cr,
-                                    unsigned char *cb, unsigned char *out,
-                                    int rows, int cols, int mod )
+static void
+Color32DitherYUY2Mod2X (int *colortab, Uint32 * rgb_2_pix,
+                        unsigned char *lum, unsigned char *cr,
+                        unsigned char *cb, unsigned char *out,
+                        int rows, int cols, int mod)
 {
-    unsigned int* row = (unsigned int*) out;
-    const int next_row = cols*2+mod;
+    unsigned int *row = (unsigned int *) out;
+    const int next_row = cols * 2 + mod;
     int x, y;
     int cr_r;
     int crb_g;
     int cb_b;
     int cols_2 = cols / 2;
-    mod+=mod;
+    mod += mod;
     y = rows;
-    while( y-- )
-    {
+    while (y--) {
         x = cols_2;
-        while( x-- )
-        {
+        while (x--) {
             register int L;
 
-            cr_r   = 0*768+256 + colortab[ *cr + 0*256 ];
-            crb_g  = 1*768+256 + colortab[ *cr + 1*256 ]
-                               + colortab[ *cb + 2*256 ];
-            cb_b   = 2*768+256 + colortab[ *cb + 3*256 ];
-            cr += 4; cb += 4;
+            cr_r = 0 * 768 + 256 + colortab[*cr + 0 * 256];
+            crb_g = 1 * 768 + 256 + colortab[*cr + 1 * 256]
+                + colortab[*cb + 2 * 256];
+            cb_b = 2 * 768 + 256 + colortab[*cb + 3 * 256];
+            cr += 4;
+            cb += 4;
 
-            L = *lum; lum += 2;
-            row[0] = row[1] = row[next_row] = row[next_row+1] =
-                                       (rgb_2_pix[ L + cr_r ] |
-                                        rgb_2_pix[ L + crb_g ] |
-                                        rgb_2_pix[ L + cb_b ]);
+            L = *lum;
+            lum += 2;
+            row[0] = row[1] = row[next_row] = row[next_row + 1] =
+                (rgb_2_pix[L + cr_r] |
+                 rgb_2_pix[L + crb_g] | rgb_2_pix[L + cb_b]);
             row += 2;
 
-            L = *lum; lum += 2;
-            row[0] = row[1] = row[next_row] = row[next_row+1] =
-                                       (rgb_2_pix[ L + cr_r ] |
-                                        rgb_2_pix[ L + crb_g ] |
-                                        rgb_2_pix[ L + cb_b ]);
+            L = *lum;
+            lum += 2;
+            row[0] = row[1] = row[next_row] = row[next_row + 1] =
+                (rgb_2_pix[L + cr_r] |
+                 rgb_2_pix[L + crb_g] | rgb_2_pix[L + cb_b]);
             row += 2;
 
 
@@ -903,396 +892,411 @@
  * How many 1 bits are there in the Uint32.
  * Low performance, do not call often.
  */
-static int number_of_bits_set( Uint32 a )
+static int
+number_of_bits_set (Uint32 a)
 {
-    if(!a) return 0;
-    if(a & 1) return 1 + number_of_bits_set(a >> 1);
-    return(number_of_bits_set(a >> 1));
+    if (!a)
+        return 0;
+    if (a & 1)
+        return 1 + number_of_bits_set (a >> 1);
+    return (number_of_bits_set (a >> 1));
 }
 
 /*
  * How many 0 bits are there at least significant end of Uint32.
  * Low performance, do not call often.
  */
-static int free_bits_at_bottom( Uint32 a )
+static int
+free_bits_at_bottom (Uint32 a)
 {
-      /* assume char is 8 bits */
-    if(!a) return sizeof(Uint32) * 8;
-    if(((Sint32)a) & 1l) return 0;
-    return 1 + free_bits_at_bottom ( a >> 1);
+    /* assume char is 8 bits */
+    if (!a)
+        return sizeof (Uint32) * 8;
+    if (((Sint32) a) & 1l)
+        return 0;
+    return 1 + free_bits_at_bottom (a >> 1);
 }
 
 
-SDL_Overlay *SDL_CreateYUV_SW(_THIS, int width, int height, Uint32 format, SDL_Surface *display)
+SDL_Overlay *
+SDL_CreateYUV_SW (_THIS, int width, int height, Uint32 format,
+                  SDL_Surface * display)
 {
-	SDL_Overlay *overlay;
-	struct private_yuvhwdata *swdata;
-	int *Cr_r_tab;
-	int *Cr_g_tab;
-	int *Cb_g_tab;
-	int *Cb_b_tab;
-	Uint32 *r_2_pix_alloc;
-	Uint32 *g_2_pix_alloc;
-	Uint32 *b_2_pix_alloc;
-	int i;
-	int CR, CB;
-	Uint32 Rmask, Gmask, Bmask;
+    SDL_Overlay *overlay;
+    struct private_yuvhwdata *swdata;
+    int *Cr_r_tab;
+    int *Cr_g_tab;
+    int *Cb_g_tab;
+    int *Cb_b_tab;
+    Uint32 *r_2_pix_alloc;
+    Uint32 *g_2_pix_alloc;
+    Uint32 *b_2_pix_alloc;
+    int i;
+    int CR, CB;
+    Uint32 Rmask, Gmask, Bmask;
 
-	/* Only RGB packed pixel conversion supported */
-	if ( (display->format->BytesPerPixel != 2) &&
-	     (display->format->BytesPerPixel != 3) &&
-	     (display->format->BytesPerPixel != 4) ) {
-		SDL_SetError("Can't use YUV data on non 16/24/32 bit surfaces");
-		return(NULL);
-	}
+    /* Only RGB packed pixel conversion supported */
+    if ((display->format->BytesPerPixel != 2) &&
+        (display->format->BytesPerPixel != 3) &&
+        (display->format->BytesPerPixel != 4)) {
+        SDL_SetError ("Can't use YUV data on non 16/24/32 bit surfaces");
+        return (NULL);
+    }
 
-	/* Verify that we support the format */
-	switch (format) {
-	    case SDL_YV12_OVERLAY:
-	    case SDL_IYUV_OVERLAY:
-	    case SDL_YUY2_OVERLAY:
-	    case SDL_UYVY_OVERLAY:
-	    case SDL_YVYU_OVERLAY:
-		break;
-	    default:
-		SDL_SetError("Unsupported YUV format");
-		return(NULL);
-	}
+    /* Verify that we support the format */
+    switch (format) {
+    case SDL_YV12_OVERLAY:
+    case SDL_IYUV_OVERLAY:
+    case SDL_YUY2_OVERLAY:
+    case SDL_UYVY_OVERLAY:
+    case SDL_YVYU_OVERLAY:
+        break;
+    default:
+        SDL_SetError ("Unsupported YUV format");
+        return (NULL);
+    }
 
-	/* Create the overlay structure */
-	overlay = (SDL_Overlay *)SDL_malloc(sizeof *overlay);
-	if ( overlay == NULL ) {
-		SDL_OutOfMemory();
-		return(NULL);
-	}
-	SDL_memset(overlay, 0, (sizeof *overlay));
+    /* Create the overlay structure */
+    overlay = (SDL_Overlay *) SDL_malloc (sizeof *overlay);
+    if (overlay == NULL) {
+        SDL_OutOfMemory ();
+        return (NULL);
+    }
+    SDL_memset (overlay, 0, (sizeof *overlay));
 
-	/* Fill in the basic members */
-	overlay->format = format;
-	overlay->w = width;
-	overlay->h = height;
-
-	/* Set up the YUV surface function structure */
-	overlay->hwfuncs = &sw_yuvfuncs;
+    /* Fill in the basic members */
+    overlay->format = format;
+    overlay->w = width;
+    overlay->h = height;
 
-	/* Create the pixel data and lookup tables */
-	swdata = (struct private_yuvhwdata *)SDL_malloc(sizeof *swdata);
-	overlay->hwdata = swdata;
-	if ( swdata == NULL ) {
-		SDL_OutOfMemory();
-		SDL_FreeYUVOverlay(overlay);
-		return(NULL);
-	}
-	swdata->stretch = NULL;
-	swdata->display = display;
-	swdata->pixels = (Uint8 *) SDL_malloc(width*height*2);
-	swdata->colortab = (int *)SDL_malloc(4*256*sizeof(int));
-	Cr_r_tab = &swdata->colortab[0*256];
-	Cr_g_tab = &swdata->colortab[1*256];
-	Cb_g_tab = &swdata->colortab[2*256];
-	Cb_b_tab = &swdata->colortab[3*256];
-	swdata->rgb_2_pix = (Uint32 *)SDL_malloc(3*768*sizeof(Uint32));
-	r_2_pix_alloc = &swdata->rgb_2_pix[0*768];
-	g_2_pix_alloc = &swdata->rgb_2_pix[1*768];
-	b_2_pix_alloc = &swdata->rgb_2_pix[2*768];
-	if ( ! swdata->pixels || ! swdata->colortab || ! swdata->rgb_2_pix ) {
-		SDL_OutOfMemory();
-		SDL_FreeYUVOverlay(overlay);
-		return(NULL);
-	}
+    /* Set up the YUV surface function structure */
+    overlay->hwfuncs = &sw_yuvfuncs;
 
-	/* Generate the tables for the display surface */
-	for (i=0; i<256; i++) {
-		/* Gamma correction (luminescence table) and chroma correction
-		   would be done here.  See the Berkeley mpeg_play sources.
-		*/
-		CB = CR = (i-128);
-		Cr_r_tab[i] = (int) ( (0.419/0.299) * CR);
-		Cr_g_tab[i] = (int) (-(0.299/0.419) * CR);
-		Cb_g_tab[i] = (int) (-(0.114/0.331) * CB); 
-		Cb_b_tab[i] = (int) ( (0.587/0.331) * CB);
-	}
+    /* Create the pixel data and lookup tables */
+    swdata = (struct private_yuvhwdata *) SDL_malloc (sizeof *swdata);
+    overlay->hwdata = swdata;
+    if (swdata == NULL) {
+        SDL_OutOfMemory ();
+        SDL_FreeYUVOverlay (overlay);
+        return (NULL);
+    }
+    swdata->stretch = NULL;
+    swdata->display = display;
+    swdata->pixels = (Uint8 *) SDL_malloc (width * height * 2);
+    swdata->colortab = (int *) SDL_malloc (4 * 256 * sizeof (int));
+    Cr_r_tab = &swdata->colortab[0 * 256];
+    Cr_g_tab = &swdata->colortab[1 * 256];
+    Cb_g_tab = &swdata->colortab[2 * 256];
+    Cb_b_tab = &swdata->colortab[3 * 256];
+    swdata->rgb_2_pix = (Uint32 *) SDL_malloc (3 * 768 * sizeof (Uint32));
+    r_2_pix_alloc = &swdata->rgb_2_pix[0 * 768];
+    g_2_pix_alloc = &swdata->rgb_2_pix[1 * 768];
+    b_2_pix_alloc = &swdata->rgb_2_pix[2 * 768];
+    if (!swdata->pixels || !swdata->colortab || !swdata->rgb_2_pix) {
+        SDL_OutOfMemory ();
+        SDL_FreeYUVOverlay (overlay);
+        return (NULL);
+    }
 
-	/* 
-	 * Set up entries 0-255 in rgb-to-pixel value tables.
-	 */
-	Rmask = display->format->Rmask;
-	Gmask = display->format->Gmask;
-	Bmask = display->format->Bmask;
-	for ( i=0; i<256; ++i ) {
-		r_2_pix_alloc[i+256] = i >> (8 - number_of_bits_set(Rmask));
-		r_2_pix_alloc[i+256] <<= free_bits_at_bottom(Rmask);
-		g_2_pix_alloc[i+256] = i >> (8 - number_of_bits_set(Gmask));
-		g_2_pix_alloc[i+256] <<= free_bits_at_bottom(Gmask);
-		b_2_pix_alloc[i+256] = i >> (8 - number_of_bits_set(Bmask));
-		b_2_pix_alloc[i+256] <<= free_bits_at_bottom(Bmask);
-	}
+    /* Generate the tables for the display surface */
+    for (i = 0; i < 256; i++) {
+        /* Gamma correction (luminescence table) and chroma correction
+           would be done here.  See the Berkeley mpeg_play sources.
+         */
+        CB = CR = (i - 128);
+        Cr_r_tab[i] = (int) ((0.419 / 0.299) * CR);
+        Cr_g_tab[i] = (int) (-(0.299 / 0.419) * CR);
+        Cb_g_tab[i] = (int) (-(0.114 / 0.331) * CB);
+        Cb_b_tab[i] = (int) ((0.587 / 0.331) * CB);
+    }
+
+    /* 
+     * Set up entries 0-255 in rgb-to-pixel value tables.
+     */
+    Rmask = display->format->Rmask;
+    Gmask = display->format->Gmask;
+    Bmask = display->format->Bmask;
+    for (i = 0; i < 256; ++i) {
+        r_2_pix_alloc[i + 256] = i >> (8 - number_of_bits_set (Rmask));
+        r_2_pix_alloc[i + 256] <<= free_bits_at_bottom (Rmask);
+        g_2_pix_alloc[i + 256] = i >> (8 - number_of_bits_set (Gmask));
+        g_2_pix_alloc[i + 256] <<= free_bits_at_bottom (Gmask);
+        b_2_pix_alloc[i + 256] = i >> (8 - number_of_bits_set (Bmask));
+        b_2_pix_alloc[i + 256] <<= free_bits_at_bottom (Bmask);
+    }
 
-	/*
-	 * If we have 16-bit output depth, then we double the value
-	 * in the top word. This means that we can write out both
-	 * pixels in the pixel doubling mode with one op. It is 
-	 * harmless in the normal case as storing a 32-bit value
-	 * through a short pointer will lose the top bits anyway.
-	 */
-	if( display->format->BytesPerPixel == 2 ) {
-		for ( i=0; i<256; ++i ) {
-			r_2_pix_alloc[i+256] |= (r_2_pix_alloc[i+256]) << 16;
-			g_2_pix_alloc[i+256] |= (g_2_pix_alloc[i+256]) << 16;
-			b_2_pix_alloc[i+256] |= (b_2_pix_alloc[i+256]) << 16;
-		}
-	}
+    /*
+     * If we have 16-bit output depth, then we double the value
+     * in the top word. This means that we can write out both
+     * pixels in the pixel doubling mode with one op. It is 
+     * harmless in the normal case as storing a 32-bit value
+     * through a short pointer will lose the top bits anyway.
+     */
+    if (display->format->BytesPerPixel == 2) {
+        for (i = 0; i < 256; ++i) {
+            r_2_pix_alloc[i + 256] |= (r_2_pix_alloc[i + 256]) << 16;
+            g_2_pix_alloc[i + 256] |= (g_2_pix_alloc[i + 256]) << 16;
+            b_2_pix_alloc[i + 256] |= (b_2_pix_alloc[i + 256]) << 16;
+        }
+    }
 
-	/*
-	 * Spread out the values we have to the rest of the array so that
-	 * we do not need to check for overflow.
-	 */
-	for ( i=0; i<256; ++i ) {
-		r_2_pix_alloc[i] = r_2_pix_alloc[256];
-		r_2_pix_alloc[i+512] = r_2_pix_alloc[511];
-		g_2_pix_alloc[i] = g_2_pix_alloc[256];
-		g_2_pix_alloc[i+512] = g_2_pix_alloc[511];
-		b_2_pix_alloc[i] = b_2_pix_alloc[256];
-		b_2_pix_alloc[i+512] = b_2_pix_alloc[511];
-	}
+    /*
+     * Spread out the values we have to the rest of the array so that
+     * we do not need to check for overflow.
+     */
+    for (i = 0; i < 256; ++i) {
+        r_2_pix_alloc[i] = r_2_pix_alloc[256];
+        r_2_pix_alloc[i + 512] = r_2_pix_alloc[511];
+        g_2_pix_alloc[i] = g_2_pix_alloc[256];
+        g_2_pix_alloc[i + 512] = g_2_pix_alloc[511];
+        b_2_pix_alloc[i] = b_2_pix_alloc[256];
+        b_2_pix_alloc[i + 512] = b_2_pix_alloc[511];
+    }
 
-	/* You have chosen wisely... */
-	switch (format) {
-	    case SDL_YV12_OVERLAY:
-	    case SDL_IYUV_OVERLAY:
-		if ( display->format->BytesPerPixel == 2 ) {
-#if 0 /*defined(__GNUC__) && defined(__i386__) && SDL_ASSEMBLY_ROUTINES*/
-			/* inline assembly functions */
-			if ( SDL_HasMMX() && (Rmask == 0xF800) &&
-			                     (Gmask == 0x07E0) &&
-				             (Bmask == 0x001F) &&
-			                     (width & 15) == 0) {
+    /* You have chosen wisely... */
+    switch (format) {
+    case SDL_YV12_OVERLAY:
+    case SDL_IYUV_OVERLAY:
+        if (display->format->BytesPerPixel == 2) {
+#if 0                           /*defined(__GNUC__) && defined(__i386__) && SDL_ASSEMBLY_ROUTINES */
+            /* inline assembly functions */
+            if (SDL_HasMMX () && (Rmask == 0xF800) &&
+                (Gmask == 0x07E0) && (Bmask == 0x001F) && (width & 15) == 0) {
 /*printf("Using MMX 16-bit 565 dither\n");*/
-				swdata->Display1X = Color565DitherYV12MMX1X;
-			} else {
+                swdata->Display1X = Color565DitherYV12MMX1X;
+            } else {
 /*printf("Using C 16-bit dither\n");*/
-				swdata->Display1X = Color16DitherYV12Mod1X;
-			}
+                swdata->Display1X = Color16DitherYV12Mod1X;
+            }
 #else
-			swdata->Display1X = Color16DitherYV12Mod1X;
+            swdata->Display1X = Color16DitherYV12Mod1X;
 #endif
-			swdata->Display2X = Color16DitherYV12Mod2X;
-		}
-		if ( display->format->BytesPerPixel == 3 ) {
-			swdata->Display1X = Color24DitherYV12Mod1X;
-			swdata->Display2X = Color24DitherYV12Mod2X;
-		}
-		if ( display->format->BytesPerPixel == 4 ) {
-#if 0 /*defined(__GNUC__) && defined(__i386__) && SDL_ASSEMBLY_ROUTINES*/
-			/* inline assembly functions */
-			if ( SDL_HasMMX() && (Rmask == 0x00FF0000) &&
-			                     (Gmask == 0x0000FF00) &&
-				             (Bmask == 0x000000FF) && 
-			                     (width & 15) == 0) {
+            swdata->Display2X = Color16DitherYV12Mod2X;
+        }
+        if (display->format->BytesPerPixel == 3) {
+            swdata->Display1X = Color24DitherYV12Mod1X;
+            swdata->Display2X = Color24DitherYV12Mod2X;
+        }
+        if (display->format->BytesPerPixel == 4) {
+#if 0                           /*defined(__GNUC__) && defined(__i386__) && SDL_ASSEMBLY_ROUTINES */
+            /* inline assembly functions */
+            if (SDL_HasMMX () && (Rmask == 0x00FF0000) &&
+                (Gmask == 0x0000FF00) &&
+                (Bmask == 0x000000FF) && (width & 15) == 0) {
 /*printf("Using MMX 32-bit dither\n");*/
-				swdata->Display1X = ColorRGBDitherYV12MMX1X;
-			} else {
+                swdata->Display1X = ColorRGBDitherYV12MMX1X;
+            } else {
 /*printf("Using C 32-bit dither\n");*/
-				swdata->Display1X = Color32DitherYV12Mod1X;
-			}
+                swdata->Display1X = Color32DitherYV12Mod1X;
+            }
 #else
-			swdata->Display1X = Color32DitherYV12Mod1X;
+            swdata->Display1X = Color32DitherYV12Mod1X;
 #endif
-			swdata->Display2X = Color32DitherYV12Mod2X;
-		}
-		break;
-	    case SDL_YUY2_OVERLAY:
-	    case SDL_UYVY_OVERLAY:
-	    case SDL_YVYU_OVERLAY:
-		if ( display->format->BytesPerPixel == 2 ) {
-			swdata->Display1X = Color16DitherYUY2Mod1X;
-			swdata->Display2X = Color16DitherYUY2Mod2X;
-		}
-		if ( display->format->BytesPerPixel == 3 ) {
-			swdata->Display1X = Color24DitherYUY2Mod1X;
-			swdata->Display2X = Color24DitherYUY2Mod2X;
-		}
-		if ( display->format->BytesPerPixel == 4 ) {
-			swdata->Display1X = Color32DitherYUY2Mod1X;
-			swdata->Display2X = Color32DitherYUY2Mod2X;
-		}
-		break;
-	    default:
-		/* We should never get here (caught above) */
-		break;
-	}
+            swdata->Display2X = Color32DitherYV12Mod2X;
+        }
+        break;
+    case SDL_YUY2_OVERLAY:
+    case SDL_UYVY_OVERLAY:
+    case SDL_YVYU_OVERLAY:
+        if (display->format->BytesPerPixel == 2) {
+            swdata->Display1X = Color16DitherYUY2Mod1X;
+            swdata->Display2X = Color16DitherYUY2Mod2X;
+        }
+        if (display->format->BytesPerPixel == 3) {
+            swdata->Display1X = Color24DitherYUY2Mod1X;
+            swdata->Display2X = Color24DitherYUY2Mod2X;
+        }
+        if (display->format->BytesPerPixel == 4) {
+            swdata->Display1X = Color32DitherYUY2Mod1X;
+            swdata->Display2X = Color32DitherYUY2Mod2X;
+        }
+        break;
+    default:
+        /* We should never get here (caught above) */
+        break;
+    }
 
-	/* Find the pitch and offset values for the overlay */
-	overlay->pitches = swdata->pitches;
-	overlay->pixels = swdata->planes;
-	switch (format) {
-	    case SDL_YV12_OVERLAY:
-	    case SDL_IYUV_OVERLAY:
-		overlay->pitches[0] = overlay->w;
-		overlay->pitches[1] = overlay->pitches[0] / 2;
-		overlay->pitches[2] = overlay->pitches[0] / 2;
-	        overlay->pixels[0] = swdata->pixels;
-	        overlay->pixels[1] = overlay->pixels[0] +
-		                     overlay->pitches[0] * overlay->h;
-	        overlay->pixels[2] = overlay->pixels[1] +
-		                     overlay->pitches[1] * overlay->h / 2;
-		overlay->planes = 3;
-		break;
-	    case SDL_YUY2_OVERLAY:
-	    case SDL_UYVY_OVERLAY:
-	    case SDL_YVYU_OVERLAY:
-		overlay->pitches[0] = overlay->w*2;
-	        overlay->pixels[0] = swdata->pixels;
-		overlay->planes = 1;
-		break;
-	    default:
-		/* We should never get here (caught above) */
-		break;
-	}
+    /* Find the pitch and offset values for the overlay */
+    overlay->pitches = swdata->pitches;
+    overlay->pixels = swdata->planes;
+    switch (format) {
+    case SDL_YV12_OVERLAY:
+    case SDL_IYUV_OVERLAY:
+        overlay->pitches[0] = overlay->w;
+        overlay->pitches[1] = overlay->pitches[0] / 2;
+        overlay->pitches[2] = overlay->pitches[0] / 2;
+        overlay->pixels[0] = swdata->pixels;
+        overlay->pixels[1] = overlay->pixels[0] +
+            overlay->pitches[0] * overlay->h;
+        overlay->pixels[2] = overlay->pixels[1] +
+            overlay->pitches[1] * overlay->h / 2;
+        overlay->planes = 3;
+        break;
+    case SDL_YUY2_OVERLAY:
+    case SDL_UYVY_OVERLAY:
+    case SDL_YVYU_OVERLAY:
+        overlay->pitches[0] = overlay->w * 2;
+        overlay->pixels[0] = swdata->pixels;
+        overlay->planes = 1;
+        break;
+    default:
+        /* We should never get here (caught above) */
+        break;
+    }
 
-	/* We're all done.. */
-	return(overlay);
+    /* We're all done.. */
+    return (overlay);
 }
 
-int SDL_LockYUV_SW(_THIS, SDL_Overlay *overlay)
+int
+SDL_LockYUV_SW (_THIS, SDL_Overlay * overlay)
 {
-	return(0);
+    return (0);
 }
 
-void SDL_UnlockYUV_SW(_THIS, SDL_Overlay *overlay)
+void
+SDL_UnlockYUV_SW (_THIS, SDL_Overlay * overlay)
 {
-	return;
+    return;
 }
 
-int SDL_DisplayYUV_SW(_THIS, SDL_Overlay *overlay, SDL_Rect *src, SDL_Rect *dst)
+int
+SDL_DisplayYUV_SW (_THIS, SDL_Overlay * overlay, SDL_Rect * src,
+                   SDL_Rect * dst)
 {
-	struct private_yuvhwdata *swdata;
-	int stretch;
-	int scale_2x;
-	SDL_Surface *display;
-	Uint8 *lum, *Cr, *Cb;
-	Uint8 *dstp;
-	int mod;
+    struct private_yuvhwdata *swdata;
+    int stretch;
+    int scale_2x;
+    SDL_Surface *display;
+    Uint8 *lum, *Cr, *Cb;
+    Uint8 *dstp;
+    int mod;
 
-	swdata = overlay->hwdata;
-	stretch = 0;
-	scale_2x = 0;
-	if ( src->x || src->y || src->w < overlay->w || src->h < overlay->h ) {
-		/* The source rectangle has been clipped.
-		   Using a scratch surface is easier than adding clipped
-		   source support to all the blitters, plus that would
-		   slow them down in the general unclipped case.
-		*/
-		stretch = 1;
-	} else if ( (src->w != dst->w) || (src->h != dst->h) ) {
-		if ( (dst->w == 2*src->w) &&
-		     (dst->h == 2*src->h) ) {
-			scale_2x = 1;
-		} else {
-			stretch = 1;
-		}
-	}
-	if ( stretch ) {
-		if ( ! swdata->stretch ) {
-			display = swdata->display;
-			swdata->stretch = SDL_CreateRGBSurface(
-				SDL_SWSURFACE,
-				overlay->w, overlay->h,
-				display->format->BitsPerPixel,
-				display->format->Rmask,
-				display->format->Gmask,
-				display->format->Bmask, 0);
-			if ( ! swdata->stretch ) {
-				return(-1);
-			}
-		}
-		display = swdata->stretch;
-	} else {
-		display = swdata->display;
-	}
-	switch (overlay->format) {
-	    case SDL_YV12_OVERLAY:
-		lum = overlay->pixels[0];
-		Cr =  overlay->pixels[1];
-		Cb =  overlay->pixels[2];
-		break;
-	    case SDL_IYUV_OVERLAY:
-		lum = overlay->pixels[0];
-		Cr =  overlay->pixels[2];
-		Cb =  overlay->pixels[1];
-		break;
-	    case SDL_YUY2_OVERLAY:
-		lum = overlay->pixels[0];
-		Cr = lum + 3;
-		Cb = lum + 1;
-		break;
-	    case SDL_UYVY_OVERLAY:
-		lum = overlay->pixels[0]+1;
-		Cr = lum + 1;
-		Cb = lum - 1;
-		break;
-	    case SDL_YVYU_OVERLAY:
-		lum = overlay->pixels[0];
-		Cr = lum + 1;
-		Cb = lum + 3;
-		break;
-	    default:
-		SDL_SetError("Unsupported YUV format in blit");
-		return(-1);
-	}
-	if ( SDL_MUSTLOCK(display) ) {
-        	if ( SDL_LockSurface(display) < 0 ) {
-			return(-1);
-		}
-	}
-	if ( stretch ) {
-		dstp = (Uint8 *)swdata->stretch->pixels;
-	} else {
-		dstp = (Uint8 *)display->pixels
-			+ dst->x * display->format->BytesPerPixel
-			+ dst->y * display->pitch;
-	}
-	mod = (display->pitch / display->format->BytesPerPixel);
+    swdata = overlay->hwdata;
+    stretch = 0;
+    scale_2x = 0;
+    if (src->x || src->y || src->w < overlay->w || src->h < overlay->h) {
+        /* The source rectangle has been clipped.
+           Using a scratch surface is easier than adding clipped
+           source support to all the blitters, plus that would
+           slow them down in the general unclipped case.
+         */
+        stretch = 1;
+    } else if ((src->w != dst->w) || (src->h != dst->h)) {
+        if ((dst->w == 2 * src->w) && (dst->h == 2 * src->h)) {
+            scale_2x = 1;
+        } else {
+            stretch = 1;
+        }
+    }
+    if (stretch) {
+        if (!swdata->stretch) {
+            display = swdata->display;
+            swdata->stretch = SDL_CreateRGBSurface (SDL_SWSURFACE,
+                                                    overlay->w,
+                                                    overlay->h,
+                                                    display->format->
+                                                    BitsPerPixel,
+                                                    display->format->
+                                                    Rmask,
+                                                    display->format->
+                                                    Gmask,
+                                                    display->format->
+                                                    Bmask, 0);
+            if (!swdata->stretch) {
+                return (-1);
+            }
+        }
+        display = swdata->stretch;
+    } else {
+        display = swdata->display;
+    }
+    switch (overlay->format) {
+    case SDL_YV12_OVERLAY:
+        lum = overlay->pixels[0];
+        Cr = overlay->pixels[1];
+        Cb = overlay->pixels[2];
+        break;
+    case SDL_IYUV_OVERLAY:
+        lum = overlay->pixels[0];
+        Cr = overlay->pixels[2];
+        Cb = overlay->pixels[1];
+        break;
+    case SDL_YUY2_OVERLAY:
+        lum = overlay->pixels[0];
+        Cr = lum + 3;
+        Cb = lum + 1;
+        break;
+    case SDL_UYVY_OVERLAY:
+        lum = overlay->pixels[0] + 1;
+        Cr = lum + 1;
+        Cb = lum - 1;
+        break;
+    case SDL_YVYU_OVERLAY:
+        lum = overlay->pixels[0];
+        Cr = lum + 1;
+        Cb = lum + 3;
+        break;
+    default:
+        SDL_SetError ("Unsupported YUV format in blit");
+        return (-1);
+    }
+    if (SDL_MUSTLOCK (display)) {
+        if (SDL_LockSurface (display) < 0) {
+            return (-1);
+        }
+    }
+    if (stretch) {
+        dstp = (Uint8 *) swdata->stretch->pixels;
+    } else {
+        dstp = (Uint8 *) display->pixels
+            + dst->x * display->format->BytesPerPixel
+            + dst->y * display->pitch;
+    }
+    mod = (display->pitch / display->format->BytesPerPixel);
 
-	if ( scale_2x ) {
-		mod -= (overlay->w * 2);
-		swdata->Display2X(swdata->colortab, swdata->rgb_2_pix,
-		                  lum, Cr, Cb, dstp, overlay->h, overlay->w, mod);
-	} else {
-		mod -= overlay->w;
-		swdata->Display1X(swdata->colortab, swdata->rgb_2_pix,
-		                  lum, Cr, Cb, dstp, overlay->h, overlay->w, mod);
-	}
-	if ( SDL_MUSTLOCK(display) ) {
-		SDL_UnlockSurface(display);
-	}
-	if ( stretch ) {
-		display = swdata->display;
-		SDL_SoftStretch(swdata->stretch, src, display, dst);
-	}
-	SDL_UpdateRects(display, 1, dst);
+    if (scale_2x) {
+        mod -= (overlay->w * 2);
+        swdata->Display2X (swdata->colortab, swdata->rgb_2_pix,
+                           lum, Cr, Cb, dstp, overlay->h, overlay->w, mod);
+    } else {
+        mod -= overlay->w;
+        swdata->Display1X (swdata->colortab, swdata->rgb_2_pix,
+                           lum, Cr, Cb, dstp, overlay->h, overlay->w, mod);
+    }
+    if (SDL_MUSTLOCK (display)) {
+        SDL_UnlockSurface (display);
+    }
+    if (stretch) {
+        display = swdata->display;
+        SDL_SoftStretch (swdata->stretch, src, display, dst);
+    }
+    SDL_UpdateRects (display, 1, dst);
 
-	return(0);
+    return (0);
 }
 
-void SDL_FreeYUV_SW(_THIS, SDL_Overlay *overlay)
+void
+SDL_FreeYUV_SW (_THIS, SDL_Overlay * overlay)
 {
-	struct private_yuvhwdata *swdata;
+    struct private_yuvhwdata *swdata;
 
-	swdata = overlay->hwdata;
-	if ( swdata ) {
-		if ( swdata->stretch ) {
-			SDL_FreeSurface(swdata->stretch);
-		}
-		if ( swdata->pixels ) {
-			SDL_free(swdata->pixels);
-		}
-		if ( swdata->colortab ) {
-			SDL_free(swdata->colortab);
-		}
-		if ( swdata->rgb_2_pix ) {
-			SDL_free(swdata->rgb_2_pix);
-		}
-		SDL_free(swdata);
-	}
+    swdata = overlay->hwdata;
+    if (swdata) {
+        if (swdata->stretch) {
+            SDL_FreeSurface (swdata->stretch);
+        }
+        if (swdata->pixels) {
+            SDL_free (swdata->pixels);
+        }
+        if (swdata->colortab) {
+            SDL_free (swdata->colortab);
+        }
+        if (swdata->rgb_2_pix) {
+            SDL_free (swdata->rgb_2_pix);
+        }
+        SDL_free (swdata);
+    }
 }
+
+/* vi: set ts=4 sw=4 expandtab: */