author: CarlsonLee(carlsonlee.freec@hotmail.com), 本代码是freecamera的一部分,freecamera源代码存在:http://gitorious.org/freecamera
///scale
typedef struct _VSImage
{
guchar *pixels;
int width;
int height;
int stride;
}VSImage;
static void vs_scanline_resample_nearest_Y (guchar * dest, guchar * src, int src_width,
int n, int *accumulator, int increment)
{
int acc = *accumulator;
int i;
int j;
int x;
for (i = 0; i < n; i++) {
j = acc >> 16;
x = acc & 0xffff;
dest[i] = (x < 32768 || j + 1 >= src_width) ? src[j] : src[j + 1];
acc += increment;
}
*accumulator = acc;
}
static void vs_scanline_resample_linear_Y (guchar * dest, guchar * src, int src_width,
int n, int *accumulator, int increment)
{
int acc = *accumulator;
int i;
int j;
int x;
for (i = 0; i < n; i++)
{
j = acc >> 16;
x = acc & 0xffff;
if (j + 1 < src_width)
dest[i] = (src[j] * (65536 - x) + src[j + 1] * x) >> 16;
else
dest[i] = src[j];
acc += increment;
}
*accumulator = acc;
}
static void orc_merge_linear_u8 (guchar * d1, const guchar * s1, const guchar * s2,
int p1, int p2, int n)
{
int i;
gchar var0;
gchar *ptr0;
gchar var4;
const gchar *ptr4;
gchar var5;
const gchar *ptr5;
const gshort var16 = 128;
const gshort var17 = 8;
const int var24 = p1;
const int var25 = p2;
gshort var32;
g