Changed sources for compiling
[platform/adaptation/ap_samsung/libomxil-e3250-v4l2.git] / exynos / include / videodev2_exynos_media.h
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
85 /* for color space conversion equation selection */
86 #define V4L2_CID_CSC_EQ_MODE            (V4L2_CID_EXYNOS_BASE + 100)
87 #define V4L2_CID_CSC_EQ                 (V4L2_CID_EXYNOS_BASE + 101)
88 #define V4L2_CID_CSC_RANGE              (V4L2_CID_EXYNOS_BASE + 102)
89
90 #define V4L2_CID_CONTENT_PROTECTION     (V4L2_CID_EXYNOS_BASE + 201)
91
92 /* CID base for MFC controls (MPEG_CLASS) */
93 #define V4L2_CID_MPEG_MFC_BASE          (V4L2_CTRL_CLASS_MPEG | 0x2000)
94
95 #define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_AVAIL           \
96                                         (V4L2_CID_MPEG_MFC_BASE + 1)
97 #define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRGMENT_ID     \
98                                         (V4L2_CID_MPEG_MFC_BASE + 2)
99 #define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_INFO            \
100                                         (V4L2_CID_MPEG_MFC_BASE + 3)
101 #define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_GRID_POS        \
102                                         (V4L2_CID_MPEG_MFC_BASE + 4)
103
104 #define V4L2_CID_MPEG_MFC51_VIDEO_PACKED_PB             \
105                                         (V4L2_CID_MPEG_MFC_BASE + 5)
106 #define V4L2_CID_MPEG_MFC51_VIDEO_FRAME_TAG             \
107                                         (V4L2_CID_MPEG_MFC_BASE + 6)
108 #define V4L2_CID_MPEG_MFC51_VIDEO_CRC_ENABLE            \
109                                         (V4L2_CID_MPEG_MFC_BASE + 7)
110 #define V4L2_CID_MPEG_MFC51_VIDEO_CRC_DATA_LUMA         \
111                                         (V4L2_CID_MPEG_MFC_BASE + 8)
112 #define V4L2_CID_MPEG_MFC51_VIDEO_CRC_DATA_CHROMA       \
113                                         (V4L2_CID_MPEG_MFC_BASE + 9)
114 #define V4L2_CID_MPEG_MFC51_VIDEO_CRC_DATA_LUMA_BOT     \
115                                         (V4L2_CID_MPEG_MFC_BASE + 10)
116 #define V4L2_CID_MPEG_MFC51_VIDEO_CRC_DATA_CHROMA_BOT   \
117                                         (V4L2_CID_MPEG_MFC_BASE + 11)
118 #define V4L2_CID_MPEG_MFC51_VIDEO_CRC_GENERATED         \
119                                         (V4L2_CID_MPEG_MFC_BASE + 12)
120 #define V4L2_CID_MPEG_MFC51_VIDEO_CHECK_STATE           \
121                                         (V4L2_CID_MPEG_MFC_BASE + 13)
122 #define V4L2_CID_MPEG_MFC51_VIDEO_DISPLAY_STATUS        \
123                                         (V4L2_CID_MPEG_MFC_BASE + 14)
124
125 #define V4L2_CID_MPEG_MFC51_VIDEO_LUMA_ADDR     \
126                                         (V4L2_CID_MPEG_MFC_BASE + 15)
127 #define V4L2_CID_MPEG_MFC51_VIDEO_CHROMA_ADDR   \
128                                         (V4L2_CID_MPEG_MFC_BASE + 16)
129
130 #define V4L2_CID_MPEG_MFC51_VIDEO_STREAM_SIZE           \
131                                         (V4L2_CID_MPEG_MFC_BASE + 17)
132 #define V4L2_CID_MPEG_MFC51_VIDEO_FRAME_COUNT           \
133                                         (V4L2_CID_MPEG_MFC_BASE + 18)
134 #define V4L2_CID_MPEG_MFC51_VIDEO_FRAME_TYPE            \
135                                         (V4L2_CID_MPEG_MFC_BASE + 19)
136 enum v4l2_mpeg_mfc51_video_frame_type {
137         V4L2_MPEG_MFC51_VIDEO_FRAME_TYPE_NOT_CODED      = 0,
138         V4L2_MPEG_MFC51_VIDEO_FRAME_TYPE_I_FRAME        = 1,
139         V4L2_MPEG_MFC51_VIDEO_FRAME_TYPE_P_FRAME        = 2,
140         V4L2_MPEG_MFC51_VIDEO_FRAME_TYPE_B_FRAME        = 3,
141         V4L2_MPEG_MFC51_VIDEO_FRAME_TYPE_SKIPPED        = 4,
142         V4L2_MPEG_MFC51_VIDEO_FRAME_TYPE_OTHERS         = 5,
143 };
144
145 #define V4L2_CID_MPEG_MFC51_VIDEO_H264_INTERLACE        \
146                                         (V4L2_CID_MPEG_MFC_BASE + 20)
147 #define V4L2_CID_MPEG_MFC51_VIDEO_H264_RC_FRAME_RATE    \
148                                         (V4L2_CID_MPEG_MFC_BASE + 21)
149 #define V4L2_CID_MPEG_MFC51_VIDEO_MPEG4_VOP_TIME_RES    \
150                                         (V4L2_CID_MPEG_MFC_BASE + 22)
151 #define V4L2_CID_MPEG_MFC51_VIDEO_MPEG4_VOP_FRM_DELTA   \
152                                         (V4L2_CID_MPEG_MFC_BASE + 23)
153 #define V4L2_CID_MPEG_MFC51_VIDEO_H263_RC_FRAME_RATE    \
154                                         (V4L2_CID_MPEG_MFC_BASE + 24)
155
156 #define V4L2_CID_MPEG_MFC6X_VIDEO_FRAME_DELTA           \
157                                         (V4L2_CID_MPEG_MFC_BASE + 25)
158
159 #define V4L2_CID_MPEG_MFC51_VIDEO_I_PERIOD_CH   V4L2_CID_MPEG_VIDEO_GOP_SIZE
160 #define V4L2_CID_MPEG_MFC51_VIDEO_FRAME_RATE_CH         \
161                                 V4L2_CID_MPEG_MFC51_VIDEO_H264_RC_FRAME_RATE
162 #define V4L2_CID_MPEG_MFC51_VIDEO_BIT_RATE_CH   V4L2_CID_MPEG_VIDEO_BITRATE
163
164 /* new entry for enum v4l2_mpeg_video_mpeg4_level */
165 #define V4L2_MPEG_VIDEO_MPEG4_LEVEL_6           8
166
167 /* proposed CIDs, based on 3.3-rc3 */
168 #define V4L2_CID_MPEG_VIDEO_VBV_DELAY           (V4L2_CID_MPEG_MFC_BASE + 26)
169
170 #define V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED_S_B \
171         V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY
172
173 #define V4L2_CID_MPEG_VIDEO_H264_SEI_FRAME_PACKING              \
174                                         (V4L2_CID_MPEG_MFC_BASE + 27)
175 #define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_CURRENT_FRAME_0         \
176                                         (V4L2_CID_MPEG_MFC_BASE + 28)
177 #define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE        \
178                                         (V4L2_CID_MPEG_MFC_BASE + 29)
179 enum v4l2_mpeg_video_h264_sei_fp_arrangement_type {
180         V4L2_MPEG_VIDEO_H264_SEI_FP_TYPE_CHEKERBOARD    = 0,
181         V4L2_MPEG_VIDEO_H264_SEI_FP_TYPE_COLUMN         = 1,
182         V4L2_MPEG_VIDEO_H264_SEI_FP_TYPE_ROW            = 2,
183         V4L2_MPEG_VIDEO_H264_SEI_FP_TYPE_SIDE_BY_SIDE   = 3,
184         V4L2_MPEG_VIDEO_H264_SEI_FP_TYPE_TOP_BOTTOM     = 4,
185         V4L2_MPEG_VIDEO_H264_SEI_FP_TYPE_TEMPORAL       = 5,
186 };
187 #define V4L2_CID_MPEG_VIDEO_H264_FMO                    \
188                                         (V4L2_CID_MPEG_MFC_BASE + 30)
189 #define V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE           \
190                                         (V4L2_CID_MPEG_MFC_BASE + 31)
191 enum v4l2_mpeg_video_h264_fmo_map_type {
192         V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_INTERLEAVED_SLICES            = 0,
193         V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_SCATTERED_SLICES              = 1,
194         V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_FOREGROUND_WITH_LEFT_OVER     = 2,
195         V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_BOX_OUT                       = 3,
196         V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_RASTER_SCAN                   = 4,
197         V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_WIPE_SCAN                     = 5,
198         V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_EXPLICIT                      = 6,
199 };
200 #define V4L2_CID_MPEG_VIDEO_H264_FMO_SLICE_GROUP        \
201                                         (V4L2_CID_MPEG_MFC_BASE + 32)
202 #define V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_DIRECTION   \
203                                         (V4L2_CID_MPEG_MFC_BASE + 33)
204 enum v4l2_mpeg_video_h264_fmo_change_dir {
205         V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_RIGHT       = 0,
206         V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_LEFT        = 1,
207 };
208 #define V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_RATE        \
209                                         (V4L2_CID_MPEG_MFC_BASE + 34)
210 #define V4L2_CID_MPEG_VIDEO_H264_FMO_RUN_LENGTH         \
211                                         (V4L2_CID_MPEG_MFC_BASE + 35)
212 #define V4L2_CID_MPEG_VIDEO_H264_ASO                    \
213                                         (V4L2_CID_MPEG_MFC_BASE + 36)
214 #define V4L2_CID_MPEG_VIDEO_H264_ASO_SLICE_ORDER        \
215                                         (V4L2_CID_MPEG_MFC_BASE + 37)
216 #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING            \
217                                         (V4L2_CID_MPEG_MFC_BASE + 38)
218 #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE       \
219                                         (V4L2_CID_MPEG_MFC_BASE + 39)
220 enum v4l2_mpeg_video_h264_hierarchical_coding_type {
221         V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B      = 0,
222         V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P      = 1,
223 };
224 #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER      \
225                                         (V4L2_CID_MPEG_MFC_BASE + 40)
226 #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP   \
227                                         (V4L2_CID_MPEG_MFC_BASE + 41)
228
229 #define V4L2_CID_MPEG_VIDEO_H264_MVC_VIEW_ID            \
230                                         (V4L2_CID_MPEG_MFC_BASE + 42)
231
232 #define V4L2_CID_MPEG_VIDEO_H264_PREPEND_SPSPPS_TO_IDR (V4L2_CID_MPEG_MFC_BASE + 46)
233
234 #define V4L2_CID_MPEG_MFC51_VIDEO_FRAME_STATUS                  \
235                                         (V4L2_CID_MPEG_MFC_BASE + 43)
236 #endif /* __LINUX_VIDEODEV2_EXYNOS_MEDIA_H */