sdk-hwV1.3/external/eyesee-mpp/middleware/sun8iw21/media/utils/BITMAP_S.c

109 lines
2.9 KiB
C
Executable File

//#define LOG_NDEBUG 0
#define LOG_TAG "BITMAP_S"
#include <utils/plat_log.h>
#include "plat_errno.h"
#include "plat_type.h"
#include <BITMAP_S.h>
#define SWAP(px, py) \
do { \
unsigned int tmp; \
tmp = *(px); \
*(px) = *(py); \
*(py) = tmp; \
} while (0)
int BITMAP_S_GetdataSize(PARAM_IN const BITMAP_S *pBitmap)
{
int nSize = 0;
if(NULL == pBitmap)
{
aloge("fatal error! pBitmap == NULL, return!");
return 0;
}
switch(pBitmap->mPixelFormat)
{
case MM_PIXEL_FORMAT_RGB_1555:
case MM_PIXEL_FORMAT_RGB_4444:
nSize = pBitmap->mWidth * pBitmap->mHeight * 2;
break;
case MM_PIXEL_FORMAT_RGB_8888:
nSize = pBitmap->mWidth * pBitmap->mHeight * 4;
break;
default:
aloge("fatal error! unknown pixel format[0x%x]", pBitmap->mPixelFormat);
break;
}
return nSize;
}
ERRORTYPE BITMAP_S_FlipData(PARAM_INOUT BITMAP_S *pBitmap, PARAM_IN BMP_FLIP_FLAG_E flip_dir)
{
ERRORTYPE ret = SUCCESS;
int width = pBitmap->mWidth;
int height = pBitmap->mHeight;
if (flip_dir < BMP_FLIP_NONE || flip_dir > BMP_FLIP_BOTH_FLIP)
{
aloge("fatal error! unknown flip direction[%d]!", flip_dir);
ret = FAILURE;
return ret;
}
switch (pBitmap->mPixelFormat)
{
case MM_PIXEL_FORMAT_RGB_1555:
{
unsigned short *data = pBitmap->mpData;
if (flip_dir & BMP_FLIP_HFLIP)
{
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width/2; j++)
SWAP(data+i*width+j, data+(i+1)*width-1-j);
}
}
if (flip_dir & BMP_FLIP_VFLIP)
{
for (int i = 0; i < width; i++)
{
for (int j = 0; j < height/2; j++)
SWAP(data+j*width+i, data+(height-j-1)*width+i);
}
}
break;
}
case MM_PIXEL_FORMAT_RGB_8888:
{
unsigned int *data = pBitmap->mpData;
if (flip_dir & BMP_FLIP_HFLIP)
{
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width/2; j++)
SWAP(data+i*width+j, data+(i+1)*width-1-j);
}
}
if (flip_dir & BMP_FLIP_VFLIP)
{
for (int i = 0; i < width; i++)
{
for (int j = 0; j < height/2; j++)
SWAP(data+j*width+i, data+(height-j-1)*width+i);
}
}
break;
}
default:
{
aloge("fatal error! unknown pixel format[0x%x]", pBitmap->mPixelFormat);
ret = FAILURE;
break;
}
}
return ret;
}