]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - include/uapi/media/msm-v4l2-controls.h
Merge branch 'release/qcomlt-4.4' into stable-4.4
[karo-tx-linux.git] / include / uapi / media / msm-v4l2-controls.h
1 #ifndef __MSM_V4L2_CONTROLS_H__
2 #define __MSM_V4L2_CONTROLS_H__
3
4 #include <linux/v4l2-controls.h>
5
6 /*  MPEG-class control IDs specific to the msm_vidc driver */
7 #define V4L2_CID_MPEG_MSM_VIDC_BASE             (V4L2_CTRL_CLASS_MPEG | 0x2000)
8
9 #define V4L2_CID_MPEG_VIDC_VIDEO_ENABLE_PICTURE_TYPE \
10                         (V4L2_CID_MPEG_MSM_VIDC_BASE+0)
11 #define V4L2_CID_MPEG_VIDC_VIDEO_KEEP_ASPECT_RATIO \
12                         (V4L2_CID_MPEG_MSM_VIDC_BASE+1)
13 #define V4L2_CID_MPEG_VIDC_VIDEO_POST_LOOP_DEBLOCKER_MODE \
14                         (V4L2_CID_MPEG_MSM_VIDC_BASE+2)
15 #define V4L2_CID_MPEG_VIDC_VIDEO_DIVX_FORMAT \
16                         (V4L2_CID_MPEG_MSM_VIDC_BASE+3)
17 enum v4l2_mpeg_vidc_video_divx_format_type {
18         V4L2_MPEG_VIDC_VIDEO_DIVX_FORMAT_4              = 0,
19         V4L2_MPEG_VIDC_VIDEO_DIVX_FORMAT_5              = 1,
20         V4L2_MPEG_VIDC_VIDEO_DIVX_FORMAT_6          = 2,
21 };
22 #define V4L2_CID_MPEG_VIDC_VIDEO_MB_ERROR_MAP_REPORTING \
23                         (V4L2_CID_MPEG_MSM_VIDC_BASE+4)
24 #define V4L2_CID_MPEG_VIDC_VIDEO_CONTINUE_DATA_TRANSFER \
25                         (V4L2_CID_MPEG_MSM_VIDC_BASE+5)
26
27 #define V4L2_CID_MPEG_VIDC_VIDEO_STREAM_FORMAT   (V4L2_CID_MPEG_MSM_VIDC_BASE+6)
28 enum v4l2_mpeg_vidc_video_stream_format {
29         V4L2_MPEG_VIDC_VIDEO_NAL_FORMAT_STARTCODES         = 0,
30         V4L2_MPEG_VIDC_VIDEO_NAL_FORMAT_ONE_NAL_PER_BUFFER = 1,
31         V4L2_MPEG_VIDC_VIDEO_NAL_FORMAT_ONE_BYTE_LENGTH    = 2,
32         V4L2_MPEG_VIDC_VIDEO_NAL_FORMAT_TWO_BYTE_LENGTH    = 3,
33         V4L2_MPEG_VIDC_VIDEO_NAL_FORMAT_FOUR_BYTE_LENGTH   = 4,
34 };
35
36 #define V4L2_CID_MPEG_VIDC_VIDEO_OUTPUT_ORDER   (V4L2_CID_MPEG_MSM_VIDC_BASE+7)
37 enum v4l2_mpeg_vidc_video_output_order {
38         V4L2_MPEG_VIDC_VIDEO_OUTPUT_ORDER_DISPLAY         = 0,
39         V4L2_MPEG_VIDC_VIDEO_OUTPUT_ORDER_DECODE          = 1,
40 };
41
42 #define V4L2_CID_MPEG_VIDC_VIDEO_FRAME_RATE   (V4L2_CID_MPEG_MSM_VIDC_BASE+8)
43 #define V4L2_CID_MPEG_VIDC_VIDEO_IDR_PERIOD   (V4L2_CID_MPEG_MSM_VIDC_BASE+9)
44 #define V4L2_CID_MPEG_VIDC_VIDEO_NUM_P_FRAMES (V4L2_CID_MPEG_MSM_VIDC_BASE+10)
45 #define V4L2_CID_MPEG_VIDC_VIDEO_NUM_B_FRAMES (V4L2_CID_MPEG_MSM_VIDC_BASE+11)
46 #define V4L2_CID_MPEG_VIDC_VIDEO_REQUEST_IFRAME (V4L2_CID_MPEG_MSM_VIDC_BASE+12)
47
48 #define V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL (V4L2_CID_MPEG_MSM_VIDC_BASE+13)
49 enum v4l2_mpeg_vidc_video_rate_control {
50         V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_OFF = 0,
51         V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_VBR_VFR = 1,
52         V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_VBR_CFR = 2,
53         V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_CBR_VFR = 3,
54         V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_CBR_CFR = 4,
55 };
56
57 #define V4L2_CID_MPEG_VIDC_VIDEO_ROTATION (V4L2_CID_MPEG_MSM_VIDC_BASE+14)
58 enum v4l2_mpeg_vidc_video_rotation {
59         V4L2_CID_MPEG_VIDC_VIDEO_ROTATION_NONE = 0,
60         V4L2_CID_MPEG_VIDC_VIDEO_ROTATION_90 = 1,
61         V4L2_CID_MPEG_VIDC_VIDEO_ROTATION_180 = 2,
62         V4L2_CID_MPEG_VIDC_VIDEO_ROTATION_270 = 3,
63 };
64 #define MSM_VIDC_BASE V4L2_CID_MPEG_MSM_VIDC_BASE
65 #define V4L2_CID_MPEG_VIDC_VIDEO_H264_CABAC_MODEL (MSM_VIDC_BASE+15)
66 enum v4l2_mpeg_vidc_h264_cabac_model {
67         V4L2_CID_MPEG_VIDC_VIDEO_H264_CABAC_MODEL_0 = 0,
68         V4L2_CID_MPEG_VIDC_VIDEO_H264_CABAC_MODEL_1 = 1,
69         V4L2_CID_MPEG_VIDC_VIDEO_H264_CABAC_MODEL_2 = 2,
70 };
71
72 #define V4L2_CID_MPEG_VIDC_VIDEO_INTRA_REFRESH_MODE (MSM_VIDC_BASE+16)
73 enum v4l2_mpeg_vidc_video_intra_refresh_mode {
74         V4L2_CID_MPEG_VIDC_VIDEO_INTRA_REFRESH_NONE = 0,
75         V4L2_CID_MPEG_VIDC_VIDEO_INTRA_REFRESH_CYCLIC = 1,
76         V4L2_CID_MPEG_VIDC_VIDEO_INTRA_REFRESH_ADAPTIVE = 2,
77         V4L2_CID_MPEG_VIDC_VIDEO_INTRA_REFRESH_CYCLIC_ADAPTIVE = 3,
78         V4L2_CID_MPEG_VIDC_VIDEO_INTRA_REFRESH_RANDOM = 4,
79 };
80 #define V4L2_CID_MPEG_VIDC_VIDEO_AIR_MBS (V4L2_CID_MPEG_MSM_VIDC_BASE+17)
81 #define V4L2_CID_MPEG_VIDC_VIDEO_AIR_REF (V4L2_CID_MPEG_MSM_VIDC_BASE+18)
82 #define V4L2_CID_MPEG_VIDC_VIDEO_CIR_MBS (V4L2_CID_MPEG_MSM_VIDC_BASE+19)
83
84 #define V4L2_CID_MPEG_VIDC_VIDEO_H263_PROFILE (V4L2_CID_MPEG_MSM_VIDC_BASE+20)
85 enum v4l2_mpeg_vidc_video_h263_profile {
86         V4L2_MPEG_VIDC_VIDEO_H263_PROFILE_BASELINE = 0,
87         V4L2_MPEG_VIDC_VIDEO_H263_PROFILE_H320CODING    = 1,
88         V4L2_MPEG_VIDC_VIDEO_H263_PROFILE_BACKWARDCOMPATIBLE = 2,
89         V4L2_MPEG_VIDC_VIDEO_H263_PROFILE_ISWV2 = 3,
90         V4L2_MPEG_VIDC_VIDEO_H263_PROFILE_ISWV3 = 4,
91         V4L2_MPEG_VIDC_VIDEO_H263_PROFILE_HIGHCOMPRESSION = 5,
92         V4L2_MPEG_VIDC_VIDEO_H263_PROFILE_INTERNET = 6,
93         V4L2_MPEG_VIDC_VIDEO_H263_PROFILE_INTERLACE = 7,
94         V4L2_MPEG_VIDC_VIDEO_H263_PROFILE_HIGHLATENCY = 8,
95 };
96
97 #define V4L2_CID_MPEG_VIDC_VIDEO_H263_LEVEL (V4L2_CID_MPEG_MSM_VIDC_BASE+21)
98 enum v4l2_mpeg_vidc_video_h263_level {
99         V4L2_MPEG_VIDC_VIDEO_H263_LEVEL_1_0 = 0,
100         V4L2_MPEG_VIDC_VIDEO_H263_LEVEL_2_0 = 1,
101         V4L2_MPEG_VIDC_VIDEO_H263_LEVEL_3_0 = 2,
102         V4L2_MPEG_VIDC_VIDEO_H263_LEVEL_4_0 = 3,
103         V4L2_MPEG_VIDC_VIDEO_H263_LEVEL_4_5 = 4,
104         V4L2_MPEG_VIDC_VIDEO_H263_LEVEL_5_0 = 5,
105         V4L2_MPEG_VIDC_VIDEO_H263_LEVEL_6_0 = 6,
106         V4L2_MPEG_VIDC_VIDEO_H263_LEVEL_7_0 = 7,
107 };
108
109 #define V4L2_CID_MPEG_VIDC_VIDEO_H264_AU_DELIMITER \
110                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 22)
111 enum v4l2_mpeg_vidc_video_h264_au_delimiter {
112         V4L2_MPEG_VIDC_VIDEO_H264_AU_DELIMITER_DISABLED = 0,
113         V4L2_MPEG_VIDC_VIDEO_H264_AU_DELIMITER_ENABLED = 1
114 };
115 #define V4L2_CID_MPEG_VIDC_VIDEO_SYNC_FRAME_DECODE \
116                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 23)
117 enum v4l2_mpeg_vidc_video_sync_frame_decode {
118         V4L2_MPEG_VIDC_VIDEO_SYNC_FRAME_DECODE_DISABLE = 0,
119         V4L2_MPEG_VIDC_VIDEO_SYNC_FRAME_DECODE_ENABLE = 1
120 };
121 #define V4L2_CID_MPEG_VIDC_VIDEO_SECURE (V4L2_CID_MPEG_MSM_VIDC_BASE+24)
122 #define V4L2_CID_MPEG_VIDC_VIDEO_EXTRADATA \
123                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 25)
124 enum v4l2_mpeg_vidc_extradata {
125         V4L2_MPEG_VIDC_EXTRADATA_NONE = 0,
126         V4L2_MPEG_VIDC_EXTRADATA_MB_QUANTIZATION = 1,
127         V4L2_MPEG_VIDC_EXTRADATA_INTERLACE_VIDEO = 2,
128         V4L2_MPEG_VIDC_EXTRADATA_VC1_FRAMEDISP = 3,
129         V4L2_MPEG_VIDC_EXTRADATA_VC1_SEQDISP = 4,
130         V4L2_MPEG_VIDC_EXTRADATA_TIMESTAMP = 5,
131         V4L2_MPEG_VIDC_EXTRADATA_S3D_FRAME_PACKING = 6,
132         V4L2_MPEG_VIDC_EXTRADATA_FRAME_RATE = 7,
133         V4L2_MPEG_VIDC_EXTRADATA_PANSCAN_WINDOW = 8,
134         V4L2_MPEG_VIDC_EXTRADATA_RECOVERY_POINT_SEI = 9,
135         V4L2_MPEG_VIDC_EXTRADATA_MULTISLICE_INFO = 10,
136         V4L2_MPEG_VIDC_EXTRADATA_NUM_CONCEALED_MB = 11,
137         V4L2_MPEG_VIDC_EXTRADATA_METADATA_FILLER = 12,
138         V4L2_MPEG_VIDC_EXTRADATA_INPUT_CROP = 13,
139         V4L2_MPEG_VIDC_EXTRADATA_DIGITAL_ZOOM = 14,
140         V4L2_MPEG_VIDC_EXTRADATA_ASPECT_RATIO = 15,
141         V4L2_MPEG_VIDC_EXTRADATA_MPEG2_SEQDISP = 16,
142         V4L2_MPEG_VIDC_EXTRADATA_STREAM_USERDATA = 17,
143         V4L2_MPEG_VIDC_EXTRADATA_FRAME_QP = 18,
144         V4L2_MPEG_VIDC_EXTRADATA_FRAME_BITS_INFO = 19,
145         V4L2_MPEG_VIDC_EXTRADATA_LTR = 20,
146         V4L2_MPEG_VIDC_EXTRADATA_METADATA_MBI = 21,
147 };
148
149 #define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_GOB             \
150                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 27)
151
152 #define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_DELIVERY_MODE   \
153         (V4L2_CID_MPEG_MSM_VIDC_BASE + 28)
154
155 #define V4L2_CID_MPEG_VIDC_VIDEO_H264_VUI_TIMING_INFO \
156                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 29)
157 enum v4l2_mpeg_vidc_video_h264_vui_timing_info {
158         V4L2_MPEG_VIDC_VIDEO_H264_VUI_TIMING_INFO_DISABLED = 0,
159         V4L2_MPEG_VIDC_VIDEO_H264_VUI_TIMING_INFO_ENABLED = 1
160 };
161
162 #define V4L2_CID_MPEG_VIDC_VIDEO_ALLOC_MODE_INPUT       \
163                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 30)
164 #define V4L2_CID_MPEG_VIDC_VIDEO_ALLOC_MODE_OUTPUT       \
165                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 31)
166 enum v4l2_mpeg_vidc_video_alloc_mode_type {
167         V4L2_MPEG_VIDC_VIDEO_STATIC     = 0,
168         V4L2_MPEG_VIDC_VIDEO_RING       = 1,
169         V4L2_MPEG_VIDC_VIDEO_DYNAMIC    = 2,
170 };
171
172 #define V4L2_CID_MPEG_VIDC_VIDEO_FRAME_ASSEMBLY \
173                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 32)
174 enum v4l2_mpeg_vidc_video_assembly {
175         V4L2_MPEG_VIDC_FRAME_ASSEMBLY_DISABLE   = 0,
176         V4L2_MPEG_VIDC_FRAME_ASSEMBLY_ENABLE    = 1,
177 };
178
179 #define V4L2_CID_MPEG_VIDC_VIDEO_VP8_PROFILE_LEVEL \
180                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 33)
181 enum v4l2_mpeg_vidc_video_vp8_profile_level {
182         V4L2_MPEG_VIDC_VIDEO_VP8_UNUSED,
183         V4L2_MPEG_VIDC_VIDEO_VP8_VERSION_0,
184         V4L2_MPEG_VIDC_VIDEO_VP8_VERSION_1,
185         V4L2_MPEG_VIDC_VIDEO_VP8_VERSION_2,
186         V4L2_MPEG_VIDC_VIDEO_VP8_VERSION_3,
187 };
188
189 #define V4L2_CID_MPEG_VIDC_VIDEO_H264_VUI_BITSTREAM_RESTRICT \
190                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 34)
191 enum v4l2_mpeg_vidc_video_h264_vui_bitstream_restrict {
192         V4L2_MPEG_VIDC_VIDEO_H264_VUI_BITSTREAM_RESTRICT_DISABLED = 0,
193         V4L2_MPEG_VIDC_VIDEO_H264_VUI_BITSTREAM_RESTRICT_ENABLED = 1
194 };
195
196 #define V4L2_CID_MPEG_VIDC_VIDEO_PRESERVE_TEXT_QUALITY \
197                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 35)
198 enum v4l2_mpeg_vidc_video_preserve_text_quality {
199         V4L2_MPEG_VIDC_VIDEO_PRESERVE_TEXT_QUALITY_DISABLED = 0,
200         V4L2_MPEG_VIDC_VIDEO_PRESERVE_TEXT_QUALITY_ENABLED = 1
201 };
202
203 #define V4L2_CID_MPEG_VIDC_VIDEO_DEINTERLACE \
204                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 36)
205 enum v4l2_mpeg_vidc_video_deinterlace {
206         V4L2_CID_MPEG_VIDC_VIDEO_DEINTERLACE_DISABLED = 0,
207         V4L2_CID_MPEG_VIDC_VIDEO_DEINTERLACE_ENABLED = 1
208 };
209
210 #define V4L2_CID_MPEG_VIDC_VIDEO_MPEG4_TIME_RESOLUTION \
211                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 37)
212
213 #define V4L2_CID_MPEG_VIDC_VIDEO_STREAM_OUTPUT_MODE \
214                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 38)
215 enum v4l2_mpeg_vidc_video_decoder_multi_stream {
216         V4L2_CID_MPEG_VIDC_VIDEO_STREAM_OUTPUT_PRIMARY = 0,
217         V4L2_CID_MPEG_VIDC_VIDEO_STREAM_OUTPUT_SECONDARY = 1,
218 };
219 #define V4L2_CID_MPEG_VIDC_VIDEO_SCS_THRESHOLD \
220                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 39)
221
222 #define V4L2_CID_MPEG_VIDC_VIDEO_MPEG2_LEVEL    (V4L2_CID_MPEG_MSM_VIDC_BASE+40)
223 enum v4l2_mpeg_vidc_video_mpeg2_level {
224         V4L2_MPEG_VIDC_VIDEO_MPEG2_LEVEL_0      = 0,
225         V4L2_MPEG_VIDC_VIDEO_MPEG2_LEVEL_1      = 1,
226         V4L2_MPEG_VIDC_VIDEO_MPEG2_LEVEL_2      = 2,
227         V4L2_MPEG_VIDC_VIDEO_MPEG2_LEVEL_3      = 3,
228 };
229 #define V4L2_CID_MPEG_VIDC_VIDEO_MPEG2_PROFILE  (V4L2_CID_MPEG_MSM_VIDC_BASE+41)
230 enum v4l2_mpeg_vidc_video_mpeg2_profile {
231         V4L2_MPEG_VIDC_VIDEO_MPEG2_PROFILE_SIMPLE               = 0,
232         V4L2_MPEG_VIDC_VIDEO_MPEG2_PROFILE_MAIN                 = 1,
233         V4L2_MPEG_VIDC_VIDEO_MPEG2_PROFILE_422                  = 2,
234         V4L2_MPEG_VIDC_VIDEO_MPEG2_PROFILE_SNR_SCALABLE         = 3,
235         V4L2_MPEG_VIDC_VIDEO_MPEG2_PROFILE_SPATIAL_SCALABLE     = 4,
236         V4L2_MPEG_VIDC_VIDEO_MPEG2_PROFILE_HIGH                 = 5,
237 };
238 #define V4L2_CID_MPEG_VIDC_VIDEO_REQUEST_SEQ_HEADER \
239                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 42)
240
241 #define V4L2_CID_MPEG_VIDC_VIDEO_MVC_BUFFER_LAYOUT \
242                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 43)
243 enum v4l2_mpeg_vidc_video_mvc_layout {
244         V4L2_MPEG_VIDC_VIDEO_MVC_SEQUENTIAL = 0,
245         V4L2_MPEG_VIDC_VIDEO_MVC_TOP_BOTTOM = 1
246 };
247
248 #define V4L2_CID_MPEG_VIDC_VIDEO_VP8_MIN_QP (V4L2_CID_MPEG_MSM_VIDC_BASE + 44)
249 #define V4L2_CID_MPEG_VIDC_VIDEO_VP8_MAX_QP (V4L2_CID_MPEG_MSM_VIDC_BASE + 45)
250 #define V4L2_CID_MPEG_VIDC_VIDEO_CONCEAL_COLOR \
251                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 46)
252
253 #define V4L2_CID_MPEG_VIDC_VIDEO_LTRMODE \
254                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 47)
255
256 enum v4l2_mpeg_vidc_video_ltrmode {
257         V4L2_MPEG_VIDC_VIDEO_LTR_MODE_DISABLE = 0,
258         V4L2_MPEG_VIDC_VIDEO_LTR_MODE_MANUAL = 1,
259         V4L2_MPEG_VIDC_VIDEO_LTR_MODE_PERIODIC = 2
260 };
261
262 #define V4L2_CID_MPEG_VIDC_VIDEO_LTRCOUNT \
263                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 48)
264
265 #define V4L2_CID_MPEG_VIDC_VIDEO_USELTRFRAME \
266                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 49)
267
268 #define V4L2_CID_MPEG_VIDC_VIDEO_MARKLTRFRAME \
269                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 50)
270
271 #define V4L2_CID_MPEG_VIDC_VIDEO_HIER_P_NUM_LAYERS \
272                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 51)
273
274 #define V4L2_CID_MPEG_VIDC_VIDEO_RATE_CONTROL_TIMESTAMP_MODE \
275         (V4L2_CID_MPEG_MSM_VIDC_BASE + 52)
276 enum v4l2_mpeg_vidc_video_rate_control_timestamp_mode {
277         V4L2_MPEG_VIDC_VIDEO_RATE_CONTROL_TIMESTAMP_MODE_HONOR = 0,
278         V4L2_MPEG_VIDC_VIDEO_RATE_CONTROL_TIMESTAMP_MODE_IGNORE = 1,
279 };
280
281 #define V4L2_CID_MPEG_VIDC_VIDEO_ENABLE_INITIAL_QP \
282                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 53)
283 enum vl42_mpeg_vidc_video_enable_initial_qp {
284         V4L2_CID_MPEG_VIDC_VIDEO_ENABLE_INITIAL_QP_IFRAME = 0x1,
285         V4L2_CID_MPEG_VIDC_VIDEO_ENABLE_INITIAL_QP_PFRAME = 0x2,
286         V4L2_CID_MPEG_VIDC_VIDEO_ENABLE_INITIAL_QP_BFRAME = 0x4,
287 };
288
289 #define V4L2_CID_MPEG_VIDC_VIDEO_I_FRAME_QP \
290                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 54)
291
292 #define V4L2_CID_MPEG_VIDC_VIDEO_P_FRAME_QP \
293                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 55)
294
295 #define V4L2_CID_MPEG_VIDC_VIDEO_B_FRAME_QP \
296                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 56)
297
298 #define V4L2_CID_MPEG_VIDC_VIDEO_IFRAME_X_RANGE \
299                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 57)
300
301 #define V4L2_CID_MPEG_VIDC_VIDEO_PFRAME_X_RANGE \
302                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 58)
303
304 #define V4L2_CID_MPEG_VIDC_VIDEO_BFRAME_X_RANGE \
305                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 59)
306
307 #define V4L2_CID_MPEG_VIDC_VIDEO_IFRAME_Y_RANGE \
308                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 60)
309
310 #define V4L2_CID_MPEG_VIDC_VIDEO_PFRAME_Y_RANGE \
311                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 61)
312
313 #define V4L2_CID_MPEG_VIDC_VIDEO_BFRAME_Y_RANGE \
314                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 62)
315
316 #define V4L2_CID_MPEG_VIDC_VIDEO_VPX_ERROR_RESILIENCE \
317         (V4L2_CID_MPEG_MSM_VIDC_BASE + 63)
318
319 enum vl42_mpeg_vidc_video_vpx_error_resilience {
320         V4L2_MPEG_VIDC_VIDEO_VPX_ERROR_RESILIENCE_DISABLED = 0,
321         V4L2_MPEG_VIDC_VIDEO_VPX_ERROR_RESILIENCE_ENABLED = 1,
322 };
323
324 #define V4L2_CID_MPEG_VIDC_VIDEO_HEVC_PROFILE \
325         (V4L2_CID_MPEG_MSM_VIDC_BASE + 65)
326 enum v4l2_mpeg_video_hevc_profile {
327         V4L2_MPEG_VIDC_VIDEO_HEVC_PROFILE_MAIN                  = 0,
328         V4L2_MPEG_VIDC_VIDEO_HEVC_PROFILE_MAIN10                = 1,
329         V4L2_MPEG_VIDC_VIDEO_HEVC_PROFILE_MAIN_STILL_PIC        = 2,
330 };
331
332 #define V4L2_CID_MPEG_VIDC_VIDEO_HEVC_TIER_LEVEL \
333         (V4L2_CID_MPEG_MSM_VIDC_BASE + 66)
334 enum v4l2_mpeg_video_hevc_level {
335         V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_1       = 0,
336         V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_1       = 1,
337         V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_2       = 2,
338         V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_2       = 3,
339         V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_2_1     = 4,
340         V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_2_1     = 5,
341         V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_3       = 6,
342         V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_3       = 7,
343         V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_3_1     = 8,
344         V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_3_1     = 9,
345         V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_4       = 10,
346         V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_4       = 11,
347         V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_4_1     = 12,
348         V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_4_1     = 13,
349         V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_5       = 14,
350         V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_5       = 15,
351         V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_5_1     = 16,
352         V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_5_1     = 17,
353         V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_5_2     = 18,
354         V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_5_2     = 19,
355         V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_6       = 20,
356         V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_6       = 21,
357         V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_6_1     = 22,
358         V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_6_1     = 23,
359         V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_MAIN_TIER_LEVEL_6_2     = 24,
360         V4L2_MPEG_VIDC_VIDEO_HEVC_LEVEL_HIGH_TIER_LEVEL_6_2     = 25,
361 };
362
363 #define V4L2_CID_MPEG_VIDC_VIDEO_H264_NAL_SVC \
364         (V4L2_CID_MPEG_MSM_VIDC_BASE + 67)
365
366 enum vl42_mpeg_vidc_video_h264_svc_nal {
367         V4L2_CID_MPEG_VIDC_VIDEO_H264_NAL_SVC_DISABLED = 0,
368         V4L2_CID_MPEG_VIDC_VIDEO_H264_NAL_SVC_ENABLED = 1,
369 };
370
371 #define V4L2_CID_MPEG_VIDC_VIDEO_PERF_MODE       \
372                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 68)
373
374 enum v4l2_mpeg_vidc_video_perf_mode {
375         V4L2_MPEG_VIDC_VIDEO_PERF_MAX_QUALITY = 1,
376         V4L2_MPEG_VIDC_VIDEO_PERF_POWER_SAVE = 2
377 };
378
379 #define V4L2_CID_MPEG_VIDC_VIDEO_HIER_B_NUM_LAYERS \
380                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 69)
381
382 #define V4L2_CID_MPEG_VIDC_VIDEO_SECURE_SCALING_THRESHOLD \
383                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 70)
384
385 #define V4L2_CID_MPEG_VIDC_VIDEO_NON_SECURE_OUTPUT2 \
386                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 71)
387
388 #define V4L2_CID_MPEG_VIDC_VIDEO_HYBRID_HIERP_MODE \
389                 (V4L2_CID_MPEG_MSM_VIDC_BASE + 72)
390
391 /* Vendor extensions */
392 #define V4L2_QCOM_BUF_FLAG_CODECCONFIG          0x10000
393 #define V4L2_QCOM_BUF_FLAG_EOSEQ                0x20000
394 #define V4L2_QCOM_BUF_TIMESTAMP_INVALID         0x40000
395 #define V4L2_QCOM_BUF_FLAG_IDRFRAME             0x80000 /*Image is a IDR-frame*/
396 #define V4L2_QCOM_BUF_FLAG_DECODEONLY           0x100000
397 #define V4L2_QCOM_BUF_DATA_CORRUPT              0x200000
398 #define V4L2_QCOM_BUF_DROP_FRAME                0x400000
399 #define V4L2_QCOM_BUF_INPUT_UNSUPPORTED         0x800000
400 #define V4L2_QCOM_BUF_FLAG_EOS                  0x1000000
401 #define V4L2_QCOM_BUF_TS_DISCONTINUITY          0x2000000
402 #define V4L2_QCOM_BUF_TS_ERROR                  0x4000000
403 #define V4L2_QCOM_BUF_FLAG_READONLY             0x8000000
404 #define V4L2_MSM_VIDC_BUF_START_CODE_NOT_FOUND  0x10000000
405 #define V4L2_MSM_BUF_FLAG_YUV_601_709_CLAMP     0x20000000
406 #define V4L2_MSM_BUF_FLAG_MBAFF                 0x40000000
407
408 /* Capabilities */
409 #define V4L2_CAP_QCOM_FRAMESKIP 0x2000  /*  frame skipping is supported */
410
411 struct v4l2_qcom_frameskip {
412         __u64              maxframeinterval;
413         __u8               fpsvariance;
414 };
415
416 /* Encoder commands */
417 #define V4L2_ENC_QCOM_CMD_FLUSH  (4)
418
419 /* Decoder commands */
420 #define V4L2_DEC_QCOM_CMD_FLUSH  (4)
421
422 /* Flags for V4L2_DEC_QCOM_CMD_FLUSH */
423 #define V4L2_DEC_QCOM_CMD_FLUSH_OUTPUT  (1 << 0)
424 #define V4L2_DEC_QCOM_CMD_FLUSH_CAPTURE (1 << 1)
425
426 #define V4L2_QCOM_CMD_FLUSH_OUTPUT  (1 << 0)
427 #define V4L2_QCOM_CMD_FLUSH_CAPTURE (1 << 1)
428
429 /* Events */
430 #define V4L2_EVENT_MSM_VIDC_START       (V4L2_EVENT_PRIVATE_START + 0x00001000)
431 #define V4L2_EVENT_MSM_VIDC_FLUSH_DONE  (V4L2_EVENT_MSM_VIDC_START + 1)
432 #define V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_CHANGED_SUFFICIENT    \
433                 (V4L2_EVENT_MSM_VIDC_START + 2)
434 #define V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_CHANGED_INSUFFICIENT  \
435                 (V4L2_EVENT_MSM_VIDC_START + 3)
436 #define V4L2_EVENT_MSM_VIDC_CLOSE_DONE  (V4L2_EVENT_MSM_VIDC_START + 4)
437 #define V4L2_EVENT_MSM_VIDC_SYS_ERROR   (V4L2_EVENT_MSM_VIDC_START + 5)
438 #define V4L2_EVENT_MSM_VIDC_RELEASE_BUFFER_REFERENCE \
439                 (V4L2_EVENT_MSM_VIDC_START + 6)
440 #define V4L2_EVENT_MSM_VIDC_RELEASE_UNQUEUED_BUFFER \
441                 (V4L2_EVENT_MSM_VIDC_START + 7)
442 #define V4L2_EVENT_MSM_VIDC_HW_OVERLOAD (V4L2_EVENT_MSM_VIDC_START + 8)
443 #define V4L2_EVENT_MSM_VIDC_MAX_CLIENTS (V4L2_EVENT_MSM_VIDC_START + 9)
444 #define V4L2_EVENT_MSM_VIDC_HW_UNSUPPORTED (V4L2_EVENT_MSM_VIDC_START + 10)
445
446 #endif/* __MSM_V4L2_CONTROLS_H__ */