changeset 32703:84a45d5c1102

Remove tabs from two additional files that will be used in the libmpcodecs wrapper for libavfilter.
author cehoyos
date Sat, 15 Jan 2011 20:40:18 +0000
parents 7af3e6f901fd
children fd7560f8d530
files libmpcodecs/vf.c libmpcodecs/vf_scale.c
diffstat 2 files changed, 331 insertions(+), 331 deletions(-) [+]
line wrap: on
line diff
--- a/libmpcodecs/vf.c	Fri Jan 14 22:10:21 2011 +0000
+++ b/libmpcodecs/vf.c	Sat Jan 15 20:40:18 2011 +0000
@@ -228,28 +228,28 @@
 void vf_mpi_clear(mp_image_t* mpi,int x0,int y0,int w,int h){
     int y;
     if(mpi->flags&MP_IMGFLAG_PLANAR){
-	y0&=~1;h+=h&1;
-	if(x0==0 && w==mpi->width){
-	    // full width clear:
-	    memset(mpi->planes[0]+mpi->stride[0]*y0,0,mpi->stride[0]*h);
-	    memset(mpi->planes[1]+mpi->stride[1]*(y0>>mpi->chroma_y_shift),128,mpi->stride[1]*(h>>mpi->chroma_y_shift));
-	    memset(mpi->planes[2]+mpi->stride[2]*(y0>>mpi->chroma_y_shift),128,mpi->stride[2]*(h>>mpi->chroma_y_shift));
-	} else
-	for(y=y0;y<y0+h;y+=2){
-	    memset(mpi->planes[0]+x0+mpi->stride[0]*y,0,w);
-	    memset(mpi->planes[0]+x0+mpi->stride[0]*(y+1),0,w);
-	    memset(mpi->planes[1]+(x0>>mpi->chroma_x_shift)+mpi->stride[1]*(y>>mpi->chroma_y_shift),128,(w>>mpi->chroma_x_shift));
-	    memset(mpi->planes[2]+(x0>>mpi->chroma_x_shift)+mpi->stride[2]*(y>>mpi->chroma_y_shift),128,(w>>mpi->chroma_x_shift));
-	}
-	return;
+        y0&=~1;h+=h&1;
+        if(x0==0 && w==mpi->width){
+            // full width clear:
+            memset(mpi->planes[0]+mpi->stride[0]*y0,0,mpi->stride[0]*h);
+            memset(mpi->planes[1]+mpi->stride[1]*(y0>>mpi->chroma_y_shift),128,mpi->stride[1]*(h>>mpi->chroma_y_shift));
+            memset(mpi->planes[2]+mpi->stride[2]*(y0>>mpi->chroma_y_shift),128,mpi->stride[2]*(h>>mpi->chroma_y_shift));
+        } else
+        for(y=y0;y<y0+h;y+=2){
+            memset(mpi->planes[0]+x0+mpi->stride[0]*y,0,w);
+            memset(mpi->planes[0]+x0+mpi->stride[0]*(y+1),0,w);
+            memset(mpi->planes[1]+(x0>>mpi->chroma_x_shift)+mpi->stride[1]*(y>>mpi->chroma_y_shift),128,(w>>mpi->chroma_x_shift));
+            memset(mpi->planes[2]+(x0>>mpi->chroma_x_shift)+mpi->stride[2]*(y>>mpi->chroma_y_shift),128,(w>>mpi->chroma_x_shift));
+        }
+        return;
     }
     // packed:
     for(y=y0;y<y0+h;y++){
-	unsigned char* dst=mpi->planes[0]+mpi->stride[0]*y+(mpi->bpp>>3)*x0;
-	if(mpi->flags&MP_IMGFLAG_YUV){
-	    unsigned int* p=(unsigned int*) dst;
-	    int size=(mpi->bpp>>3)*w/4;
-	    int i;
+        unsigned char* dst=mpi->planes[0]+mpi->stride[0]*y+(mpi->bpp>>3)*x0;
+        if(mpi->flags&MP_IMGFLAG_YUV){
+            unsigned int* p=(unsigned int*) dst;
+            int size=(mpi->bpp>>3)*w/4;
+            int i;
 #if HAVE_BIGENDIAN
 #define CLEAR_PACKEDYUV_PATTERN 0x00800080
 #define CLEAR_PACKEDYUV_PATTERN_SWAPPED 0x80008000
@@ -257,15 +257,15 @@
 #define CLEAR_PACKEDYUV_PATTERN 0x80008000
 #define CLEAR_PACKEDYUV_PATTERN_SWAPPED 0x00800080
 #endif
-	    if(mpi->flags&MP_IMGFLAG_SWAPPED){
-	        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-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);
+            if(mpi->flags&MP_IMGFLAG_SWAPPED){
+                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-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);
     }
 }
 
@@ -337,31 +337,31 @@
     mpi->type=mp_imgtype;
     mpi->w=vf->w; mpi->h=vf->h;
     // keep buffer allocation status & color flags only:
-//    mpi->flags&=~(MP_IMGFLAG_PRESERVE|MP_IMGFLAG_READABLE|MP_IMGFLAG_DIRECT);
+//  mpi->flags&=~(MP_IMGFLAG_PRESERVE|MP_IMGFLAG_READABLE|MP_IMGFLAG_DIRECT);
     mpi->flags&=MP_IMGFLAG_ALLOCATED|MP_IMGFLAG_TYPE_DISPLAYED|MP_IMGFLAGMASK_COLORS;
     // accept restrictions, draw_slice and palette flags only:
     mpi->flags|=mp_imgflag&(MP_IMGFLAGMASK_RESTRICTIONS|MP_IMGFLAG_DRAW_CALLBACK|MP_IMGFLAG_RGB_PALETTE);
     if(!vf->draw_slice) mpi->flags&=~MP_IMGFLAG_DRAW_CALLBACK;
     if(mpi->width!=w2 || mpi->height!=h){
-//	printf("vf.c: MPI parameters changed!  %dx%d -> %dx%d   \n", mpi->width,mpi->height,w2,h);
-	if(mpi->flags&MP_IMGFLAG_ALLOCATED){
-	    if(mpi->width<w2 || mpi->height<h){
-		// need to re-allocate buffer memory:
-		av_free(mpi->planes[0]);
-		mpi->flags&=~MP_IMGFLAG_ALLOCATED;
-		mp_msg(MSGT_VFILTER,MSGL_V,"vf.c: have to REALLOCATE buffer memory :(\n");
-	    }
-//	} else {
-	} {
-	    mpi->width=w2; mpi->chroma_width=(w2 + (1<<mpi->chroma_x_shift) - 1)>>mpi->chroma_x_shift;
-	    mpi->height=h; mpi->chroma_height=(h + (1<<mpi->chroma_y_shift) - 1)>>mpi->chroma_y_shift;
-	}
+//      printf("vf.c: MPI parameters changed!  %dx%d -> %dx%d   \n", mpi->width,mpi->height,w2,h);
+        if(mpi->flags&MP_IMGFLAG_ALLOCATED){
+            if(mpi->width<w2 || mpi->height<h){
+                // need to re-allocate buffer memory:
+                av_free(mpi->planes[0]);
+                mpi->flags&=~MP_IMGFLAG_ALLOCATED;
+                mp_msg(MSGT_VFILTER,MSGL_V,"vf.c: have to REALLOCATE buffer memory :(\n");
+            }
+//      } else {
+        } {
+            mpi->width=w2; mpi->chroma_width=(w2 + (1<<mpi->chroma_x_shift) - 1)>>mpi->chroma_x_shift;
+            mpi->height=h; mpi->chroma_height=(h + (1<<mpi->chroma_y_shift) - 1)>>mpi->chroma_y_shift;
+        }
     }
     if(!mpi->bpp) mp_image_setfmt(mpi,outfmt);
     if(!(mpi->flags&MP_IMGFLAG_ALLOCATED) && mpi->type>MP_IMGTYPE_EXPORT){
 
-	// check libvo first!
-	if(vf->get_image) vf->get_image(vf,mpi);
+        // check libvo first!
+        if(vf->get_image) vf->get_image(vf,mpi);
 
         if(!(mpi->flags&MP_IMGFLAG_DIRECT)){
           // non-direct and not yet allocated image. allocate it!
@@ -371,54 +371,54 @@
               return NULL;
           }
 
-	  // check if codec prefer aligned stride:
-	  if(mp_imgflag&MP_IMGFLAG_PREFER_ALIGNED_STRIDE){
-	      int align=(mpi->flags&MP_IMGFLAG_PLANAR &&
-	                 mpi->flags&MP_IMGFLAG_YUV) ?
-			 (8<<mpi->chroma_x_shift)-1 : 15; // -- maybe FIXME
-	      w2=((w+align)&(~align));
-	      if(mpi->width!=w2){
-	          // we have to change width... check if we CAN co it:
-		  int flags=vf->query_format(vf,outfmt); // should not fail
-		  if(!(flags&3)) mp_msg(MSGT_DECVIDEO,MSGL_WARN,"??? vf_get_image{vf->query_format(outfmt)} failed!\n");
-//		  printf("query -> 0x%X    \n",flags);
-		  if(flags&VFCAP_ACCEPT_STRIDE){
-	              mpi->width=w2;
-		      mpi->chroma_width=(w2 + (1<<mpi->chroma_x_shift) - 1)>>mpi->chroma_x_shift;
-		  }
-	      }
-	  }
+          // check if codec prefer aligned stride:
+          if(mp_imgflag&MP_IMGFLAG_PREFER_ALIGNED_STRIDE){
+              int align=(mpi->flags&MP_IMGFLAG_PLANAR &&
+                         mpi->flags&MP_IMGFLAG_YUV) ?
+                         (8<<mpi->chroma_x_shift)-1 : 15; // -- maybe FIXME
+              w2=((w+align)&(~align));
+              if(mpi->width!=w2){
+                  // we have to change width... check if we CAN co it:
+                  int flags=vf->query_format(vf,outfmt); // should not fail
+                  if(!(flags&3)) mp_msg(MSGT_DECVIDEO,MSGL_WARN,"??? vf_get_image{vf->query_format(outfmt)} failed!\n");
+//                  printf("query -> 0x%X    \n",flags);
+                  if(flags&VFCAP_ACCEPT_STRIDE){
+                      mpi->width=w2;
+                      mpi->chroma_width=(w2 + (1<<mpi->chroma_x_shift) - 1)>>mpi->chroma_x_shift;
+                  }
+              }
+          }
 
-	  mp_image_alloc_planes(mpi);
-//	  printf("clearing img!\n");
-	  vf_mpi_clear(mpi,0,0,mpi->width,mpi->height);
+          mp_image_alloc_planes(mpi);
+//        printf("clearing img!\n");
+          vf_mpi_clear(mpi,0,0,mpi->width,mpi->height);
         }
     }
     if(mpi->flags&MP_IMGFLAG_DRAW_CALLBACK)
-	if(vf->start_slice) vf->start_slice(vf,mpi);
+        if(vf->start_slice) vf->start_slice(vf,mpi);
     if(!(mpi->flags&MP_IMGFLAG_TYPE_DISPLAYED)){
-	    mp_msg(MSGT_DECVIDEO,MSGL_V,"*** [%s] %s%s mp_image_t, %dx%dx%dbpp %s %s, %d bytes\n",
-		  vf->info->name,
-		  (mpi->type==MP_IMGTYPE_EXPORT)?"Exporting":
-	          ((mpi->flags&MP_IMGFLAG_DIRECT)?"Direct Rendering":"Allocating"),
-	          (mpi->flags&MP_IMGFLAG_DRAW_CALLBACK)?" (slices)":"",
-	          mpi->width,mpi->height,mpi->bpp,
-		  (mpi->flags&MP_IMGFLAG_YUV)?"YUV":((mpi->flags&MP_IMGFLAG_SWAPPED)?"BGR":"RGB"),
-		  (mpi->flags&MP_IMGFLAG_PLANAR)?"planar":"packed",
-	          mpi->bpp*mpi->width*mpi->height/8);
-	    mp_msg(MSGT_DECVIDEO,MSGL_DBG2,"(imgfmt: %x, planes: %p,%p,%p strides: %d,%d,%d, chroma: %dx%d, shift: h:%d,v:%d)\n",
-		mpi->imgfmt, mpi->planes[0], mpi->planes[1], mpi->planes[2],
-		mpi->stride[0], mpi->stride[1], mpi->stride[2],
-		mpi->chroma_width, mpi->chroma_height, mpi->chroma_x_shift, mpi->chroma_y_shift);
-	    mpi->flags|=MP_IMGFLAG_TYPE_DISPLAYED;
+            mp_msg(MSGT_DECVIDEO,MSGL_V,"*** [%s] %s%s mp_image_t, %dx%dx%dbpp %s %s, %d bytes\n",
+                  vf->info->name,
+                  (mpi->type==MP_IMGTYPE_EXPORT)?"Exporting":
+                  ((mpi->flags&MP_IMGFLAG_DIRECT)?"Direct Rendering":"Allocating"),
+                  (mpi->flags&MP_IMGFLAG_DRAW_CALLBACK)?" (slices)":"",
+                  mpi->width,mpi->height,mpi->bpp,
+                  (mpi->flags&MP_IMGFLAG_YUV)?"YUV":((mpi->flags&MP_IMGFLAG_SWAPPED)?"BGR":"RGB"),
+                  (mpi->flags&MP_IMGFLAG_PLANAR)?"planar":"packed",
+                  mpi->bpp*mpi->width*mpi->height/8);
+            mp_msg(MSGT_DECVIDEO,MSGL_DBG2,"(imgfmt: %x, planes: %p,%p,%p strides: %d,%d,%d, chroma: %dx%d, shift: h:%d,v:%d)\n",
+                mpi->imgfmt, mpi->planes[0], mpi->planes[1], mpi->planes[2],
+                mpi->stride[0], mpi->stride[1], mpi->stride[2],
+                mpi->chroma_width, mpi->chroma_height, mpi->chroma_x_shift, mpi->chroma_y_shift);
+            mpi->flags|=MP_IMGFLAG_TYPE_DISPLAYED;
     }
 
   mpi->qscale = NULL;
   }
   mpi->usage_count++;
-//    printf("\rVF_MPI: %p %p %p %d %d %d    \n",
-//	mpi->planes[0],mpi->planes[1],mpi->planes[2],
-//	mpi->stride[0],mpi->stride[1],mpi->stride[2]);
+//  printf("\rVF_MPI: %p %p %p %d %d %d    \n",
+//      mpi->planes[0],mpi->planes[1],mpi->planes[2],
+//      mpi->stride[0],mpi->stride[1],mpi->stride[2]);
   return mpi;
 }
 
@@ -434,11 +434,11 @@
     vf_instance_t* vf;
     int i;
     for(i=0;;i++){
-	if(!filter_list[i]){
-	    mp_msg(MSGT_VFILTER,MSGL_ERR,MSGTR_CouldNotFindVideoFilter,name);
-	    return NULL; // no such filter!
-	}
-	if(!strcmp(filter_list[i]->name,name)) break;
+        if(!filter_list[i]){
+            mp_msg(MSGT_VFILTER,MSGL_ERR,MSGTR_CouldNotFindVideoFilter,name);
+            return NULL; // no such filter!
+        }
+        if(!strcmp(filter_list[i]->name,name)) break;
     }
     vf=malloc(sizeof(vf_instance_t));
     memset(vf,0,sizeof(vf_instance_t));
@@ -455,14 +455,14 @@
       void* vf_priv = m_struct_alloc(st);
       int n;
       for(n = 0 ; args && args[2*n] ; n++)
-	m_struct_set(st,vf_priv,args[2*n],args[2*n+1]);
+        m_struct_set(st,vf_priv,args[2*n],args[2*n+1]);
       vf->priv = vf_priv;
       args = NULL;
     } else // Otherwise we should have the '_oldargs_'
       if(args && !strcmp(args[0],"_oldargs_"))
-	args = (char**)args[1];
+        args = (char**)args[1];
       else
-	args = NULL;
+        args = NULL;
     if(vf->info->vf_open(vf,(char*)args)>0) return vf; // Success!
     free(vf);
     mp_msg(MSGT_VFILTER,MSGL_ERR,MSGTR_CouldNotOpenVideoFilter,name);
@@ -480,16 +480,16 @@
       char* p = str;
       p += sprintf(str,"%s",name);
       for(i = 0 ; args && args[2*i] ; i++)
-	p += sprintf(p," %s=%s",args[2*i],args[2*i+1]);
+        p += sprintf(p," %s=%s",args[2*i],args[2*i+1]);
       mp_msg(MSGT_VFILTER,MSGL_INFO,MSGTR_OpeningVideoFilter "[%s]\n",str);
     }
   } else if(strcmp(name,"vo")) {
     if(args && strcmp(args[0],"_oldargs_") == 0)
       mp_msg(MSGT_VFILTER,MSGL_INFO,MSGTR_OpeningVideoFilter
-	     "[%s=%s]\n", name,args[1]);
+             "[%s=%s]\n", name,args[1]);
     else
       mp_msg(MSGT_VFILTER,MSGL_INFO,MSGTR_OpeningVideoFilter
-	     "[%s]\n", name);
+             "[%s]\n", name);
   }
   return vf_open_plugin(filter_list,next,name,args);
 }
@@ -522,11 +522,11 @@
     unsigned int best=0;
     int ret;
     if((p=list)) while(*p){
-	ret=vf->query_format(vf,*p);
-	mp_msg(MSGT_VFILTER,MSGL_V,"[%s] query(%s) -> %d\n",vf->info->name,vo_format_name(*p),ret&3);
-	if(ret&2){ best=*p; break;} // no conversion -> bingo!
-	if(ret&1 && !best) best=*p; // best with conversion
-	++p;
+        ret=vf->query_format(vf,*p);
+        mp_msg(MSGT_VFILTER,MSGL_V,"[%s] query(%s) -> %d\n",vf->info->name,vo_format_name(*p),ret&3);
+        if(ret&2){ best=*p; break;} // no conversion -> bingo!
+        if(ret&1 && !best) best=*p; // best with conversion
+        ++p;
     }
     if(best) return best; // bingo, they have common csp!
     // ok, then try with scale:
@@ -537,11 +537,11 @@
     if(preferred && vf->query_format(vf,preferred)) best=preferred; else
     // try the list again, now with "scaler" :
     if((p=list)) while(*p){
-	ret=vf->query_format(vf,*p);
-	mp_msg(MSGT_VFILTER,MSGL_V,"[%s] query(%s) -> %d\n",vf->info->name,vo_format_name(*p),ret&3);
-	if(ret&2){ best=*p; break;} // no conversion -> bingo!
-	if(ret&1 && !best) best=*p; // best with conversion
-	++p;
+        ret=vf->query_format(vf,*p);
+        mp_msg(MSGT_VFILTER,MSGL_V,"[%s] query(%s) -> %d\n",vf->info->name,vo_format_name(*p),ret&3);
+        if(ret&2){ best=*p; break;} // no conversion -> bingo!
+        if(ret&1 && !best) best=*p; // best with conversion
+        ++p;
     }
     if(best) *vfp=vf; // else uninit vf  !FIXME!
     return best;
@@ -552,8 +552,8 @@
     dst->fields = src->fields;
     dst->qscale_type= src->qscale_type;
     if(dst->width == src->width && dst->height == src->height){
-	dst->qstride= src->qstride;
-	dst->qscale= src->qscale;
+        dst->qstride= src->qstride;
+        dst->qscale= src->qscale;
     }
 }
 
@@ -570,26 +570,26 @@
 int vf_output_queued_frame(vf_instance_t *vf)
 {
     while (1) {
-	int ret;
-	vf_instance_t *current;
-	vf_instance_t *last=NULL;
-	int (*tmp)(vf_instance_t *);
-	for (current = vf; current; current = current->next)
-	    if (current->continue_buffered_image)
-		last = current;
-	if (!last)
-	    return 0;
-	tmp = last->continue_buffered_image;
-	last->continue_buffered_image = NULL;
-	ret = tmp(last);
-	if (ret > 0) {
-	    vf->control(vf, VFCTRL_DRAW_OSD, NULL);
+        int ret;
+        vf_instance_t *current;
+        vf_instance_t *last=NULL;
+        int (*tmp)(vf_instance_t *);
+        for (current = vf; current; current = current->next)
+            if (current->continue_buffered_image)
+                last = current;
+        if (!last)
+            return 0;
+        tmp = last->continue_buffered_image;
+        last->continue_buffered_image = NULL;
+        ret = tmp(last);
+        if (ret > 0) {
+            vf->control(vf, VFCTRL_DRAW_OSD, NULL);
 #ifdef CONFIG_ASS
-	    vf->control(vf, VFCTRL_DRAW_EOSD, NULL);
+            vf->control(vf, VFCTRL_DRAW_EOSD, NULL);
 #endif
-	}
-	if (ret)
-	    return ret;
+        }
+        if (ret)
+            return ret;
     }
 }
 
@@ -607,14 +607,14 @@
  *
 */
 int vf_config_wrapper(struct vf_instance *vf,
-		    int width, int height, int d_width, int d_height,
-		    unsigned int flags, unsigned int outfmt)
+                    int width, int height, int d_width, int d_height,
+                    unsigned int flags, unsigned int outfmt)
 {
     int r;
     if ((vf->default_caps&VFCAP_CONSTANT) && vf->fmt.have_configured) {
         if ((vf->fmt.orig_width != width)
-	    || (vf->fmt.orig_height != height)
-	    || (vf->fmt.orig_fmt != outfmt)) {
+            || (vf->fmt.orig_height != height)
+            || (vf->fmt.orig_fmt != outfmt)) {
             mp_msg(MSGT_VFILTER,MSGL_ERR,MSGTR_ResolutionDoesntMatch);
             return 0;
         }
@@ -631,31 +631,31 @@
 
 int vf_next_config(struct vf_instance *vf,
         int width, int height, int d_width, int d_height,
-	unsigned int voflags, unsigned int outfmt){
+        unsigned int voflags, unsigned int outfmt){
     int miss;
     int flags=vf->next->query_format(vf->next,outfmt);
     if(!flags){
-	// hmm. colorspace mismatch!!!
-	// let's insert the 'scale' filter, it does the job for us:
-	vf_instance_t* vf2;
-	if(vf->next->info==&vf_info_scale) return 0; // scale->scale
-	vf2=vf_open_filter(vf->next,"scale",NULL);
-	if(!vf2) return 0; // shouldn't happen!
-	vf->next=vf2;
-	flags=vf->next->query_format(vf->next,outfmt);
-	if(!flags){
-	    mp_msg(MSGT_VFILTER,MSGL_ERR,MSGTR_CannotFindColorspace);
-	    return 0; // FAIL
-	}
+        // hmm. colorspace mismatch!!!
+        // let's insert the 'scale' filter, it does the job for us:
+        vf_instance_t* vf2;
+        if(vf->next->info==&vf_info_scale) return 0; // scale->scale
+        vf2=vf_open_filter(vf->next,"scale",NULL);
+        if(!vf2) return 0; // shouldn't happen!
+        vf->next=vf2;
+        flags=vf->next->query_format(vf->next,outfmt);
+        if(!flags){
+            mp_msg(MSGT_VFILTER,MSGL_ERR,MSGTR_CannotFindColorspace);
+            return 0; // FAIL
+        }
     }
     mp_msg(MSGT_VFILTER,MSGL_V,"REQ: flags=0x%X  req=0x%X  \n",flags,vf->default_reqs);
     miss=vf->default_reqs - (flags&vf->default_reqs);
     if(miss&VFCAP_ACCEPT_STRIDE){
-	// vf requires stride support but vf->next doesn't support it!
-	// let's insert the 'expand' filter, it does the job for us:
-	vf_instance_t* vf2=vf_open_filter(vf->next,"expand",NULL);
-	if(!vf2) return 0; // shouldn't happen!
-	vf->next=vf2;
+        // vf requires stride support but vf->next doesn't support it!
+        // let's insert the 'expand' filter, it does the job for us:
+        vf_instance_t* vf2=vf_open_filter(vf->next,"expand",NULL);
+        if(!vf2) return 0; // shouldn't happen!
+        vf->next=vf2;
     }
     vf->next->w = width; vf->next->h = height;
     return vf_config_wrapper(vf->next,width,height,d_width,d_height,voflags,outfmt);
@@ -685,24 +685,24 @@
 
 void vf_next_draw_slice(struct vf_instance *vf,unsigned char** src, int * stride,int w, int h, int x, int y){
     if (vf->next->draw_slice) {
-	vf->next->draw_slice(vf->next,src,stride,w,h,x,y);
-	return;
+        vf->next->draw_slice(vf->next,src,stride,w,h,x,y);
+        return;
     }
     if (!vf->dmpi) {
-	mp_msg(MSGT_VFILTER,MSGL_ERR,"draw_slice: dmpi not stored by vf_%s\n", vf->info->name);
-	return;
+        mp_msg(MSGT_VFILTER,MSGL_ERR,"draw_slice: dmpi not stored by vf_%s\n", vf->info->name);
+        return;
     }
     if (!(vf->dmpi->flags & MP_IMGFLAG_PLANAR)) {
-	memcpy_pic(vf->dmpi->planes[0]+y*vf->dmpi->stride[0]+vf->dmpi->bpp/8*x,
-	    src[0], vf->dmpi->bpp/8*w, h, vf->dmpi->stride[0], stride[0]);
-	return;
+        memcpy_pic(vf->dmpi->planes[0]+y*vf->dmpi->stride[0]+vf->dmpi->bpp/8*x,
+            src[0], vf->dmpi->bpp/8*w, h, vf->dmpi->stride[0], stride[0]);
+        return;
     }
     memcpy_pic(vf->dmpi->planes[0]+y*vf->dmpi->stride[0]+x, src[0],
-	w, h, vf->dmpi->stride[0], stride[0]);
+        w, h, vf->dmpi->stride[0], stride[0]);
     memcpy_pic(vf->dmpi->planes[1]+(y>>vf->dmpi->chroma_y_shift)*vf->dmpi->stride[1]+(x>>vf->dmpi->chroma_x_shift),
-	src[1], w>>vf->dmpi->chroma_x_shift, h>>vf->dmpi->chroma_y_shift, vf->dmpi->stride[1], stride[1]);
+        src[1], w>>vf->dmpi->chroma_x_shift, h>>vf->dmpi->chroma_y_shift, vf->dmpi->stride[1], stride[1]);
     memcpy_pic(vf->dmpi->planes[2]+(y>>vf->dmpi->chroma_y_shift)*vf->dmpi->stride[2]+(x>>vf->dmpi->chroma_x_shift),
-	src[2], w>>vf->dmpi->chroma_x_shift, h>>vf->dmpi->chroma_y_shift, vf->dmpi->stride[2], stride[2]);
+        src[2], w>>vf->dmpi->chroma_x_shift, h>>vf->dmpi->chroma_y_shift, vf->dmpi->stride[2], stride[2]);
 }
 
 //============================================================================
@@ -737,8 +737,8 @@
 
 void vf_uninit_filter_chain(vf_instance_t* vf){
     while(vf){
-	vf_instance_t* next=vf->next;
-	vf_uninit_filter(vf);
-	vf=next;
+        vf_instance_t* next=vf->next;
+        vf_uninit_filter(vf);
+        vf=next;
     }
 }
--- a/libmpcodecs/vf_scale.c	Fri Jan 14 22:10:21 2011 +0000
+++ b/libmpcodecs/vf_scale.c	Sat Jan 15 20:40:18 2011 +0000
@@ -154,12 +154,12 @@
             break;
         ret = vf_next_query_format(vf, format);
 
-	mp_msg(MSGT_VFILTER,MSGL_DBG2,"scale: query(%s) -> %d\n",vo_format_name(format),ret&3);
-	if(ret&VFCAP_CSP_SUPPORTED_BY_HW){
+        mp_msg(MSGT_VFILTER,MSGL_DBG2,"scale: query(%s) -> %d\n",vo_format_name(format),ret&3);
+        if(ret&VFCAP_CSP_SUPPORTED_BY_HW){
             best=format; // no conversion -> bingo!
             break;
         }
-	if(ret&VFCAP_CSP_SUPPORTED && !best)
+        if(ret&VFCAP_CSP_SUPPORTED && !best)
             best=format; // best with conversion
     }
     return best;
@@ -167,7 +167,7 @@
 
 static int config(struct vf_instance *vf,
         int width, int height, int d_width, int d_height,
-	unsigned int flags, unsigned int outfmt){
+        unsigned int flags, unsigned int outfmt){
     unsigned int best=find_best_out(vf, outfmt);
     int vo_flags;
     int int_sws_flags=0;
@@ -177,8 +177,8 @@
     enum PixelFormat dfmt, sfmt;
 
     if(!best){
-	mp_msg(MSGT_VFILTER,MSGL_WARN,"SwScale: no supported outfmt found :(\n");
-	return 0;
+        mp_msg(MSGT_VFILTER,MSGL_WARN,"SwScale: no supported outfmt found :(\n");
+        return 0;
     }
     sfmt = imgfmt2pixfmt(outfmt);
     if (outfmt == IMGFMT_RGB8 || outfmt == IMGFMT_BGR8) sfmt = PIX_FMT_PAL8;
@@ -192,20 +192,20 @@
     // - we're after postproc
     // - user didn't set w:h
     if(!(vo_flags&VFCAP_POSTPROC) && (flags&4) &&
-	    vf->priv->w<0 && vf->priv->h<0){	// -zoom
-	int x=(vo_flags&VFCAP_SWSCALE) ? 0 : 1;
-	if(d_width<width || d_height<height){
-	    // downscale!
-	    if(vo_flags&VFCAP_HWSCALE_DOWN) x=0;
-	} else {
-	    // upscale:
-	    if(vo_flags&VFCAP_HWSCALE_UP) x=0;
-	}
-	if(x){
-	    // user wants sw scaling! (-zoom)
-	    vf->priv->w=d_width;
-	    vf->priv->h=d_height;
-	}
+            vf->priv->w<0 && vf->priv->h<0){        // -zoom
+        int x=(vo_flags&VFCAP_SWSCALE) ? 0 : 1;
+        if(d_width<width || d_height<height){
+            // downscale!
+            if(vo_flags&VFCAP_HWSCALE_DOWN) x=0;
+        } else {
+            // upscale:
+            if(vo_flags&VFCAP_HWSCALE_UP) x=0;
+        }
+        if(x){
+            // user wants sw scaling! (-zoom)
+            vf->priv->w=d_width;
+            vf->priv->h=d_height;
+        }
     }
 
     if(vf->priv->noup){
@@ -260,20 +260,20 @@
 
     // calculate the missing parameters:
     switch(best) {
-    case IMGFMT_YV12:		/* YV12 needs w & h rounded to 2 */
+    case IMGFMT_YV12:                /* YV12 needs w & h rounded to 2 */
     case IMGFMT_I420:
     case IMGFMT_IYUV:
     case IMGFMT_NV12:
     case IMGFMT_NV21:
       vf->priv->h = (vf->priv->h + 1) & ~1;
-    case IMGFMT_YUY2:		/* YUY2 needs w rounded to 2 */
+    case IMGFMT_YUY2:                /* YUY2 needs w rounded to 2 */
     case IMGFMT_UYVY:
       vf->priv->w = (vf->priv->w + 1) & ~1;
     }
 
     mp_msg(MSGT_VFILTER,MSGL_DBG2,"SwScale: scaling %dx%d %s to %dx%d %s  \n",
-	width,height,vo_format_name(outfmt),
-	vf->priv->w,vf->priv->h,vo_format_name(best));
+        width,height,vo_format_name(outfmt),
+        vf->priv->w,vf->priv->h,vo_format_name(best));
 
     // free old ctx:
     if(vf->priv->ctx) sws_freeContext(vf->priv->ctx);
@@ -284,21 +284,21 @@
     int_sws_flags|= vf->priv->v_chr_drop << SWS_SRC_V_CHR_DROP_SHIFT;
     int_sws_flags|= vf->priv->accurate_rnd * SWS_ACCURATE_RND;
     vf->priv->ctx=sws_getContext(width, height >> vf->priv->interlaced,
-	    sfmt,
-		  vf->priv->w, vf->priv->h >> vf->priv->interlaced,
-	    dfmt,
-	    int_sws_flags | get_sws_cpuflags(), srcFilter, dstFilter, vf->priv->param);
+            sfmt,
+                  vf->priv->w, vf->priv->h >> vf->priv->interlaced,
+            dfmt,
+            int_sws_flags | get_sws_cpuflags(), srcFilter, dstFilter, vf->priv->param);
     if(vf->priv->interlaced){
         vf->priv->ctx2=sws_getContext(width, height >> 1,
-	    sfmt,
-		  vf->priv->w, vf->priv->h >> 1,
-	    dfmt,
-	    int_sws_flags | get_sws_cpuflags(), srcFilter, dstFilter, vf->priv->param);
+            sfmt,
+                  vf->priv->w, vf->priv->h >> 1,
+            dfmt,
+            int_sws_flags | get_sws_cpuflags(), srcFilter, dstFilter, vf->priv->param);
     }
     if(!vf->priv->ctx){
-	// error...
-	mp_msg(MSGT_VFILTER,MSGL_WARN,"Couldn't init SwScaler for this setup\n");
-	return 0;
+        // error...
+        mp_msg(MSGT_VFILTER,MSGL_WARN,"Couldn't init SwScaler for this setup\n");
+        return 0;
     }
     vf->priv->fmt=best;
 
@@ -307,70 +307,70 @@
     switch(best){
     case IMGFMT_RGB8: {
       /* set 332 palette for 8 bpp */
-	vf->priv->palette=malloc(4*256);
-	for(i=0; i<256; i++){
-	    vf->priv->palette[4*i+0]=4*(i>>6)*21;
-	    vf->priv->palette[4*i+1]=4*((i>>3)&7)*9;
-	    vf->priv->palette[4*i+2]=4*((i&7)&7)*9;
+        vf->priv->palette=malloc(4*256);
+        for(i=0; i<256; i++){
+            vf->priv->palette[4*i+0]=4*(i>>6)*21;
+            vf->priv->palette[4*i+1]=4*((i>>3)&7)*9;
+            vf->priv->palette[4*i+2]=4*((i&7)&7)*9;
             vf->priv->palette[4*i+3]=0;
-	}
-	break; }
+        }
+        break; }
     case IMGFMT_BGR8: {
       /* set 332 palette for 8 bpp */
-	vf->priv->palette=malloc(4*256);
-	for(i=0; i<256; i++){
-	    vf->priv->palette[4*i+0]=4*(i&3)*21;
-	    vf->priv->palette[4*i+1]=4*((i>>2)&7)*9;
-	    vf->priv->palette[4*i+2]=4*((i>>5)&7)*9;
+        vf->priv->palette=malloc(4*256);
+        for(i=0; i<256; i++){
+            vf->priv->palette[4*i+0]=4*(i&3)*21;
+            vf->priv->palette[4*i+1]=4*((i>>2)&7)*9;
+            vf->priv->palette[4*i+2]=4*((i>>5)&7)*9;
             vf->priv->palette[4*i+3]=0;
-	}
-	break; }
+        }
+        break; }
     case IMGFMT_BGR4:
     case IMGFMT_BG4B: {
-	vf->priv->palette=malloc(4*16);
-	for(i=0; i<16; i++){
-	    vf->priv->palette[4*i+0]=4*(i&1)*63;
-	    vf->priv->palette[4*i+1]=4*((i>>1)&3)*21;
-	    vf->priv->palette[4*i+2]=4*((i>>3)&1)*63;
+        vf->priv->palette=malloc(4*16);
+        for(i=0; i<16; i++){
+            vf->priv->palette[4*i+0]=4*(i&1)*63;
+            vf->priv->palette[4*i+1]=4*((i>>1)&3)*21;
+            vf->priv->palette[4*i+2]=4*((i>>3)&1)*63;
             vf->priv->palette[4*i+3]=0;
-	}
-	break; }
+        }
+        break; }
     case IMGFMT_RGB4:
     case IMGFMT_RG4B: {
-	vf->priv->palette=malloc(4*16);
-	for(i=0; i<16; i++){
-	    vf->priv->palette[4*i+0]=4*(i>>3)*63;
-	    vf->priv->palette[4*i+1]=4*((i>>1)&3)*21;
-	    vf->priv->palette[4*i+2]=4*((i&1)&1)*63;
+        vf->priv->palette=malloc(4*16);
+        for(i=0; i<16; i++){
+            vf->priv->palette[4*i+0]=4*(i>>3)*63;
+            vf->priv->palette[4*i+1]=4*((i>>1)&3)*21;
+            vf->priv->palette[4*i+2]=4*((i&1)&1)*63;
             vf->priv->palette[4*i+3]=0;
-	}
-	break; }
+        }
+        break; }
     }
 
     if(!opt_screen_size_x && !opt_screen_size_y && !(screen_size_xy >= 0.001)){
-	// Compute new d_width and d_height, preserving aspect
-	// while ensuring that both are >= output size in pixels.
-	if (vf->priv->h * d_width > vf->priv->w * d_height) {
-		d_width = vf->priv->h * d_width / d_height;
-		d_height = vf->priv->h;
-	} else {
-		d_height = vf->priv->w * d_height / d_width;
-		d_width = vf->priv->w;
-	}
-	//d_width=d_width*vf->priv->w/width;
-	//d_height=d_height*vf->priv->h/height;
+        // Compute new d_width and d_height, preserving aspect
+        // while ensuring that both are >= output size in pixels.
+        if (vf->priv->h * d_width > vf->priv->w * d_height) {
+                d_width = vf->priv->h * d_width / d_height;
+                d_height = vf->priv->h;
+        } else {
+                d_height = vf->priv->w * d_height / d_width;
+                d_width = vf->priv->w;
+        }
+        //d_width=d_width*vf->priv->w/width;
+        //d_height=d_height*vf->priv->h/height;
     }
     return vf_next_config(vf,vf->priv->w,vf->priv->h,d_width,d_height,flags,best);
 }
 
 static void start_slice(struct vf_instance *vf, mp_image_t *mpi){
-//    printf("start_slice called! flag=%d\n",mpi->flags&MP_IMGFLAG_DRAW_CALLBACK);
+//  printf("start_slice called! flag=%d\n",mpi->flags&MP_IMGFLAG_DRAW_CALLBACK);
     if(!(mpi->flags&MP_IMGFLAG_DRAW_CALLBACK)) return; // shouldn't happen
     // they want slices!!! allocate the buffer.
     mpi->priv=vf->dmpi=vf_get_image(vf->next,vf->priv->fmt,
-//	mpi->type, mpi->flags & (~MP_IMGFLAG_DRAW_CALLBACK),
-	MP_IMGTYPE_TEMP, MP_IMGFLAG_ACCEPT_STRIDE | MP_IMGFLAG_PREFER_ALIGNED_STRIDE,
-	vf->priv->w, vf->priv->h);
+//      mpi->type, mpi->flags & (~MP_IMGFLAG_DRAW_CALLBACK),
+        MP_IMGTYPE_TEMP, MP_IMGFLAG_ACCEPT_STRIDE | MP_IMGFLAG_PREFER_ALIGNED_STRIDE,
+        vf->priv->w, vf->priv->h);
 }
 
 static void scale(struct SwsContext *sws1, struct SwsContext *sws2, uint8_t *src[MP_MAX_PLANES], int src_stride[MP_MAX_PLANES],
@@ -407,32 +407,32 @@
         unsigned char** src, int* stride, int w,int h, int x, int y){
     mp_image_t *dmpi=vf->dmpi;
     if(!dmpi){
-	mp_msg(MSGT_VFILTER,MSGL_FATAL,"vf_scale: draw_slice() called with dmpi=NULL (no get_image?)\n");
-	return;
+        mp_msg(MSGT_VFILTER,MSGL_FATAL,"vf_scale: draw_slice() called with dmpi=NULL (no get_image?)\n");
+        return;
     }
-//    printf("vf_scale::draw_slice() y=%d h=%d\n",y,h);
+//  printf("vf_scale::draw_slice() y=%d h=%d\n",y,h);
     scale(vf->priv->ctx, vf->priv->ctx2, src, stride, y, h, dmpi->planes, dmpi->stride, vf->priv->interlaced);
 }
 
 static int put_image(struct vf_instance *vf, mp_image_t *mpi, double pts){
     mp_image_t *dmpi=mpi->priv;
 
-//    printf("vf_scale::put_image(): processing whole frame! dmpi=%p flag=%d\n",
-//	dmpi, (mpi->flags&MP_IMGFLAG_DRAW_CALLBACK));
+//  printf("vf_scale::put_image(): processing whole frame! dmpi=%p flag=%d\n",
+//      dmpi, (mpi->flags&MP_IMGFLAG_DRAW_CALLBACK));
 
   if(!(mpi->flags&MP_IMGFLAG_DRAW_CALLBACK && dmpi)){
 
     // hope we'll get DR buffer:
     dmpi=vf_get_image(vf->next,vf->priv->fmt,
-	MP_IMGTYPE_TEMP, MP_IMGFLAG_ACCEPT_STRIDE | MP_IMGFLAG_PREFER_ALIGNED_STRIDE,
-	vf->priv->w, vf->priv->h);
+        MP_IMGTYPE_TEMP, MP_IMGFLAG_ACCEPT_STRIDE | MP_IMGFLAG_PREFER_ALIGNED_STRIDE,
+        vf->priv->w, vf->priv->h);
 
       scale(vf->priv->ctx, vf->priv->ctx, mpi->planes,mpi->stride,0,mpi->h,dmpi->planes,dmpi->stride, vf->priv->interlaced);
   }
 
     if(vf->priv->w==mpi->w && vf->priv->h==mpi->h){
-	// just conversion, no scaling -> keep postprocessing data
-	// this way we can apply pp filter to non-yv12 source using scaler
+        // just conversion, no scaling -> keep postprocessing data
+        // this way we can apply pp filter to non-yv12 source using scaler
         vf_clone_mpi_attributes(dmpi, mpi);
     }
 
@@ -451,50 +451,50 @@
   if(vf->priv->ctx)
     switch(request){
     case VFCTRL_GET_EQUALIZER:
-	r= sws_getColorspaceDetails(vf->priv->ctx, &inv_table, &srcRange, &table, &dstRange, &brightness, &contrast, &saturation);
-	if(r<0) break;
+        r= sws_getColorspaceDetails(vf->priv->ctx, &inv_table, &srcRange, &table, &dstRange, &brightness, &contrast, &saturation);
+        if(r<0) break;
 
-	eq = data;
-	if (!strcmp(eq->item,"brightness")) {
-		eq->value =  ((brightness*100) + (1<<15))>>16;
-	}
-	else if (!strcmp(eq->item,"contrast")) {
-		eq->value = (((contrast  *100) + (1<<15))>>16) - 100;
-	}
-	else if (!strcmp(eq->item,"saturation")) {
-		eq->value = (((saturation*100) + (1<<15))>>16) - 100;
-	}
-	else
-		break;
-	return CONTROL_TRUE;
+        eq = data;
+        if (!strcmp(eq->item,"brightness")) {
+                eq->value =  ((brightness*100) + (1<<15))>>16;
+        }
+        else if (!strcmp(eq->item,"contrast")) {
+                eq->value = (((contrast  *100) + (1<<15))>>16) - 100;
+        }
+        else if (!strcmp(eq->item,"saturation")) {
+                eq->value = (((saturation*100) + (1<<15))>>16) - 100;
+        }
+        else
+                break;
+        return CONTROL_TRUE;
     case VFCTRL_SET_EQUALIZER:
-	r= sws_getColorspaceDetails(vf->priv->ctx, &inv_table, &srcRange, &table, &dstRange, &brightness, &contrast, &saturation);
-	if(r<0) break;
+        r= sws_getColorspaceDetails(vf->priv->ctx, &inv_table, &srcRange, &table, &dstRange, &brightness, &contrast, &saturation);
+        if(r<0) break;
 //printf("set %f %f %f\n", brightness/(float)(1<<16), contrast/(float)(1<<16), saturation/(float)(1<<16));
-	eq = data;
+        eq = data;
 
-	if (!strcmp(eq->item,"brightness")) {
-		brightness = (( eq->value     <<16) + 50)/100;
-	}
-	else if (!strcmp(eq->item,"contrast")) {
-		contrast   = (((eq->value+100)<<16) + 50)/100;
-	}
-	else if (!strcmp(eq->item,"saturation")) {
-		saturation = (((eq->value+100)<<16) + 50)/100;
-	}
-	else
-		break;
+        if (!strcmp(eq->item,"brightness")) {
+                brightness = (( eq->value     <<16) + 50)/100;
+        }
+        else if (!strcmp(eq->item,"contrast")) {
+                contrast   = (((eq->value+100)<<16) + 50)/100;
+        }
+        else if (!strcmp(eq->item,"saturation")) {
+                saturation = (((eq->value+100)<<16) + 50)/100;
+        }
+        else
+                break;
 
-	r= sws_setColorspaceDetails(vf->priv->ctx, inv_table, srcRange, table, dstRange, brightness, contrast, saturation);
-	if(r<0) break;
-	if(vf->priv->ctx2){
+        r= sws_setColorspaceDetails(vf->priv->ctx, inv_table, srcRange, table, dstRange, brightness, contrast, saturation);
+        if(r<0) break;
+        if(vf->priv->ctx2){
             r= sws_setColorspaceDetails(vf->priv->ctx2, inv_table, srcRange, table, dstRange, brightness, contrast, saturation);
             if(r<0) break;
         }
 
-	return CONTROL_TRUE;
+        return CONTROL_TRUE;
     default:
-	break;
+        break;
     }
 
     return vf_next_control(vf,request,data);
@@ -506,17 +506,17 @@
 
 static int query_format(struct vf_instance *vf, unsigned int fmt){
     if (!IMGFMT_IS_HWACCEL(fmt) && imgfmt2pixfmt(fmt) != PIX_FMT_NONE) {
-	unsigned int best=find_best_out(vf, fmt);
-	int flags;
-	if(!best) return 0;	 // no matching out-fmt
-	flags=vf_next_query_format(vf,best);
-	if(!(flags&(VFCAP_CSP_SUPPORTED|VFCAP_CSP_SUPPORTED_BY_HW))) return 0; // huh?
-	if(fmt!=best) flags&=~VFCAP_CSP_SUPPORTED_BY_HW;
-	// do not allow scaling, if we are before the PP fliter!
-	if(!(flags&VFCAP_POSTPROC)) flags|=VFCAP_SWSCALE;
-	return flags;
+        unsigned int best=find_best_out(vf, fmt);
+        int flags;
+        if(!best) return 0;         // no matching out-fmt
+        flags=vf_next_query_format(vf,best);
+        if(!(flags&(VFCAP_CSP_SUPPORTED|VFCAP_CSP_SUPPORTED_BY_HW))) return 0; // huh?
+        if(fmt!=best) flags&=~VFCAP_CSP_SUPPORTED_BY_HW;
+        // do not allow scaling, if we are before the PP fliter!
+        if(!(flags&VFCAP_POSTPROC)) flags|=VFCAP_SWSCALE;
+        return flags;
     }
-    return 0;	// nomatching in-fmt
+    return 0;        // nomatching in-fmt
 }
 
 static void uninit(struct vf_instance *vf){
@@ -557,67 +557,67 @@
 int get_sws_cpuflags(void){
     return
           (gCpuCaps.hasMMX   ? SWS_CPU_CAPS_MMX   : 0)
-	| (gCpuCaps.hasMMX2  ? SWS_CPU_CAPS_MMX2  : 0)
-	| (gCpuCaps.has3DNow ? SWS_CPU_CAPS_3DNOW : 0)
+        | (gCpuCaps.hasMMX2  ? SWS_CPU_CAPS_MMX2  : 0)
+        | (gCpuCaps.has3DNow ? SWS_CPU_CAPS_3DNOW : 0)
         | (gCpuCaps.hasAltiVec ? SWS_CPU_CAPS_ALTIVEC : 0);
 }
 
 void sws_getFlagsAndFilterFromCmdLine(int *flags, SwsFilter **srcFilterParam, SwsFilter **dstFilterParam)
 {
-	static int firstTime=1;
-	*flags=0;
+        static int firstTime=1;
+        *flags=0;
 
 #if ARCH_X86
-	if(gCpuCaps.hasMMX)
-		__asm__ volatile("emms\n\t"::: "memory"); //FIXME this should not be required but it IS (even for non-MMX versions)
+        if(gCpuCaps.hasMMX)
+                __asm__ volatile("emms\n\t"::: "memory"); //FIXME this should not be required but it IS (even for non-MMX versions)
 #endif
-	if(firstTime)
-	{
-		firstTime=0;
-		*flags= SWS_PRINT_INFO;
-	}
-	else if( mp_msg_test(MSGT_VFILTER,MSGL_DBG2) ) *flags= SWS_PRINT_INFO;
+        if(firstTime)
+        {
+                firstTime=0;
+                *flags= SWS_PRINT_INFO;
+        }
+        else if( mp_msg_test(MSGT_VFILTER,MSGL_DBG2) ) *flags= SWS_PRINT_INFO;
 
-	if(src_filter) sws_freeFilter(src_filter);
+        if(src_filter) sws_freeFilter(src_filter);
 
-	src_filter= sws_getDefaultFilter(
-		sws_lum_gblur, sws_chr_gblur,
-		sws_lum_sharpen, sws_chr_sharpen,
-		sws_chr_hshift, sws_chr_vshift, verbose>1);
+        src_filter= sws_getDefaultFilter(
+                sws_lum_gblur, sws_chr_gblur,
+                sws_lum_sharpen, sws_chr_sharpen,
+                sws_chr_hshift, sws_chr_vshift, verbose>1);
 
-	switch(sws_flags)
-	{
-		case 0: *flags|= SWS_FAST_BILINEAR; break;
-		case 1: *flags|= SWS_BILINEAR; break;
-		case 2: *flags|= SWS_BICUBIC; break;
-		case 3: *flags|= SWS_X; break;
-		case 4: *flags|= SWS_POINT; break;
-		case 5: *flags|= SWS_AREA; break;
-		case 6: *flags|= SWS_BICUBLIN; break;
-		case 7: *flags|= SWS_GAUSS; break;
-		case 8: *flags|= SWS_SINC; break;
-		case 9: *flags|= SWS_LANCZOS; break;
-		case 10:*flags|= SWS_SPLINE; break;
-		default:*flags|= SWS_BILINEAR; break;
-	}
+        switch(sws_flags)
+        {
+                case 0: *flags|= SWS_FAST_BILINEAR; break;
+                case 1: *flags|= SWS_BILINEAR; break;
+                case 2: *flags|= SWS_BICUBIC; break;
+                case 3: *flags|= SWS_X; break;
+                case 4: *flags|= SWS_POINT; break;
+                case 5: *flags|= SWS_AREA; break;
+                case 6: *flags|= SWS_BICUBLIN; break;
+                case 7: *flags|= SWS_GAUSS; break;
+                case 8: *flags|= SWS_SINC; break;
+                case 9: *flags|= SWS_LANCZOS; break;
+                case 10:*flags|= SWS_SPLINE; break;
+                default:*flags|= SWS_BILINEAR; break;
+        }
 
-	*srcFilterParam= src_filter;
-	*dstFilterParam= NULL;
+        *srcFilterParam= src_filter;
+        *dstFilterParam= NULL;
 }
 
 // will use sws_flags & src_filter (from cmd line)
 struct SwsContext *sws_getContextFromCmdLine(int srcW, int srcH, int srcFormat, int dstW, int dstH, int dstFormat)
 {
-	int flags;
-	SwsFilter *dstFilterParam, *srcFilterParam;
-	enum PixelFormat dfmt, sfmt;
+        int flags;
+        SwsFilter *dstFilterParam, *srcFilterParam;
+        enum PixelFormat dfmt, sfmt;
 
-	dfmt = imgfmt2pixfmt(dstFormat);
-	sfmt = imgfmt2pixfmt(srcFormat);
-	if (srcFormat == IMGFMT_RGB8 || srcFormat == IMGFMT_BGR8) sfmt = PIX_FMT_PAL8;
-	sws_getFlagsAndFilterFromCmdLine(&flags, &srcFilterParam, &dstFilterParam);
+        dfmt = imgfmt2pixfmt(dstFormat);
+        sfmt = imgfmt2pixfmt(srcFormat);
+        if (srcFormat == IMGFMT_RGB8 || srcFormat == IMGFMT_BGR8) sfmt = PIX_FMT_PAL8;
+        sws_getFlagsAndFilterFromCmdLine(&flags, &srcFilterParam, &dstFilterParam);
 
-	return sws_getContext(srcW, srcH, sfmt, dstW, dstH, dfmt, flags | get_sws_cpuflags(), srcFilterParam, dstFilterParam, NULL);
+        return sws_getContext(srcW, srcH, sfmt, dstW, dstH, dfmt, flags | get_sws_cpuflags(), srcFilterParam, dstFilterParam, NULL);
 }
 
 /// An example of presets usage