Home | History | Annotate | Download | only in include
      1 /*
      2  * Copyright@ Samsung Electronics Co. LTD
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15 */
     16 
     17 #ifndef _EXYNOS_FORMAT_H_
     18 #define _EXYNOS_FORMAT_H_
     19 
     20 #ifdef __cplusplus
     21 extern "C" {
     22 #endif
     23 
     24 enum {
     25     HAL_PIXEL_FORMAT_YCbCr_422_P                = 0x100,
     26     HAL_PIXEL_FORMAT_YCbCr_420_P                = 0x101,
     27     HAL_PIXEL_FORMAT_YCbCr_420_I                = 0x102,
     28     HAL_PIXEL_FORMAT_CbYCrY_422_I               = 0x103,
     29     HAL_PIXEL_FORMAT_CbYCrY_420_I               = 0x104,
     30     HAL_PIXEL_FORMAT_YCbCr_420_SP               = 0x105,
     31     HAL_PIXEL_FORMAT_YCrCb_422_SP               = 0x106,
     32     HAL_PIXEL_FORMAT_YCbCr_420_SP_TILED         = 0x107,
     33     HAL_PIXEL_FORMAT_CUSTOM_ARGB_8888           = 0x108,
     34     // support custom format for zero copy
     35     HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP        = 0x110,
     36     HAL_PIXEL_FORMAT_CUSTOM_YCrCb_420_SP        = 0x111,
     37     HAL_PIXEL_FORMAT_CUSTOM_YCbCr_420_SP_TILED  = 0x112,
     38     HAL_PIXEL_FORMAT_CUSTOM_YCbCr_422_SP        = 0x113,
     39     HAL_PIXEL_FORMAT_CUSTOM_YCrCb_422_SP        = 0x114,
     40     HAL_PIXEL_FORMAT_CUSTOM_YCbCr_422_I         = 0x115,
     41     HAL_PIXEL_FORMAT_CUSTOM_YCrCb_422_I         = 0x116,
     42     HAL_PIXEL_FORMAT_CUSTOM_CbYCrY_422_I        = 0x117,
     43     HAL_PIXEL_FORMAT_CUSTOM_CrYCbY_422_I        = 0x118,
     44     HAL_PIXEL_FORMAT_CUSTOM_CbYCr_422_I         = 0x11B,
     45 
     46     HAL_PIXEL_FORMAT_EXYNOS_YV12                = 0x11C,
     47     HAL_PIXEL_FORMAT_EXYNOS_YCrCb_420_SP        = 0x11D,
     48     HAL_PIXEL_FORMAT_CUSTOM_MAX
     49 };
     50 
     51 // Gamut (colorspace range)
     52 enum {
     53     HAL_PIXEL_GAMUT_DEFAULT = 0,
     54     // Values range 0-255
     55     HAL_PIXEL_GAMUT_WIDE_8,
     56     // Values range 16-235
     57     HAL_PIXEL_GAMUT_NARROW_8
     58 };
     59 
     60 // Chromaticities (colorspace parameters)
     61 enum {
     62     HAL_PIXEL_CHROMA_DEFAULT = 0,
     63     // BT.601 "Standard Definition" color space
     64     HAL_PIXEL_CHROMA_BT601_8,
     65     // BT.709 "High Definition" color space
     66     HAL_PIXEL_CHROMA_BT709_8
     67 };
     68 
     69 struct ADDRS {
     70     unsigned int addr_y;
     71     unsigned int addr_cbcr;
     72     unsigned int buf_idx;
     73     unsigned int reserved;
     74 };
     75 
     76 /* 12  Y/CbCr 4:2:0 64x32 macroblocks */
     77 #define V4L2_PIX_FMT_NV12T    v4l2_fourcc('T', 'V', '1', '2')
     78 
     79 #define ALIGN(x, a)       (((x) + (a) - 1) & ~((a) - 1))
     80 #define ALIGN_TO_32B(x)   ((((x) + (1 <<  5) - 1) >>  5) <<  5)
     81 #define ALIGN_TO_128B(x)  ((((x) + (1 <<  7) - 1) >>  7) <<  7)
     82 #define ALIGN_TO_8KB(x)   ((((x) + (1 << 13) - 1) >> 13) << 13)
     83 
     84 #define GET_32BPP_FRAME_SIZE(w, h)  (((w) * (h)) << 2)
     85 #define GET_24BPP_FRAME_SIZE(w, h)  (((w) * (h)) * 3)
     86 #define GET_16BPP_FRAME_SIZE(w, h)  (((w) * (h)) << 1)
     87 
     88 /*
     89  * Convert hal_pixel_format to v4l2_pixel_format.
     90  *
     91  * @param hal_pixel_format
     92  *   hal_pixel_format[in]
     93  *
     94  * @return
     95  *   v4l2_pixel_format
     96  */
     97 int HAL_PIXEL_FORMAT_2_V4L2_PIX(
     98     int hal_pixel_format);
     99 
    100 /*
    101  * Convert v4l2_pixel_format to hal_pixel_format.
    102  *
    103  * @param v4l2_pixel_format
    104  *   v4l2_pixel_format[in]
    105  *
    106  * @return
    107  *   hal_pixel_format
    108  */
    109 int V4L2_PIX_2_HAL_PIXEL_FORMAT(
    110     int v4l2_pixel_format);
    111 
    112 /*
    113  * Get frame_size of hal_pixel_format.
    114  *
    115  * @param hal_pixel_format
    116  *   hal_pixel_format[in]
    117  *
    118  * @param width
    119  *   width[in]
    120  *
    121  * @param height
    122  *   height[in]
    123  *
    124  * @return
    125  *   frame_size
    126  */
    127 unsigned int FRAME_SIZE(
    128     int hal_pixel_format,
    129     int width,
    130     int height);
    131 
    132 int PLANAR_FRAME_SIZE(
    133     int hal_pixel_format,
    134     int width,
    135     int height,
    136     unsigned int *luma_size,
    137     unsigned int *chroma_size);
    138 
    139 int NUM_PLANES(int hal_pixel_format);
    140 
    141 
    142 /*
    143  * Get bpp and plane of v4l2_pixel_format.
    144  *
    145  * @param v4l2_pixel_format
    146  *   v4l2_pixel_format[in]
    147  *
    148  * @param bpp
    149  *   address of bpp[out]
    150  *
    151  * @param planes
    152  *   address of planes[out]
    153  *
    154  * @return
    155  *   error code
    156  */
    157 int V4L2_PIX_2_YUV_INFO(
    158     unsigned int  v4l2_pixel_format,
    159     unsigned int *bpp,
    160     unsigned int *planes);
    161 
    162 /*
    163  * Get bpp of v4l2_pixel_format.
    164  *
    165  * @param v4l2_pixel_format
    166  *   v4l2_pixel_format[in]
    167  *
    168  * @return
    169  *   bpp
    170  */
    171 unsigned int get_yuv_bpp(
    172     unsigned int v4l2_pixel_format);
    173 
    174 /*
    175  * Get plane of v4l2_pixel_format.
    176  *
    177  * @param v4l2_pixel_format
    178  *   v4l2_pixel_format[in]
    179  *
    180  * @return
    181  *   num of plane
    182  */
    183 unsigned int get_yuv_planes(
    184     unsigned int v4l2_pixel_format);
    185 
    186 #ifdef __cplusplus
    187 }
    188 #endif
    189 
    190 #endif
    191