/*
*
* Copyright 2012 Samsung Electronics S.LSI Co. LTD
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#define LOG_TAG "libcsc_helper"
#include <cutils/log.h>
#include <system/graphics.h>
#include "Exynos_OMX_Def.h"
#include "csc.h"
#include "exynos_format.h"
#include "fimg2d.h"
OMX_COLOR_FORMATTYPE hal_2_omx_pixel_format(
unsigned int hal_format)
{
OMX_COLOR_FORMATTYPE omx_format;
switch (hal_format) {
case HAL_PIXEL_FORMAT_YCbCr_422_I:
omx_format = OMX_COLOR_FormatYCbYCr;
break;
case HAL_PIXEL_FORMAT_YCbCr_420_P:
omx_format = OMX_COLOR_FormatYUV420Planar;
break;
case HAL_PIXEL_FORMAT_YCbCr_420_SP:
omx_format = OMX_COLOR_FormatYUV420SemiPlanar;
break;
case HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP_TILED:
omx_format = OMX_SEC_COLOR_FormatNV12TPhysicalAddress;
break;
case HAL_PIXEL_FORMAT_YCbCr_420_SP_TILED:
omx_format = OMX_SEC_COLOR_FormatNV12Tiled;
break;
case HAL_PIXEL_FORMAT_BGRA_8888:
case HAL_PIXEL_FORMAT_CUSTOM_ARGB_8888:
omx_format = OMX_COLOR_Format32bitARGB8888;
break;
default:
omx_format = OMX_COLOR_FormatYUV420Planar;
break;
}
return omx_format;
}
unsigned int omx_2_hal_pixel_format(
OMX_COLOR_FORMATTYPE omx_format)
{
unsigned int hal_format;
switch (omx_format) {
case OMX_COLOR_FormatYCbYCr:
hal_format = HAL_PIXEL_FORMAT_YCbCr_422_I;
break;
case OMX_COLOR_FormatYUV420Planar:
hal_format = HAL_PIXEL_FORMAT_YCbCr_420_P;
break;
case OMX_COLOR_FormatYUV420SemiPlanar:
hal_format = HAL_PIXEL_FORMAT_YCbCr_420_SP;
break;
case OMX_SEC_COLOR_FormatNV12TPhysicalAddress:
hal_format = HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP_TILED;
break;
case OMX_SEC_COLOR_FormatNV12Tiled:
hal_format = HAL_PIXEL_FORMAT_YCbCr_420_SP_TILED;
break;
case OMX_COLOR_Format32bitARGB8888:
hal_format = HAL_PIXEL_FORMAT_CUSTOM_ARGB_8888;
break;
default:
hal_format = HAL_PIXEL_FORMAT_YCbCr_420_P;
break;
}
return hal_format;
}
unsigned int hal_2_g2d_color_format(unsigned int hal_format)
{
switch (hal_format) {
case HAL_PIXEL_FORMAT_RGBA_8888:
case HAL_PIXEL_FORMAT_BGRA_8888:
case HAL_PIXEL_FORMAT_CUSTOM_ARGB_8888:
return CF_ARGB_8888;
case HAL_PIXEL_FORMAT_RGBX_8888:
return CF_XRGB_8888;
case HAL_PIXEL_FORMAT_RGB_888:
return CF_RGB_888;
case HAL_PIXEL_FORMAT_RGB_565:
return CF_RGB_565;
case HAL_PIXEL_FORMAT_RGBA_5551:
return CF_ARGB_1555;
case HAL_PIXEL_FORMAT_RGBA_4444:
return CF_ARGB_4444;
case HAL_PIXEL_FORMAT_YCbCr_422_I:
return CF_YCBCR_422;
case HAL_PIXEL_FORMAT_YCbCr_420_SP:
return CF_YCBCR_420;
default:
return SRC_DST_FORMAT_END;
}
}
unsigned int hal_2_g2d_pixel_order(unsigned int hal_format)
{
switch (hal_format) {
case HAL_PIXEL_FORMAT_BGRA_8888:
case HAL_PIXEL_FORMAT_CUSTOM_ARGB_8888:
return AX_RGB;
case HAL_PIXEL_FORMAT_RGBA_8888:
case HAL_PIXEL_FORMAT_RGBX_8888:
case HAL_PIXEL_FORMAT_RGB_888:
case HAL_PIXEL_FORMAT_RGB_565:
case HAL_PIXEL_FORMAT_RGBA_5551:
case HAL_PIXEL_FORMAT_RGBA_4444:
return RGB_AX;
case HAL_PIXEL_FORMAT_YCbCr_422_I:
return P1_Y1CBY0CR;
case HAL_PIXEL_FORMAT_YCbCr_420_SP:
return P2_CRCB;
default:
return ARGB_ORDER_END;
}
}
size_t hal_2_g2d_bpp(unsigned int hal_format)
{
switch (hal_format) {
case HAL_PIXEL_FORMAT_BGRA_8888:
case HAL_PIXEL_FORMAT_CUSTOM_ARGB_8888:
case HAL_PIXEL_FORMAT_RGBA_8888:
case HAL_PIXEL_FORMAT_RGBX_8888:
return 32;
case HAL_PIXEL_FORMAT_RGB_888:
return 24;
case HAL_PIXEL_FORMAT_RGB_565:
case HAL_PIXEL_FORMAT_RGBA_5551:
case HAL_PIXEL_FORMAT_RGBA_4444:
return 16;
case HAL_PIXEL_FORMAT_YCbCr_422_I:
case HAL_PIXEL_FORMAT_YCbCr_420_SP:
return 8;
default:
return 0;
}
}