Home | History | Annotate | Download | only in linux
      1 /*
      2  * Video for Linux Two header file for Exynos
      3  *
      4  * Copyright (c) 2012 Samsung Electronics Co., Ltd.
      5  *		http://www.samsung.com
      6  *
      7  * This header file contains several v4l2 APIs to be proposed to v4l2
      8  * community and until being accepted, will be used restrictly for Exynos.
      9  *
     10  * This program is free software; you can redistribute it and/or modify
     11  * it under the terms of the GNU General Public License version 2 as
     12  * published by the Free Software Foundation.
     13  */
     14 
     15 #ifndef __LINUX_VIDEODEV2_EXYNOS_MEDIA_H
     16 #define __LINUX_VIDEODEV2_EXYNOS_MEDIA_H
     17 
     18 /*      Pixel format          FOURCC                     depth  Description  */
     19 
     20 /* two planes -- one Y, one Cr + Cb interleaved  */
     21 #define V4L2_PIX_FMT_YUV444_2P v4l2_fourcc('Y', 'U', '2', 'P') /* 24  Y/CbCr */
     22 #define V4L2_PIX_FMT_YVU444_2P v4l2_fourcc('Y', 'V', '2', 'P') /* 24  Y/CrCb */
     23 
     24 /* three planes -- one Y, one Cr, one Cb */
     25 #define V4L2_PIX_FMT_YUV444_3P v4l2_fourcc('Y', 'U', '3', 'P') /* 24  Y/Cb/Cr */
     26 
     27 /* two non contiguous planes - one Y, one Cr + Cb interleaved  */
     28 /* 21  Y/CrCb 4:2:0  */
     29 #define V4L2_PIX_FMT_NV21M    v4l2_fourcc('N', 'M', '2', '1')
     30 /* 12  Y/CbCr 4:2:0 16x16 macroblocks */
     31 #define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2')
     32 
     33 /* three non contiguous planes - Y, Cb, Cr */
     34 /* 12  YVU420 planar */
     35 #define V4L2_PIX_FMT_YVU420M  v4l2_fourcc('Y', 'V', 'U', 'M')
     36 
     37 /* compressed formats */
     38 #define V4L2_PIX_FMT_H264_MVC v4l2_fourcc('M', '2', '6', '4') /* H264 MVC */
     39 #define V4L2_PIX_FMT_FIMV     v4l2_fourcc('F', 'I', 'M', 'V') /* FIMV  */
     40 #define V4L2_PIX_FMT_FIMV1    v4l2_fourcc('F', 'I', 'M', '1') /* FIMV1 */
     41 #define V4L2_PIX_FMT_FIMV2    v4l2_fourcc('F', 'I', 'M', '2') /* FIMV2 */
     42 #define V4L2_PIX_FMT_FIMV3    v4l2_fourcc('F', 'I', 'M', '3') /* FIMV3 */
     43 #define V4L2_PIX_FMT_FIMV4    v4l2_fourcc('F', 'I', 'M', '4') /* FIMV4 */
     44 #define V4L2_PIX_FMT_VP8      v4l2_fourcc('V', 'P', '8', '0') /* VP8 */
     45 
     46 /* yuv444 of JFIF JPEG */
     47 #define V4L2_PIX_FMT_JPEG_444 v4l2_fourcc('J', 'P', 'G', '4')
     48 /* yuv422 of JFIF JPEG */
     49 #define V4L2_PIX_FMT_JPEG_422 v4l2_fourcc('J', 'P', 'G', '2')
     50 /* yuv420 of JFIF JPEG */
     51 #define V4L2_PIX_FMT_JPEG_420 v4l2_fourcc('J', 'P', 'G', '0')
     52 /* grey of JFIF JPEG */
     53 #define V4L2_PIX_FMT_JPEG_GRAY v4l2_fourcc('J', 'P', 'G', 'G')
     54 
     55 /*
     56  *	C O N T R O L S
     57  */
     58 /* CID base for Exynos controls (USER_CLASS) */
     59 #define V4L2_CID_EXYNOS_BASE		(V4L2_CTRL_CLASS_USER | 0x2000)
     60 
     61 /* for rgb alpha function */
     62 #define V4L2_CID_GLOBAL_ALPHA		(V4L2_CID_EXYNOS_BASE + 1)
     63 
     64 /* cacheable configuration */
     65 #define V4L2_CID_CACHEABLE		(V4L2_CID_EXYNOS_BASE + 10)
     66 
     67 /* jpeg captured size */
     68 #define V4L2_CID_CAM_JPEG_MEMSIZE	(V4L2_CID_EXYNOS_BASE + 20)
     69 #define V4L2_CID_CAM_JPEG_ENCODEDSIZE	(V4L2_CID_EXYNOS_BASE + 21)
     70 
     71 #define V4L2_CID_SET_SHAREABLE		(V4L2_CID_EXYNOS_BASE + 40)
     72 
     73 /* TV configuration */
     74 #define V4L2_CID_TV_LAYER_BLEND_ENABLE	(V4L2_CID_EXYNOS_BASE + 50)
     75 #define V4L2_CID_TV_LAYER_BLEND_ALPHA	(V4L2_CID_EXYNOS_BASE + 51)
     76 #define V4L2_CID_TV_PIXEL_BLEND_ENABLE	(V4L2_CID_EXYNOS_BASE + 52)
     77 #define V4L2_CID_TV_CHROMA_ENABLE	(V4L2_CID_EXYNOS_BASE + 53)
     78 #define V4L2_CID_TV_CHROMA_VALUE	(V4L2_CID_EXYNOS_BASE + 54)
     79 #define V4L2_CID_TV_HPD_STATUS		(V4L2_CID_EXYNOS_BASE + 55)
     80 #define V4L2_CID_TV_LAYER_PRIO		(V4L2_CID_EXYNOS_BASE + 56)
     81 #define V4L2_CID_TV_SET_DVI_MODE	(V4L2_CID_EXYNOS_BASE + 57)
     82 #define V4L2_CID_TV_GET_DVI_MODE	(V4L2_CID_EXYNOS_BASE + 58)
     83 #define V4L2_CID_TV_SET_ASPECT_RATIO	(V4L2_CID_EXYNOS_BASE + 59)
     84 #define V4L2_CID_TV_MAX_AUDIO_CHANNELS	(V4L2_CID_EXYNOS_BASE + 60)
     85 #define V4L2_CID_TV_ENABLE_HDMI_AUDIO	(V4L2_CID_EXYNOS_BASE + 61)
     86 #define V4L2_CID_TV_SET_NUM_CHANNELS	(V4L2_CID_EXYNOS_BASE + 62)
     87 #define V4L2_CID_TV_UPDATE		(V4L2_CID_EXYNOS_BASE + 63)
     88 #define V4L2_CID_TV_SET_COLOR_RANGE	(V4L2_CID_EXYNOS_BASE + 64)
     89 #define V4L2_CID_TV_HDCP_ENABLE		(V4L2_CID_EXYNOS_BASE + 65)
     90 
     91 /* for color space conversion equation selection */
     92 #define V4L2_CID_CSC_EQ_MODE		(V4L2_CID_EXYNOS_BASE + 100)
     93 #define V4L2_CID_CSC_EQ			(V4L2_CID_EXYNOS_BASE + 101)
     94 #define V4L2_CID_CSC_RANGE		(V4L2_CID_EXYNOS_BASE + 102)
     95 
     96 #define V4L2_CID_CONTENT_PROTECTION	(V4L2_CID_EXYNOS_BASE + 201)
     97 
     98 /* CID base for MFC controls (MPEG_CLASS) */
     99 #define V4L2_CID_MPEG_MFC_BASE		(V4L2_CTRL_CLASS_MPEG | 0x2000)
    100 
    101 #define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_AVAIL		\
    102 					(V4L2_CID_MPEG_MFC_BASE + 1)
    103 #define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRGMENT_ID	\
    104 					(V4L2_CID_MPEG_MFC_BASE + 2)
    105 #define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_INFO		\
    106 					(V4L2_CID_MPEG_MFC_BASE + 3)
    107 #define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_GRID_POS	\
    108 					(V4L2_CID_MPEG_MFC_BASE + 4)
    109 
    110 #define V4L2_CID_MPEG_MFC51_VIDEO_PACKED_PB		\
    111 					(V4L2_CID_MPEG_MFC_BASE + 5)
    112 #define V4L2_CID_MPEG_MFC51_VIDEO_FRAME_TAG		\
    113 					(V4L2_CID_MPEG_MFC_BASE + 6)
    114 #define V4L2_CID_MPEG_MFC51_VIDEO_CRC_ENABLE		\
    115 					(V4L2_CID_MPEG_MFC_BASE + 7)
    116 #define V4L2_CID_MPEG_MFC51_VIDEO_CRC_DATA_LUMA		\
    117 					(V4L2_CID_MPEG_MFC_BASE + 8)
    118 #define V4L2_CID_MPEG_MFC51_VIDEO_CRC_DATA_CHROMA	\
    119 					(V4L2_CID_MPEG_MFC_BASE + 9)
    120 #define V4L2_CID_MPEG_MFC51_VIDEO_CRC_DATA_LUMA_BOT	\
    121 					(V4L2_CID_MPEG_MFC_BASE + 10)
    122 #define V4L2_CID_MPEG_MFC51_VIDEO_CRC_DATA_CHROMA_BOT	\
    123 					(V4L2_CID_MPEG_MFC_BASE + 11)
    124 #define V4L2_CID_MPEG_MFC51_VIDEO_CRC_GENERATED		\
    125 					(V4L2_CID_MPEG_MFC_BASE + 12)
    126 #define V4L2_CID_MPEG_MFC51_VIDEO_CHECK_STATE		\
    127 					(V4L2_CID_MPEG_MFC_BASE + 13)
    128 #define V4L2_CID_MPEG_MFC51_VIDEO_DISPLAY_STATUS	\
    129 					(V4L2_CID_MPEG_MFC_BASE + 14)
    130 
    131 #define V4L2_CID_MPEG_MFC51_VIDEO_LUMA_ADDR	\
    132 					(V4L2_CID_MPEG_MFC_BASE + 15)
    133 #define V4L2_CID_MPEG_MFC51_VIDEO_CHROMA_ADDR	\
    134 					(V4L2_CID_MPEG_MFC_BASE + 16)
    135 
    136 #define V4L2_CID_MPEG_MFC51_VIDEO_STREAM_SIZE		\
    137 					(V4L2_CID_MPEG_MFC_BASE + 17)
    138 #define V4L2_CID_MPEG_MFC51_VIDEO_FRAME_COUNT		\
    139 					(V4L2_CID_MPEG_MFC_BASE + 18)
    140 #define V4L2_CID_MPEG_MFC51_VIDEO_FRAME_TYPE		\
    141 					(V4L2_CID_MPEG_MFC_BASE + 19)
    142 enum v4l2_mpeg_mfc51_video_frame_type {
    143 	V4L2_MPEG_MFC51_VIDEO_FRAME_TYPE_NOT_CODED	= 0,
    144 	V4L2_MPEG_MFC51_VIDEO_FRAME_TYPE_I_FRAME	= 1,
    145 	V4L2_MPEG_MFC51_VIDEO_FRAME_TYPE_P_FRAME	= 2,
    146 	V4L2_MPEG_MFC51_VIDEO_FRAME_TYPE_B_FRAME	= 3,
    147 	V4L2_MPEG_MFC51_VIDEO_FRAME_TYPE_SKIPPED	= 4,
    148 	V4L2_MPEG_MFC51_VIDEO_FRAME_TYPE_OTHERS		= 5,
    149 };
    150 
    151 #define V4L2_CID_MPEG_MFC51_VIDEO_H264_INTERLACE	\
    152 					(V4L2_CID_MPEG_MFC_BASE + 20)
    153 #define V4L2_CID_MPEG_MFC51_VIDEO_H264_RC_FRAME_RATE	\
    154 					(V4L2_CID_MPEG_MFC_BASE + 21)
    155 #define V4L2_CID_MPEG_MFC51_VIDEO_MPEG4_VOP_TIME_RES	\
    156 					(V4L2_CID_MPEG_MFC_BASE + 22)
    157 #define V4L2_CID_MPEG_MFC51_VIDEO_MPEG4_VOP_FRM_DELTA	\
    158 					(V4L2_CID_MPEG_MFC_BASE + 23)
    159 #define V4L2_CID_MPEG_MFC51_VIDEO_H263_RC_FRAME_RATE	\
    160 					(V4L2_CID_MPEG_MFC_BASE + 24)
    161 
    162 #define V4L2_CID_MPEG_MFC6X_VIDEO_FRAME_DELTA		\
    163 					(V4L2_CID_MPEG_MFC_BASE + 25)
    164 
    165 #define V4L2_CID_MPEG_MFC51_VIDEO_I_PERIOD_CH	V4L2_CID_MPEG_VIDEO_GOP_SIZE
    166 #define V4L2_CID_MPEG_MFC51_VIDEO_FRAME_RATE_CH		\
    167 				V4L2_CID_MPEG_MFC51_VIDEO_H264_RC_FRAME_RATE
    168 #define V4L2_CID_MPEG_MFC51_VIDEO_BIT_RATE_CH	V4L2_CID_MPEG_VIDEO_BITRATE
    169 
    170 /* new entry for enum v4l2_mpeg_video_mpeg4_level */
    171 #define V4L2_MPEG_VIDEO_MPEG4_LEVEL_6		8
    172 
    173 /* proposed CIDs, based on 3.3-rc3 */
    174 #define V4L2_CID_MPEG_VIDEO_VBV_DELAY		(V4L2_CID_MPEG_MFC_BASE + 26)
    175 
    176 #define V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED_S_B \
    177 	V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY
    178 
    179 #define V4L2_CID_MPEG_VIDEO_H264_SEI_FRAME_PACKING		\
    180 					(V4L2_CID_MPEG_MFC_BASE + 27)
    181 #define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_CURRENT_FRAME_0		\
    182 					(V4L2_CID_MPEG_MFC_BASE + 28)
    183 #define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE	\
    184 					(V4L2_CID_MPEG_MFC_BASE + 29)
    185 enum v4l2_mpeg_video_h264_sei_fp_arrangement_type {
    186 	V4L2_MPEG_VIDEO_H264_SEI_FP_TYPE_CHEKERBOARD	= 0,
    187 	V4L2_MPEG_VIDEO_H264_SEI_FP_TYPE_COLUMN		= 1,
    188 	V4L2_MPEG_VIDEO_H264_SEI_FP_TYPE_ROW		= 2,
    189 	V4L2_MPEG_VIDEO_H264_SEI_FP_TYPE_SIDE_BY_SIDE	= 3,
    190 	V4L2_MPEG_VIDEO_H264_SEI_FP_TYPE_TOP_BOTTOM	= 4,
    191 	V4L2_MPEG_VIDEO_H264_SEI_FP_TYPE_TEMPORAL	= 5,
    192 };
    193 #define V4L2_CID_MPEG_VIDEO_H264_FMO			\
    194 					(V4L2_CID_MPEG_MFC_BASE + 30)
    195 #define V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE		\
    196 					(V4L2_CID_MPEG_MFC_BASE + 31)
    197 enum v4l2_mpeg_video_h264_fmo_map_type {
    198 	V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_INTERLEAVED_SLICES		= 0,
    199 	V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_SCATTERED_SLICES		= 1,
    200 	V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_FOREGROUND_WITH_LEFT_OVER	= 2,
    201 	V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_BOX_OUT			= 3,
    202 	V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_RASTER_SCAN			= 4,
    203 	V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_WIPE_SCAN			= 5,
    204 	V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_EXPLICIT			= 6,
    205 };
    206 #define V4L2_CID_MPEG_VIDEO_H264_FMO_SLICE_GROUP	\
    207 					(V4L2_CID_MPEG_MFC_BASE + 32)
    208 #define V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_DIRECTION	\
    209 					(V4L2_CID_MPEG_MFC_BASE + 33)
    210 enum v4l2_mpeg_video_h264_fmo_change_dir {
    211 	V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_RIGHT	= 0,
    212 	V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_LEFT	= 1,
    213 };
    214 #define V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_RATE	\
    215 					(V4L2_CID_MPEG_MFC_BASE + 34)
    216 #define V4L2_CID_MPEG_VIDEO_H264_FMO_RUN_LENGTH		\
    217 					(V4L2_CID_MPEG_MFC_BASE + 35)
    218 #define V4L2_CID_MPEG_VIDEO_H264_ASO			\
    219 					(V4L2_CID_MPEG_MFC_BASE + 36)
    220 #define V4L2_CID_MPEG_VIDEO_H264_ASO_SLICE_ORDER	\
    221 					(V4L2_CID_MPEG_MFC_BASE + 37)
    222 #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING		\
    223 					(V4L2_CID_MPEG_MFC_BASE + 38)
    224 #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE	\
    225 					(V4L2_CID_MPEG_MFC_BASE + 39)
    226 enum v4l2_mpeg_video_h264_hierarchical_coding_type {
    227 	V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B	= 0,
    228 	V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P	= 1,
    229 };
    230 #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER	\
    231 					(V4L2_CID_MPEG_MFC_BASE + 40)
    232 #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP	\
    233 					(V4L2_CID_MPEG_MFC_BASE + 41)
    234 
    235 #define V4L2_CID_MPEG_VIDEO_H264_MVC_VIEW_ID			\
    236 					(V4L2_CID_MPEG_MFC_BASE + 42)
    237 #endif /* __LINUX_VIDEODEV2_EXYNOS_MEDIA_H */
    238