Exemplo n.º 1
0
void scale2x( uint8_t *srcPtr, uint32_t srcPitch, uint8_t *dstPtr, uint32_t dstPitch, int width, int height )
{
    uint16_t *dst0 = ( uint16_t * )dstPtr;
    uint16_t *dst1 = dst0 + ( dstPitch / 2 );

    uint16_t *src0 = ( uint16_t * )srcPtr;
    uint16_t *src1 = src0 + ( srcPitch / 2 );
    uint16_t *src2 = src1 + ( srcPitch / 2 );

    int count;

    internal_scale2x_16_def( dst0, dst1, src0, src0, src1, width );

    count = height;

    count -= 2;
    while ( count )
    {
        dst0 += dstPitch;
        dst1 += dstPitch;

        internal_scale2x_16_def( dst0, dst1, src0, src1, src2, width );

        src0 = src1;
        src1 = src2;
        src2 += srcPitch / 2;

        --count;
    }
    dst0 += dstPitch;
    dst1 += dstPitch;

    internal_scale2x_16_def( dst0, dst1, src0, src1, src1, width );
}
Exemplo n.º 2
0
void AdMame2x(u8 *srcPtr, u32 srcPitch, u8 *deltaPtr, u8 *dstPtr, u32 dstPitch, int width, int height)
{
	int count;
	u16 *dst0 = (u16 *)dstPtr;
	u16 *dst1 = dst0 + (dstPitch/2);
  	u16 *src0 = (u16 *)srcPtr;
	u16 *src1 = src0 + (srcPitch/2);
	u16 *src2 = src1 + (srcPitch/2);

#ifdef MMX
	if(GetMMX()) 
	{
		internal_scale2x_16_mmx(dst0, dst1, src0, src0, src1, width);
  
		count = height;
		count -= 2;
		while(count) 
		{
			dst0 += dstPitch;
			dst1 += dstPitch;
			internal_scale2x_16_mmx(dst0, dst1, src0, src1, src2, width);
			src0 = src1;
			src1 = src2;
			src2 += srcPitch/2;
			--count;
		}
		dst0 += dstPitch;
		dst1 += dstPitch;
		internal_scale2x_16_mmx(dst0, dst1, src0, src1, src1, width);
	} 
	else
#endif
	{
		internal_scale2x_16_def(dst0, dst1, src0, src0, src1, width);
  
		count = height;
	    count -= 2;
		while(count) 
		{
			dst0 += dstPitch;
			dst1 += dstPitch;
			internal_scale2x_16_def(dst0, dst1, src0, src1, src2, width);
			src0 = src1;
			src1 = src2;
			src2 += srcPitch/2;
			--count;
		}
		dst0 += dstPitch;
		dst1 += dstPitch;
		internal_scale2x_16_def(dst0, dst1, src0, src1, src1, width);
	}
}