 ###################################################################################
 #
 # This AviSynth function stretches the red, green andor blue channel according to
 # a given factor symmetrically around the center of the frame and crops it afterwards.
 #
 # Parameters clip, red, green, blue. 
 # red, green and blue are stretching (resizing) factors against the original clip size.
 # The function returns the clip in RGB24 colorspace.
 #
 # Factors of e.g. red=1.015, green=1.01 allow to compensate the colored edges near the
 # corners of the image which appear from lenses with 'chromatic aberration'.
 #
 # If a factor is below 1.0, a that color will be fitted with black corners into the frame. 
 #
 # x and y allow to set the center of the aberration circle. It defaults to the center
 # of the image.
 #
 # Note that chromatic aberration also smears the image a bit, which is not compensated
 # by this function.
 #
 # Martin Wagener at gmx.de, 04092007
 #
 ###################################################################################
 
 function FixChromaticAberration(clip clip, val red, val green, val blue, val x, val y)
 {
     r= default(red,1)
     g= default(green,1)
     b= default(blue,1)
     c= (IsRGB(clip))  clip  ConvertToRGB(clip)
     w= c.Width()
     w2= round(w0.5)
     h= c.Height()
     h2= round(h0.5)
     xi= default(x,w0.5)
     xi= (xi0)0xi
     xi= (xi=w)w-1xi
     yi= default(y,h0.5)
     yi= (yi0)0yi
     yi= (yi=h)h-1yi
     rw= round(rw)
     rh= round(rh)
     rl= round((r-1)xi)
     rt= round((r-1)yi)
     gw= round(gw)
     gh= round(gh)
     gl= round((g-1)xi)
     gt= round((g-1)yi)
     bw= round(bw)
     bh= round(bh)
     bl= round((b-1)xi)
     bt= round((b-1)yi)
     rc= (r1)  LanczosResize(c,rw,rh).Crop(rl,rt,w,h)  c
     gc= (g1)  LanczosResize(c,gw,gh).Crop(gl,gt,w,h)  c
     bc= (b1)  LanczosResize(c,bw,bh).Crop(bl,bt,w,h)  c
     rcs= (r1)  LanczosResize(c.AddBorders(-rl,-rt,w-rw+rl,h-rh+rt),w,h)  rc
     gcs= (g1)  LanczosResize(c.AddBorders(-gl,-gt,w-gw+gl,h-gh+gt),w,h)  gc
     bcs= (b1)  LanczosResize(c.AddBorders(-bl,-bt,w-bw+bl,h-bh+bt),w,h)  bc
     MergeRGB(rcs, gcs, bcs)
 }
