int nv12(unsigned char * src, unsigned char * dest, int srcW, int srcH, int x0, int y0, int x1, int y1)
{
int dstw =0;
int dsth =0;
int i = 0;
int j = 0;
int k = 0;
int srcwh = 0;
int dstwh = 0;
dstw = x1 - x0 +1;
dsth = y1 - y0 +1;
#if 0
for(i = 0; i < dsth; i ++)
{
for(j = 0; j < dstw; j++)
{
dest[i *dstw +j] = src[ (y0+ i) * srcW + x0 +j ];
}
}
for(i = 0; i < dsth/2; i ++)
{
for(j = 0; j < dstw; j+=2)
{
dest[(dsth + i) * dstw + j ] = src[(srcH + i + y0 / 2 )* srcW + x0 + j];
dest[(dsth + i) * dstw + j + 1] = src[(srcH + i + y0 / 2 )* srcW + x0 + j + 1];
}
}
#else
unsigned char * srcUV = src + srcW * srcH;
unsigned char * destUV = dest + dstw * dsth;
for(i = y0; i <= y1; i ++)
{
for(j = x0; j <= x1; j ++)
{
dest[(i - y0) * dstw + (j - x0)] = src[i * srcW + j];
destUV[((i - y0) / 2 * (dstw / 2) + (j - x0) / 2) * 2 + 0] = srcUV[((i / 2) * (srcW / 2) + (j / 2)) * 2 + 0];
destUV[((i - y0) / 2 * (dstw / 2) + (j - x0) / 2) * 2 + 1] = srcUV[((i / 2) * (srcW / 2) + (j / 2)) * 2 + 1];
}
}
#endif
return 0;
}