blob: 23950faab0e4344267386033962c498ac8ad5b30 [file]
//==========================================================================
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
// KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
// PURPOSE.
//
// Copyright (c) 1999 - 2001 On2 Technologies Inc. All Rights Reserved.
//
//--------------------------------------------------------------------------
#include <stdio.h>
#include "vpxblit.h"
void bcy00_c(unsigned char *_ptrScreen, int thisPitch, VPX_BLIT_CONFIG *src)
{
unsigned char *ptrScrn = (unsigned char *)_ptrScreen;
unsigned char *YBuffer = (unsigned char *)src->YBuffer;
unsigned char *UBuffer = (unsigned char *)src->UBuffer;
unsigned char *VBuffer = (unsigned char *)src->VBuffer;
unsigned int yTemp;
int i, j;
for(i = 0; i < src->YHeight; i += 1)
{
int x;
for(j = 0, x = 0; j < src->YWidth; j += 4, x += 2)
{
#if CONFIG_BIG_ENDIAN
/* get 2 y's */
yTemp = (unsigned int) (YBuffer[j+0] << 24 | ((YBuffer[j+1]) << 8));
/* get 1 uv's */
yTemp |= (unsigned int)(UBuffer[x+0] << 16);
yTemp |= (unsigned int)(VBuffer[x+0]);
((unsigned int *) ptrScrn)[x] = yTemp;
/* get 2 y's */
yTemp = (unsigned int) (YBuffer[j+2] << 24 | ((YBuffer[j+3]) << 8));
/* get 1 uv's */
yTemp |= (unsigned int)(UBuffer[x+1] << 16);
yTemp |= (unsigned int)(VBuffer[x+1]);
((unsigned int *) ptrScrn)[x+1] = yTemp;
#else
/* get 2 y's */
yTemp = (unsigned int) (YBuffer[j+0] | ((YBuffer[j+1]) << 16));
/* get 1 uv's */
yTemp |= (unsigned int)(UBuffer[x+0] << 8);
yTemp |= (unsigned int)(VBuffer[x+0] << 24);
((unsigned int *) ptrScrn)[x] = yTemp;
/* get 2 y's */
yTemp = (unsigned int) (YBuffer[j+2] | ((YBuffer[j+3]) << 16));
/* get 1 uv's */
yTemp |= (unsigned int)(UBuffer[x+1] << 8);
yTemp |= (unsigned int)(VBuffer[x+1] << 24);
((unsigned int *) ptrScrn)[x+1] = yTemp;
#endif
} /* inner for */
ptrScrn += thisPitch;
YBuffer -= src->YStride;
/* see mmx asm code on how to remove this branch */
if(i & 1)
{
UBuffer -= src->UVStride;
VBuffer -= src->UVStride;
}
} /* outer for */
}