Home | History | Annotate | Download | only in libcsc
      1 /*
      2  *
      3  * Copyright 2012 Samsung Electronics S.LSI Co. LTD
      4  *
      5  * Licensed under the Apache License, Version 2.0 (the "License");
      6  * you may not use this file except in compliance with the License.
      7  * You may obtain a copy of the License at
      8  *
      9  *      http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  * Unless required by applicable law or agreed to in writing, software
     12  * distributed under the License is distributed on an "AS IS" BASIS,
     13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  * See the License for the specific language governing permissions and
     15  * limitations under the License.
     16  */
     17 
     18 #define LOG_TAG "libcsc_helper"
     19 #include <cutils/log.h>
     20 
     21 #include <system/graphics.h>
     22 
     23 #include "Exynos_OMX_Def.h"
     24 
     25 #include "csc.h"
     26 #include "exynos_format.h"
     27 #include "fimg2d.h"
     28 
     29 OMX_COLOR_FORMATTYPE hal_2_omx_pixel_format(
     30     unsigned int hal_format)
     31 {
     32     OMX_COLOR_FORMATTYPE omx_format;
     33     switch (hal_format) {
     34     case HAL_PIXEL_FORMAT_YCbCr_422_I:
     35         omx_format = OMX_COLOR_FormatYCbYCr;
     36         break;
     37     case HAL_PIXEL_FORMAT_YCbCr_420_P:
     38         omx_format = OMX_COLOR_FormatYUV420Planar;
     39         break;
     40     case HAL_PIXEL_FORMAT_YCbCr_420_SP:
     41         omx_format = OMX_COLOR_FormatYUV420SemiPlanar;
     42         break;
     43     case HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP_TILED:
     44         omx_format = OMX_SEC_COLOR_FormatNV12TPhysicalAddress;
     45         break;
     46     case HAL_PIXEL_FORMAT_YCbCr_420_SP_TILED:
     47         omx_format = OMX_SEC_COLOR_FormatNV12Tiled;
     48         break;
     49     case HAL_PIXEL_FORMAT_BGRA_8888:
     50     case HAL_PIXEL_FORMAT_CUSTOM_ARGB_8888:
     51         omx_format = OMX_COLOR_Format32bitARGB8888;
     52         break;
     53     default:
     54         omx_format = OMX_COLOR_FormatYUV420Planar;
     55         break;
     56     }
     57     return omx_format;
     58 }
     59 
     60 unsigned int omx_2_hal_pixel_format(
     61     OMX_COLOR_FORMATTYPE omx_format)
     62 {
     63     unsigned int hal_format;
     64     switch (omx_format) {
     65     case OMX_COLOR_FormatYCbYCr:
     66         hal_format = HAL_PIXEL_FORMAT_YCbCr_422_I;
     67         break;
     68     case OMX_COLOR_FormatYUV420Planar:
     69         hal_format = HAL_PIXEL_FORMAT_YCbCr_420_P;
     70         break;
     71     case OMX_COLOR_FormatYUV420SemiPlanar:
     72         hal_format = HAL_PIXEL_FORMAT_YCbCr_420_SP;
     73         break;
     74     case OMX_SEC_COLOR_FormatNV12TPhysicalAddress:
     75         hal_format = HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP_TILED;
     76         break;
     77     case OMX_SEC_COLOR_FormatNV12Tiled:
     78         hal_format = HAL_PIXEL_FORMAT_YCbCr_420_SP_TILED;
     79         break;
     80     case OMX_COLOR_Format32bitARGB8888:
     81         hal_format = HAL_PIXEL_FORMAT_CUSTOM_ARGB_8888;
     82         break;
     83     default:
     84         hal_format = HAL_PIXEL_FORMAT_YCbCr_420_P;
     85         break;
     86     }
     87     return hal_format;
     88 }
     89 
     90 unsigned int hal_2_g2d_color_format(unsigned int hal_format)
     91 {
     92     switch (hal_format) {
     93     case HAL_PIXEL_FORMAT_RGBA_8888:
     94     case HAL_PIXEL_FORMAT_BGRA_8888:
     95     case HAL_PIXEL_FORMAT_CUSTOM_ARGB_8888:
     96         return CF_ARGB_8888;
     97 
     98     case HAL_PIXEL_FORMAT_RGBX_8888:
     99         return CF_XRGB_8888;
    100 
    101     case HAL_PIXEL_FORMAT_RGB_888:
    102         return CF_RGB_888;
    103 
    104     case HAL_PIXEL_FORMAT_RGB_565:
    105         return CF_RGB_565;
    106 
    107     case HAL_PIXEL_FORMAT_RGBA_5551:
    108         return CF_ARGB_1555;
    109 
    110     case HAL_PIXEL_FORMAT_RGBA_4444:
    111         return CF_ARGB_4444;
    112 
    113     case HAL_PIXEL_FORMAT_YCbCr_422_I:
    114         return CF_YCBCR_422;
    115 
    116     case HAL_PIXEL_FORMAT_YCbCr_420_SP:
    117         return CF_YCBCR_420;
    118 
    119     default:
    120         return SRC_DST_FORMAT_END;
    121     }
    122 }
    123 
    124 unsigned int hal_2_g2d_pixel_order(unsigned int hal_format)
    125 {
    126     switch (hal_format) {
    127     case HAL_PIXEL_FORMAT_BGRA_8888:
    128     case HAL_PIXEL_FORMAT_CUSTOM_ARGB_8888:
    129         return AX_RGB;
    130 
    131     case HAL_PIXEL_FORMAT_RGBA_8888:
    132     case HAL_PIXEL_FORMAT_RGBX_8888:
    133     case HAL_PIXEL_FORMAT_RGB_888:
    134     case HAL_PIXEL_FORMAT_RGB_565:
    135     case HAL_PIXEL_FORMAT_RGBA_5551:
    136     case HAL_PIXEL_FORMAT_RGBA_4444:
    137         return RGB_AX;
    138 
    139     case HAL_PIXEL_FORMAT_YCbCr_422_I:
    140         return P1_Y1CBY0CR;
    141 
    142     case HAL_PIXEL_FORMAT_YCbCr_420_SP:
    143         return P2_CRCB;
    144 
    145     default:
    146         return ARGB_ORDER_END;
    147     }
    148 }
    149 
    150 size_t hal_2_g2d_bpp(unsigned int hal_format)
    151 {
    152     switch (hal_format) {
    153         case HAL_PIXEL_FORMAT_BGRA_8888:
    154         case HAL_PIXEL_FORMAT_CUSTOM_ARGB_8888:
    155         case HAL_PIXEL_FORMAT_RGBA_8888:
    156         case HAL_PIXEL_FORMAT_RGBX_8888:
    157             return 32;
    158 
    159         case HAL_PIXEL_FORMAT_RGB_888:
    160             return 24;
    161 
    162         case HAL_PIXEL_FORMAT_RGB_565:
    163         case HAL_PIXEL_FORMAT_RGBA_5551:
    164         case HAL_PIXEL_FORMAT_RGBA_4444:
    165             return 16;
    166 
    167         case HAL_PIXEL_FORMAT_YCbCr_422_I:
    168         case HAL_PIXEL_FORMAT_YCbCr_420_SP:
    169             return 8;
    170 
    171         default:
    172             return 0;
    173         }
    174 }
    175