History

Merge tag 'media/v5.11-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media

Pull media updates from Mauro Carvalho Chehab: - some rework at the uAPI pixel format docs - the smiapp driver has started to gain support for MIPI CSS camera sensors and was renamed - two new sensor drivers: ov02a10 and ov9734 - Meson gained a driver for the 2D acceleration unit - Rockchip rkisp1 driver was promoted from staging - Cedrus driver gained support for VP8 - two new remote controller keymaps were added - the usual set of fixes cleanups and driver improvements * tag 'media/v5.11-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (447 commits) media: ccs: Add support for obtaining C-PHY configuration from firmware media: ccs-pll: Print pixel rates media: ccs: Print written register values media: ccs: Add support for DDR OP SYS and OP PIX clocks media: ccs-pll: Add support for DDR OP system and pixel clocks media: ccs: Dual PLL support media: ccs-pll: Add trivial dual PLL support media: ccs-pll: Separate VT divisor limit calculation from the rest media: ccs-pll: Fix VT post-PLL divisor calculation media: ccs-pll: Make VT divisors 16-bit media: ccs-pll: Rework bounds checks media: ccs-pll: Print relevant information on PLL tree media: ccs-pll: Better separate OP and VT sub-tree calculation media: ccs-pll: Check for derating and overrating, support non-derating sensors media: ccs-pll: Split off VT subtree calculation media: ccs-pll: Add C-PHY support media: ccs-pll: Add sanity checks media: ccs-pll: Add support flexible OP PLL pixel clock divider media: ccs-pll: Support two cycles per pixel on OP domain media: ccs-pll: Add support for extended input PLL clock divider ...

Linus Torvalds committed 5 years ago

Commit fab0fca2 parents ae1985b 7ea4d23408 files · +23940 −13923Browse files

Showing the changes to include/uapi (5 of 408 files). Show all

Unified · Split

5 files
  1. include/uapi/linux/lirc.h +3 −1
  2. include/uapi/linux/media-bus-format.h +8 −0
  3. include/uapi/linux/rkisp1-config.h +884 −0
  4. include/uapi/linux/v4l2-controls.h +673 −200
  5. include/uapi/linux/videodev2.h +28 −13
include/uapi/linux/lirc.h+3−1
@@ -139,7 +139,7 @@ · 138 unmodified lines
139 */139 */
140#define LIRC_GET_REC_TIMEOUT _IOR('i', 0x00000024, __u32)140#define LIRC_GET_REC_TIMEOUT _IOR('i', 0x00000024, __u32)
141 141
142/*142/**
143 * struct lirc_scancode - decoded scancode with protocol for use with143 * struct lirc_scancode - decoded scancode with protocol for use with
144 * LIRC_MODE_SCANCODE144 * LIRC_MODE_SCANCODE
145 *145 *
@@ -196,6 +196,7 @@ struct lirc_scancode { · 50 unmodified lines
196 * @RC_PROTO_RCMM24: RC-MM protocol 24 bits196 * @RC_PROTO_RCMM24: RC-MM protocol 24 bits
197 * @RC_PROTO_RCMM32: RC-MM protocol 32 bits197 * @RC_PROTO_RCMM32: RC-MM protocol 32 bits
198 * @RC_PROTO_XBOX_DVD: Xbox DVD Movie Playback Kit protocol198 * @RC_PROTO_XBOX_DVD: Xbox DVD Movie Playback Kit protocol
199 * @RC_PROTO_MAX: Maximum value of enum rc_proto
199 */200 */
200enum rc_proto {201enum rc_proto {
201 RC_PROTO_UNKNOWN = 0,202 RC_PROTO_UNKNOWN = 0,
@@ -226,6 +227,7 @@ enum rc_proto { · 24 unmodified lines
226 RC_PROTO_RCMM24 = 25,227 RC_PROTO_RCMM24 = 25,
227 RC_PROTO_RCMM32 = 26,228 RC_PROTO_RCMM32 = 26,
228 RC_PROTO_XBOX_DVD = 27,229 RC_PROTO_XBOX_DVD = 27,
230 RC_PROTO_MAX = RC_PROTO_XBOX_DVD,
229};231};
230 232
231#endif233#endif
include/uapi/linux/media-bus-format.h+8−0
@@ -157,4 +157,12 @@ · 156 unmodified lines
157/* HSV - next is 0x6002 */157/* HSV - next is 0x6002 */
158#define MEDIA_BUS_FMT_AHSV8888_1X32 0x6001158#define MEDIA_BUS_FMT_AHSV8888_1X32 0x6001
159 159
160/*
161 * This format should be used when the same driver handles
162 * both sides of the link and the bus format is a fixed
163 * metadata format that is not configurable from userspace.
164 * Width and height will be set to 0 for this format.
165 */
166#define MEDIA_BUS_FMT_METADATA_FIXED 0x7001
167
160#endif /* __LINUX_MEDIA_BUS_FORMAT_H */168#endif /* __LINUX_MEDIA_BUS_FORMAT_H */
include/uapi/linux/rkisp1-config.h+884−0
@@ -0,0 +1,884 @@
1/* SPDX-License-Identifier: ((GPL-2.0+ WITH Linux-syscall-note) OR MIT) */
2/*
3 * Rockchip ISP1 userspace API
4 * Copyright (C) 2017 Rockchip Electronics Co., Ltd.
5 */
6
7#ifndef _UAPI_RKISP1_CONFIG_H
8#define _UAPI_RKISP1_CONFIG_H
9
10#include <linux/types.h>
11
12/* Defect Pixel Cluster Detection */
13#define RKISP1_CIF_ISP_MODULE_DPCC (1U << 0)
14/* Black Level Subtraction */
15#define RKISP1_CIF_ISP_MODULE_BLS (1U << 1)
16/* Sensor De-gamma */
17#define RKISP1_CIF_ISP_MODULE_SDG (1U << 2)
18/* Histogram */
19#define RKISP1_CIF_ISP_MODULE_HST (1U << 3)
20/* Lens Shade Control */
21#define RKISP1_CIF_ISP_MODULE_LSC (1U << 4)
22/* Auto White Balance Gain */
23#define RKISP1_CIF_ISP_MODULE_AWB_GAIN (1U << 5)
24/* Filter */
25#define RKISP1_CIF_ISP_MODULE_FLT (1U << 6)
26/* Bayer Demosaic */
27#define RKISP1_CIF_ISP_MODULE_BDM (1U << 7)
28/* Cross Talk */
29#define RKISP1_CIF_ISP_MODULE_CTK (1U << 8)
30/* Gamma Out Curve */
31#define RKISP1_CIF_ISP_MODULE_GOC (1U << 9)
32/* Color Processing */
33#define RKISP1_CIF_ISP_MODULE_CPROC (1U << 10)
34/* Auto Focus Control */
35#define RKISP1_CIF_ISP_MODULE_AFC (1U << 11)
36/* Auto White Balancing */
37#define RKISP1_CIF_ISP_MODULE_AWB (1U << 12)
38/* Image Effect */
39#define RKISP1_CIF_ISP_MODULE_IE (1U << 13)
40/* Auto Exposure Control */
41#define RKISP1_CIF_ISP_MODULE_AEC (1U << 14)
42/* Wide Dynamic Range */
43#define RKISP1_CIF_ISP_MODULE_WDR (1U << 15)
44/* Denoise Pre-Filter */
45#define RKISP1_CIF_ISP_MODULE_DPF (1U << 16)
46/* Denoise Pre-Filter Strength */
47#define RKISP1_CIF_ISP_MODULE_DPF_STRENGTH (1U << 17)
48
49#define RKISP1_CIF_ISP_CTK_COEFF_MAX 0x100
50#define RKISP1_CIF_ISP_CTK_OFFSET_MAX 0x800
51
52#define RKISP1_CIF_ISP_AE_MEAN_MAX 25
53#define RKISP1_CIF_ISP_HIST_BIN_N_MAX 16
54#define RKISP1_CIF_ISP_AFM_MAX_WINDOWS 3
55#define RKISP1_CIF_ISP_DEGAMMA_CURVE_SIZE 17
56
57#define RKISP1_CIF_ISP_BDM_MAX_TH 0xff
58
59/*
60 * Black level compensation
61 */
62/* maximum value for horizontal start address */
63#define RKISP1_CIF_ISP_BLS_START_H_MAX 0x00000fff
64/* maximum value for horizontal stop address */
65#define RKISP1_CIF_ISP_BLS_STOP_H_MAX 0x00000fff
66/* maximum value for vertical start address */
67#define RKISP1_CIF_ISP_BLS_START_V_MAX 0x00000fff
68/* maximum value for vertical stop address */
69#define RKISP1_CIF_ISP_BLS_STOP_V_MAX 0x00000fff
70/* maximum is 2^18 = 262144*/
71#define RKISP1_CIF_ISP_BLS_SAMPLES_MAX 0x00000012
72/* maximum value for fixed black level */
73#define RKISP1_CIF_ISP_BLS_FIX_SUB_MAX 0x00000fff
74/* minimum value for fixed black level */
75#define RKISP1_CIF_ISP_BLS_FIX_SUB_MIN 0xfffff000
76/* 13 bit range (signed)*/
77#define RKISP1_CIF_ISP_BLS_FIX_MASK 0x00001fff
78
79/*
80 * Automatic white balance measurements
81 */
82#define RKISP1_CIF_ISP_AWB_MAX_GRID 1
83#define RKISP1_CIF_ISP_AWB_MAX_FRAMES 7
84
85/*
86 * Gamma out
87 */
88/* Maximum number of color samples supported */
89#define RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES 17
90
91/*
92 * Lens shade correction
93 */
94#define RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE 8
95
96/*
97 * The following matches the tuning process,
98 * not the max capabilities of the chip.
99 */
100#define RKISP1_CIF_ISP_LSC_SAMPLES_MAX 17
101
102/*
103 * Histogram calculation
104 */
105/* Last 3 values unused. */
106#define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE 28
107
108/*
109 * Defect Pixel Cluster Correction
110 */
111#define RKISP1_CIF_ISP_DPCC_METHODS_MAX 3
112
113/*
114 * Denoising pre filter
115 */
116#define RKISP1_CIF_ISP_DPF_MAX_NLF_COEFFS 17
117#define RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS 6
118
119/*
120 * Measurement types
121 */
122#define RKISP1_CIF_ISP_STAT_AWB (1U << 0)
123#define RKISP1_CIF_ISP_STAT_AUTOEXP (1U << 1)
124#define RKISP1_CIF_ISP_STAT_AFM (1U << 2)
125#define RKISP1_CIF_ISP_STAT_HIST (1U << 3)
126
127enum rkisp1_cif_isp_histogram_mode {
128 RKISP1_CIF_ISP_HISTOGRAM_MODE_DISABLE,
129 RKISP1_CIF_ISP_HISTOGRAM_MODE_RGB_COMBINED,
130 RKISP1_CIF_ISP_HISTOGRAM_MODE_R_HISTOGRAM,
131 RKISP1_CIF_ISP_HISTOGRAM_MODE_G_HISTOGRAM,
132 RKISP1_CIF_ISP_HISTOGRAM_MODE_B_HISTOGRAM,
133 RKISP1_CIF_ISP_HISTOGRAM_MODE_Y_HISTOGRAM
134};
135
136enum rkisp1_cif_isp_awb_mode_type {
137 RKISP1_CIF_ISP_AWB_MODE_MANUAL,
138 RKISP1_CIF_ISP_AWB_MODE_RGB,
139 RKISP1_CIF_ISP_AWB_MODE_YCBCR
140};
141
142enum rkisp1_cif_isp_flt_mode {
143 RKISP1_CIF_ISP_FLT_STATIC_MODE,
144 RKISP1_CIF_ISP_FLT_DYNAMIC_MODE
145};
146
147/**
148 * enum rkisp1_cif_isp_exp_ctrl_autostop - stop modes
149 * @RKISP1_CIF_ISP_EXP_CTRL_AUTOSTOP_0: continuous measurement
150 * @RKISP1_CIF_ISP_EXP_CTRL_AUTOSTOP_1: stop measuring after a complete frame
151 */
152enum rkisp1_cif_isp_exp_ctrl_autostop {
153 RKISP1_CIF_ISP_EXP_CTRL_AUTOSTOP_0 = 0,
154 RKISP1_CIF_ISP_EXP_CTRL_AUTOSTOP_1 = 1,
155};
156
157/**
158 * enum rkisp1_cif_isp_exp_meas_mode - Exposure measure mode
159 * @RKISP1_CIF_ISP_EXP_MEASURING_MODE_0: Y = 16 + 0.25R + 0.5G + 0.1094B
160 * @RKISP1_CIF_ISP_EXP_MEASURING_MODE_1: Y = (R + G + B) x (85/256)
161 */
162enum rkisp1_cif_isp_exp_meas_mode {
163 RKISP1_CIF_ISP_EXP_MEASURING_MODE_0,
164 RKISP1_CIF_ISP_EXP_MEASURING_MODE_1,
165};
166
167/*---------- PART1: Input Parameters ------------*/
168
169/**
170 * struct rkisp1_cif_isp_window - measurement window.
171 *
172 * Measurements are calculated per window inside the frame.
173 * This struct represents a window for a measurement.
174 *
175 * @h_offs: the horizontal offset of the window from the left of the frame in pixels.
176 * @v_offs: the vertical offset of the window from the top of the frame in pixels.
177 * @h_size: the horizontal size of the window in pixels
178 * @v_size: the vertical size of the window in pixels.
179 */
180struct rkisp1_cif_isp_window {
181 __u16 h_offs;
182 __u16 v_offs;
183 __u16 h_size;
184 __u16 v_size;
185};
186
187/**
188 * struct rkisp1_cif_isp_bls_fixed_val - BLS fixed subtraction values
189 *
190 * The values will be subtracted from the sensor
191 * values. Therefore a negative value means addition instead of subtraction!
192 *
193 * @r: Fixed (signed!) subtraction value for Bayer pattern R
194 * @gr: Fixed (signed!) subtraction value for Bayer pattern Gr
195 * @gb: Fixed (signed!) subtraction value for Bayer pattern Gb
196 * @b: Fixed (signed!) subtraction value for Bayer pattern B
197 */
198struct rkisp1_cif_isp_bls_fixed_val {
199 __s16 r;
200 __s16 gr;
201 __s16 gb;
202 __s16 b;
203};
204
205/**
206 * struct rkisp1_cif_isp_bls_config - Configuration used by black level subtraction
207 *
208 * @enable_auto: Automatic mode activated means that the measured values
209 * are subtracted. Otherwise the fixed subtraction
210 * values will be subtracted.
211 * @en_windows: enabled window
212 * @bls_window1: Measurement window 1 size
213 * @bls_window2: Measurement window 2 size
214 * @bls_samples: Set amount of measured pixels for each Bayer position
215 * (A, B,C and D) to 2^bls_samples.
216 * @fixed_val: Fixed subtraction values
217 */
218struct rkisp1_cif_isp_bls_config {
219 __u8 enable_auto;
220 __u8 en_windows;
221 struct rkisp1_cif_isp_window bls_window1;
222 struct rkisp1_cif_isp_window bls_window2;
223 __u8 bls_samples;
224 struct rkisp1_cif_isp_bls_fixed_val fixed_val;
225};
226
227/**
228 * struct rkisp1_cif_isp_dpcc_methods_config - Methods Configuration used by DPCC
229 *
230 * Methods Configuration used by Defect Pixel Cluster Correction
231 *
232 * @method: Method enable bits
233 * @line_thresh: Line threshold
234 * @line_mad_fac: Line MAD factor
235 * @pg_fac: Peak gradient factor
236 * @rnd_thresh: Rank Neighbor Difference threshold
237 * @rg_fac: Rank gradient factor
238 */
239struct rkisp1_cif_isp_dpcc_methods_config {
240 __u32 method;
241 __u32 line_thresh;
242 __u32 line_mad_fac;
243 __u32 pg_fac;
244 __u32 rnd_thresh;
245 __u32 rg_fac;
246};
247
248/**
249 * struct rkisp1_cif_isp_dpcc_config - Configuration used by DPCC
250 *
251 * Configuration used by Defect Pixel Cluster Correction
252 *
253 * @mode: dpcc output mode
254 * @output_mode: whether use hard coded methods
255 * @set_use: stage1 methods set
256 * @methods: methods config
257 * @ro_limits: rank order limits
258 * @rnd_offs: differential rank offsets for rank neighbor difference
259 */
260struct rkisp1_cif_isp_dpcc_config {
261 __u32 mode;
262 __u32 output_mode;
263 __u32 set_use;
264 struct rkisp1_cif_isp_dpcc_methods_config methods[RKISP1_CIF_ISP_DPCC_METHODS_MAX];
265 __u32 ro_limits;
266 __u32 rnd_offs;
267};
268
269/**
270 * struct rkisp1_cif_isp_gamma_corr_curve - gamma curve point definition y-axis (output).
271 *
272 * The reset values define a linear curve which has the same effect as bypass. Reset values are:
273 * gamma_y[0] = 0x0000, gamma_y[1] = 0x0100, ... gamma_y[15] = 0x0f00, gamma_y[16] = 0xfff
274 *
275 * @gamma_y: the values for the y-axis of gamma curve points. Each value is 12 bit.
276 */
277struct rkisp1_cif_isp_gamma_corr_curve {
278 __u16 gamma_y[RKISP1_CIF_ISP_DEGAMMA_CURVE_SIZE];
279};
280
281/**
282 * struct rkisp1_cif_isp_gamma_curve_x_axis_pnts - De-Gamma Curve definition x increments
283 * (sampling points). gamma_dx0 is for the lower samples (1-8), gamma_dx1 is for the
284 * higher samples (9-16). The reset values for both fields is 0x44444444. This means
285 * that each sample is 4 units away from the previous one on the x-axis.
286 *
287 * @gamma_dx0: gamma curve sample points definitions. Bits 0:2 for sample 1. Bit 3 unused.
288 * Bits 4:6 for sample 2. bit 7 unused ... Bits 28:30 for sample 8. Bit 31 unused
289 * @gamma_dx1: gamma curve sample points definitions. Bits 0:2 for sample 9. Bit 3 unused.
290 * Bits 4:6 for sample 10. bit 7 unused ... Bits 28:30 for sample 16. Bit 31 unused
291 */
292struct rkisp1_cif_isp_gamma_curve_x_axis_pnts {
293 __u32 gamma_dx0;
294 __u32 gamma_dx1;
295};
296
297/**
298 * struct rkisp1_cif_isp_sdg_config - Configuration used by sensor degamma
299 *
300 * @curve_r: gamma curve point definition axis for red
301 * @curve_g: gamma curve point definition axis for green
302 * @curve_b: gamma curve point definition axis for blue
303 * @xa_pnts: x axis increments
304 */
305struct rkisp1_cif_isp_sdg_config {
306 struct rkisp1_cif_isp_gamma_corr_curve curve_r;
307 struct rkisp1_cif_isp_gamma_corr_curve curve_g;
308 struct rkisp1_cif_isp_gamma_corr_curve curve_b;
309 struct rkisp1_cif_isp_gamma_curve_x_axis_pnts xa_pnts;
310};
311
312/**
313 * struct rkisp1_cif_isp_lsc_config - Configuration used by Lens shading correction
314 *
315 * @r_data_tbl: sample table red
316 * @gr_data_tbl: sample table green (red)
317 * @gb_data_tbl: sample table green (blue)
318 * @b_data_tbl: sample table blue
319 * @x_grad_tbl: gradient table x
320 * @y_grad_tbl: gradient table y
321 * @x_size_tbl: size table x
322 * @y_size_tbl: size table y
323 * @config_width: not used at the moment
324 * @config_height: not used at the moment
325 */
326struct rkisp1_cif_isp_lsc_config {
327 __u16 r_data_tbl[RKISP1_CIF_ISP_LSC_SAMPLES_MAX][RKISP1_CIF_ISP_LSC_SAMPLES_MAX];
328 __u16 gr_data_tbl[RKISP1_CIF_ISP_LSC_SAMPLES_MAX][RKISP1_CIF_ISP_LSC_SAMPLES_MAX];
329 __u16 gb_data_tbl[RKISP1_CIF_ISP_LSC_SAMPLES_MAX][RKISP1_CIF_ISP_LSC_SAMPLES_MAX];
330 __u16 b_data_tbl[RKISP1_CIF_ISP_LSC_SAMPLES_MAX][RKISP1_CIF_ISP_LSC_SAMPLES_MAX];
331
332 __u16 x_grad_tbl[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];
333 __u16 y_grad_tbl[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];
334
335 __u16 x_size_tbl[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];
336 __u16 y_size_tbl[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];
337 __u16 config_width;
338 __u16 config_height;
339};
340
341/**
342 * struct rkisp1_cif_isp_ie_config - Configuration used by image effects
343 *
344 * @effect: values from 'enum v4l2_colorfx'. Possible values are: V4L2_COLORFX_SEPIA,
345 * V4L2_COLORFX_SET_CBCR, V4L2_COLORFX_AQUA, V4L2_COLORFX_EMBOSS,
346 * V4L2_COLORFX_SKETCH, V4L2_COLORFX_BW, V4L2_COLORFX_NEGATIVE
347 * @color_sel: bits 0:2 - colors bitmask (001 - blue, 010 - green, 100 - red).
348 * bits 8:15 - Threshold value of the RGB colors for the color selection effect.
349 * @eff_mat_1: 3x3 Matrix Coefficients for Emboss Effect 1
350 * @eff_mat_2: 3x3 Matrix Coefficients for Emboss Effect 2
351 * @eff_mat_3: 3x3 Matrix Coefficients for Emboss 3/Sketch 1
352 * @eff_mat_4: 3x3 Matrix Coefficients for Sketch Effect 2
353 * @eff_mat_5: 3x3 Matrix Coefficients for Sketch Effect 3
354 * @eff_tint: Chrominance increment values of tint (used for sepia effect)
355 */
356struct rkisp1_cif_isp_ie_config {
357 __u16 effect;
358 __u16 color_sel;
359 __u16 eff_mat_1;
360 __u16 eff_mat_2;
361 __u16 eff_mat_3;
362 __u16 eff_mat_4;
363 __u16 eff_mat_5;
364 __u16 eff_tint;
365};
366
367/**
368 * struct rkisp1_cif_isp_cproc_config - Configuration used by Color Processing
369 *
370 * @c_out_range: Chrominance pixel clipping range at output.
371 * (0 for limit, 1 for full)
372 * @y_in_range: Luminance pixel clipping range at output.
373 * @y_out_range: Luminance pixel clipping range at output.
374 * @contrast: 00~ff, 0.0~1.992
375 * @brightness: 80~7F, -128~+127
376 * @sat: saturation, 00~FF, 0.0~1.992
377 * @hue: 80~7F, -90~+87.188
378 */
379struct rkisp1_cif_isp_cproc_config {
380 __u8 c_out_range;
381 __u8 y_in_range;
382 __u8 y_out_range;
383 __u8 contrast;
384 __u8 brightness;
385 __u8 sat;
386 __u8 hue;
387};
388
389/**
390 * struct rkisp1_cif_isp_awb_meas_config - Configuration used by auto white balance
391 *
392 * @awb_mode: the awb meas mode. From enum rkisp1_cif_isp_awb_mode_type.
393 * @awb_wnd: white balance measurement window (in pixels)
394 * @max_y: only pixels values < max_y contribute to awb measurement, set to 0
395 * to disable this feature
396 * @min_y: only pixels values > min_y contribute to awb measurement
397 * @max_csum: Chrominance sum maximum value, only consider pixels with Cb+Cr,
398 * smaller than threshold for awb measurements
399 * @min_c: Chrominance minimum value, only consider pixels with Cb/Cr
400 * each greater than threshold value for awb measurements
401 * @frames: number of frames - 1 used for mean value calculation
402 * (ucFrames=0 means 1 Frame)
403 * @awb_ref_cr: reference Cr value for AWB regulation, target for AWB
404 * @awb_ref_cb: reference Cb value for AWB regulation, target for AWB
405 * @enable_ymax_cmp: enable Y_MAX compare (Not valid in RGB measurement mode.)
406 */
407struct rkisp1_cif_isp_awb_meas_config {
408 /*
409 * Note: currently the h and v offsets are mapped to grid offsets
410 */
411 struct rkisp1_cif_isp_window awb_wnd;
412 __u32 awb_mode;
413 __u8 max_y;
414 __u8 min_y;
415 __u8 max_csum;
416 __u8 min_c;
417 __u8 frames;
418 __u8 awb_ref_cr;
419 __u8 awb_ref_cb;
420 __u8 enable_ymax_cmp;
421};
422
423/**
424 * struct rkisp1_cif_isp_awb_gain_config - Configuration used by auto white balance gain
425 *
426 * All fields in this struct are 10 bit, where:
427 * 0x100h = 1, unsigned integer value, range 0 to 4 with 8 bit fractional part.
428 *
429 * out_data_x = ( AWB_GAIN_X * in_data + 128) >> 8
430 *
431 * @gain_red: gain value for red component.
432 * @gain_green_r: gain value for green component in red line.
433 * @gain_blue: gain value for blue component.
434 * @gain_green_b: gain value for green component in blue line.
435 */
436struct rkisp1_cif_isp_awb_gain_config {
437 __u16 gain_red;
438 __u16 gain_green_r;
439 __u16 gain_blue;
440 __u16 gain_green_b;
441};
442
443/**
444 * struct rkisp1_cif_isp_flt_config - Configuration used by ISP filtering
445 *
446 * All 4 threshold fields (thresh_*) are 10 bits.
447 * All 6 factor fields (fac_*) are 6 bits.
448 *
449 * @mode: ISP_FILT_MODE register fields (from enum rkisp1_cif_isp_flt_mode)
450 * @grn_stage1: Green filter stage 1 select (range 0x0...0x8)
451 * @chr_h_mode: Chroma filter horizontal mode
452 * @chr_v_mode: Chroma filter vertical mode
453 * @thresh_bl0: If thresh_bl1 < sum_grad < thresh_bl0 then fac_bl0 is selected (blurring th)
454 * @thresh_bl1: If sum_grad < thresh_bl1 then fac_bl1 is selected (blurring th)
455 * @thresh_sh0: If thresh_sh0 < sum_grad < thresh_sh1 then thresh_sh0 is selected (sharpening th)
456 * @thresh_sh1: If thresh_sh1 < sum_grad then thresh_sh1 is selected (sharpening th)
457 * @lum_weight: Parameters for luminance weight function.
458 * @fac_sh1: filter factor for sharp1 level
459 * @fac_sh0: filter factor for sharp0 level
460 * @fac_mid: filter factor for mid level and for static filter mode
461 * @fac_bl0: filter factor for blur 0 level
462 * @fac_bl1: filter factor for blur 1 level (max blur)
463 */
464struct rkisp1_cif_isp_flt_config {
465 __u32 mode;
466 __u8 grn_stage1;
467 __u8 chr_h_mode;
468 __u8 chr_v_mode;
469 __u32 thresh_bl0;
470 __u32 thresh_bl1;
471 __u32 thresh_sh0;
472 __u32 thresh_sh1;
473 __u32 lum_weight;
474 __u32 fac_sh1;
475 __u32 fac_sh0;
476 __u32 fac_mid;
477 __u32 fac_bl0;
478 __u32 fac_bl1;
479};
480
481/**
482 * struct rkisp1_cif_isp_bdm_config - Configuration used by Bayer DeMosaic
483 *
484 * @demosaic_th: threshold for bayer demosaicing texture detection
485 */
486struct rkisp1_cif_isp_bdm_config {
487 __u8 demosaic_th;
488};
489
490/**
491 * struct rkisp1_cif_isp_ctk_config - Configuration used by Cross Talk correction
492 *
493 * @coeff: color correction matrix. Values are 11-bit signed fixed-point numbers with 4 bit integer
494 * and 7 bit fractional part, ranging from -8 (0x400) to +7.992 (0x3FF). 0 is
495 * represented by 0x000 and a coefficient value of 1 as 0x080.
496 * @ct_offset: Red, Green, Blue offsets for the crosstalk correction matrix
497 */
498struct rkisp1_cif_isp_ctk_config {
499 __u16 coeff[3][3];
500 __u16 ct_offset[3];
501};
502
503enum rkisp1_cif_isp_goc_mode {
504 RKISP1_CIF_ISP_GOC_MODE_LOGARITHMIC,
505 RKISP1_CIF_ISP_GOC_MODE_EQUIDISTANT
506};
507
508/**
509 * struct rkisp1_cif_isp_goc_config - Configuration used by Gamma Out correction
510 *
511 * @mode: goc mode (from enum rkisp1_cif_isp_goc_mode)
512 * @gamma_y: gamma out curve y-axis for all color components
513 */
514struct rkisp1_cif_isp_goc_config {
515 __u32 mode;
516 __u16 gamma_y[RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES];
517};
518
519/**
520 * struct rkisp1_cif_isp_hst_config - Configuration used by Histogram
521 *
522 * @mode: histogram mode (from enum rkisp1_cif_isp_histogram_mode)
523 * @histogram_predivider: process every stepsize pixel, all other pixels are
524 * skipped
525 * @meas_window: coordinates of the measure window
526 * @hist_weight: weighting factor for sub-windows
527 */
528struct rkisp1_cif_isp_hst_config {
529 __u32 mode;
530 __u8 histogram_predivider;
531 struct rkisp1_cif_isp_window meas_window;
532 __u8 hist_weight[RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE];
533};
534
535/**
536 * struct rkisp1_cif_isp_aec_config - Configuration used by Auto Exposure Control
537 *
538 * @mode: Exposure measure mode (from enum rkisp1_cif_isp_exp_meas_mode)
539 * @autostop: stop mode (from enum rkisp1_cif_isp_exp_ctrl_autostop)
540 * @meas_window: coordinates of the measure window
541 */
542struct rkisp1_cif_isp_aec_config {
543 __u32 mode;
544 __u32 autostop;
545 struct rkisp1_cif_isp_window meas_window;
546};
547
548/**
549 * struct rkisp1_cif_isp_afc_config - Configuration used by Auto Focus Control
550 *
551 * @num_afm_win: max RKISP1_CIF_ISP_AFM_MAX_WINDOWS
552 * @afm_win: coordinates of the meas window
553 * @thres: threshold used for minimizing the influence of noise
554 * @var_shift: the number of bits for the shift operation at the end of the
555 * calculation chain.
556 */
557struct rkisp1_cif_isp_afc_config {
558 __u8 num_afm_win;
559 struct rkisp1_cif_isp_window afm_win[RKISP1_CIF_ISP_AFM_MAX_WINDOWS];
560 __u32 thres;
561 __u32 var_shift;
562};
563
564/**
565 * enum rkisp1_cif_isp_dpf_gain_usage - dpf gain usage
566 * @RKISP1_CIF_ISP_DPF_GAIN_USAGE_DISABLED: don't use any gains in preprocessing stage
567 * @RKISP1_CIF_ISP_DPF_GAIN_USAGE_NF_GAINS: use only the noise function gains from
568 * registers DPF_NF_GAIN_R, ...
569 * @RKISP1_CIF_ISP_DPF_GAIN_USAGE_LSC_GAINS: use only the gains from LSC module
570 * @RKISP1_CIF_ISP_DPF_GAIN_USAGE_NF_LSC_GAINS: use the noise function gains and the
571 * gains from LSC module
572 * @RKISP1_CIF_ISP_DPF_GAIN_USAGE_AWB_GAINS: use only the gains from AWB module
573 * @RKISP1_CIF_ISP_DPF_GAIN_USAGE_AWB_LSC_GAINS: use the gains from AWB and LSC module
574 * @RKISP1_CIF_ISP_DPF_GAIN_USAGE_MAX: upper border (only for an internal evaluation)
575 */
576enum rkisp1_cif_isp_dpf_gain_usage {
577 RKISP1_CIF_ISP_DPF_GAIN_USAGE_DISABLED,
578 RKISP1_CIF_ISP_DPF_GAIN_USAGE_NF_GAINS,
579 RKISP1_CIF_ISP_DPF_GAIN_USAGE_LSC_GAINS,
580 RKISP1_CIF_ISP_DPF_GAIN_USAGE_NF_LSC_GAINS,
581 RKISP1_CIF_ISP_DPF_GAIN_USAGE_AWB_GAINS,
582 RKISP1_CIF_ISP_DPF_GAIN_USAGE_AWB_LSC_GAINS,
583 RKISP1_CIF_ISP_DPF_GAIN_USAGE_MAX
584};
585
586/**
587 * enum rkisp1_cif_isp_dpf_rb_filtersize - Red and blue filter sizes
588 * @RKISP1_CIF_ISP_DPF_RB_FILTERSIZE_13x9: red and blue filter kernel size 13x9
589 * (means 7x5 active pixel)
590 * @RKISP1_CIF_ISP_DPF_RB_FILTERSIZE_9x9: red and blue filter kernel size 9x9
591 * (means 5x5 active pixel)
592 */
593enum rkisp1_cif_isp_dpf_rb_filtersize {
594 RKISP1_CIF_ISP_DPF_RB_FILTERSIZE_13x9,
595 RKISP1_CIF_ISP_DPF_RB_FILTERSIZE_9x9,
596};
597
598/**
599 * enum rkisp1_cif_isp_dpf_nll_scale_mode - dpf noise level scale mode
600 * @RKISP1_CIF_ISP_NLL_SCALE_LINEAR: use a linear scaling
601 * @RKISP1_CIF_ISP_NLL_SCALE_LOGARITHMIC: use a logarithmic scaling
602 */
603enum rkisp1_cif_isp_dpf_nll_scale_mode {
604 RKISP1_CIF_ISP_NLL_SCALE_LINEAR,
605 RKISP1_CIF_ISP_NLL_SCALE_LOGARITHMIC,
606};
607
608/**
609 * struct rkisp1_cif_isp_dpf_nll - Noise level lookup
610 *
611 * @coeff: Noise level Lookup coefficient
612 * @scale_mode: dpf noise level scale mode (from enum rkisp1_cif_isp_dpf_nll_scale_mode)
613 */
614struct rkisp1_cif_isp_dpf_nll {
615 __u16 coeff[RKISP1_CIF_ISP_DPF_MAX_NLF_COEFFS];
616 __u32 scale_mode;
617};
618
619/**
620 * struct rkisp1_cif_isp_dpf_rb_flt - Red blue filter config
621 *
622 * @fltsize: The filter size for the red and blue pixels
623 * (from enum rkisp1_cif_isp_dpf_rb_filtersize)
624 * @spatial_coeff: Spatial weights
625 * @r_enable: enable filter processing for red pixels
626 * @b_enable: enable filter processing for blue pixels
627 */
628struct rkisp1_cif_isp_dpf_rb_flt {
629 __u32 fltsize;
630 __u8 spatial_coeff[RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS];
631 __u8 r_enable;
632 __u8 b_enable;
633};
634
635/**
636 * struct rkisp1_cif_isp_dpf_g_flt - Green filter Configuration
637 *
638 * @spatial_coeff: Spatial weights
639 * @gr_enable: enable filter processing for green pixels in green/red lines
640 * @gb_enable: enable filter processing for green pixels in green/blue lines
641 */
642struct rkisp1_cif_isp_dpf_g_flt {
643 __u8 spatial_coeff[RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS];
644 __u8 gr_enable;
645 __u8 gb_enable;
646};
647
648/**
649 * struct rkisp1_cif_isp_dpf_gain - Noise function Configuration
650 *
651 * @mode: dpf gain usage (from enum rkisp1_cif_isp_dpf_gain_usage)
652 * @nf_r_gain: Noise function Gain that replaces the AWB gain for red pixels
653 * @nf_b_gain: Noise function Gain that replaces the AWB gain for blue pixels
654 * @nf_gr_gain: Noise function Gain that replaces the AWB gain
655 * for green pixels in a red line
656 * @nf_gb_gain: Noise function Gain that replaces the AWB gain
657 * for green pixels in a blue line
658 */
659struct rkisp1_cif_isp_dpf_gain {
660 __u32 mode;
661 __u16 nf_r_gain;
662 __u16 nf_b_gain;
663 __u16 nf_gr_gain;
664 __u16 nf_gb_gain;
665};
666
667/**
668 * struct rkisp1_cif_isp_dpf_config - Configuration used by De-noising pre-filter
669 *
670 * @gain: noise function gain
671 * @g_flt: green filter config
672 * @rb_flt: red blue filter config
673 * @nll: noise level lookup
674 */
675struct rkisp1_cif_isp_dpf_config {
676 struct rkisp1_cif_isp_dpf_gain gain;
677 struct rkisp1_cif_isp_dpf_g_flt g_flt;
678 struct rkisp1_cif_isp_dpf_rb_flt rb_flt;
679 struct rkisp1_cif_isp_dpf_nll nll;
680};
681
682/**
683 * struct rkisp1_cif_isp_dpf_strength_config - strength of the filter
684 *
685 * @r: filter strength of the RED filter
686 * @g: filter strength of the GREEN filter
687 * @b: filter strength of the BLUE filter
688 */
689struct rkisp1_cif_isp_dpf_strength_config {
690 __u8 r;
691 __u8 g;
692 __u8 b;
693};
694
695/**
696 * struct rkisp1_cif_isp_isp_other_cfg - Parameters for some blocks in rockchip isp1
697 *
698 * @dpcc_config: Defect Pixel Cluster Correction config
699 * @bls_config: Black Level Subtraction config
700 * @sdg_config: sensor degamma config
701 * @lsc_config: Lens Shade config
702 * @awb_gain_config: Auto White balance gain config
703 * @flt_config: filter config
704 * @bdm_config: demosaic config
705 * @ctk_config: cross talk config
706 * @goc_config: gamma out config
707 * @bls_config: black level subtraction config
708 * @dpf_config: De-noising pre-filter config
709 * @dpf_strength_config: dpf strength config
710 * @cproc_config: color process config
711 * @ie_config: image effects config
712 */
713struct rkisp1_cif_isp_isp_other_cfg {
714 struct rkisp1_cif_isp_dpcc_config dpcc_config;
715 struct rkisp1_cif_isp_bls_config bls_config;
716 struct rkisp1_cif_isp_sdg_config sdg_config;
717 struct rkisp1_cif_isp_lsc_config lsc_config;
718 struct rkisp1_cif_isp_awb_gain_config awb_gain_config;
719 struct rkisp1_cif_isp_flt_config flt_config;
720 struct rkisp1_cif_isp_bdm_config bdm_config;
721 struct rkisp1_cif_isp_ctk_config ctk_config;
722 struct rkisp1_cif_isp_goc_config goc_config;
723 struct rkisp1_cif_isp_dpf_config dpf_config;
724 struct rkisp1_cif_isp_dpf_strength_config dpf_strength_config;
725 struct rkisp1_cif_isp_cproc_config cproc_config;
726 struct rkisp1_cif_isp_ie_config ie_config;
727};
728
729/**
730 * struct rkisp1_cif_isp_isp_meas_cfg - Rockchip ISP1 Measure Parameters
731 *
732 * @awb_meas_config: auto white balance config
733 * @hst_config: histogram config
734 * @aec_config: auto exposure config
735 * @afc_config: auto focus config
736 */
737struct rkisp1_cif_isp_isp_meas_cfg {
738 struct rkisp1_cif_isp_awb_meas_config awb_meas_config;
739 struct rkisp1_cif_isp_hst_config hst_config;
740 struct rkisp1_cif_isp_aec_config aec_config;
741 struct rkisp1_cif_isp_afc_config afc_config;
742};
743
744/**
745 * struct rkisp1_params_cfg - Rockchip ISP1 Input Parameters Meta Data
746 *
747 * @module_en_update: mask the enable bits of which module should be updated
748 * @module_ens: mask the enable value of each module, only update the module
749 * which correspond bit was set in module_en_update
750 * @module_cfg_update: mask the config bits of which module should be updated
751 * @meas: measurement config
752 * @others: other config
753 */
754struct rkisp1_params_cfg {
755 __u32 module_en_update;
756 __u32 module_ens;
757 __u32 module_cfg_update;
758
759 struct rkisp1_cif_isp_isp_meas_cfg meas;
760 struct rkisp1_cif_isp_isp_other_cfg others;
761};
762
763/*---------- PART2: Measurement Statistics ------------*/
764
765/**
766 * struct rkisp1_cif_isp_awb_meas - AWB measured values
767 *
768 * @cnt: White pixel count, number of "white pixels" found during last
769 * measurement
770 * @mean_y_or_g: Mean value of Y within window and frames,
771 * Green if RGB is selected.
772 * @mean_cb_or_b: Mean value of Cb within window and frames,
773 * Blue if RGB is selected.
774 * @mean_cr_or_r: Mean value of Cr within window and frames,
775 * Red if RGB is selected.
776 */
777struct rkisp1_cif_isp_awb_meas {
778 __u32 cnt;
779 __u8 mean_y_or_g;
780 __u8 mean_cb_or_b;
781 __u8 mean_cr_or_r;
782};
783
784/**
785 * struct rkisp1_cif_isp_awb_stat - statistics automatic white balance data
786 *
787 * @awb_mean: Mean measured data
788 */
789struct rkisp1_cif_isp_awb_stat {
790 struct rkisp1_cif_isp_awb_meas awb_mean[RKISP1_CIF_ISP_AWB_MAX_GRID];
791};
792
793/**
794 * struct rkisp1_cif_isp_bls_meas_val - BLS measured values
795 *
796 * @meas_r: Mean measured value for Bayer pattern R
797 * @meas_gr: Mean measured value for Bayer pattern Gr
798 * @meas_gb: Mean measured value for Bayer pattern Gb
799 * @meas_b: Mean measured value for Bayer pattern B
800 */
801struct rkisp1_cif_isp_bls_meas_val {
802 __u16 meas_r;
803 __u16 meas_gr;
804 __u16 meas_gb;
805 __u16 meas_b;
806};
807
808/**
809 * struct rkisp1_cif_isp_ae_stat - statistics auto exposure data
810 *
811 * @exp_mean: Mean luminance value of block xx
812 * @bls_val: BLS measured values
813 *
814 * Image is divided into 5x5 blocks.
815 */
816struct rkisp1_cif_isp_ae_stat {
817 __u8 exp_mean[RKISP1_CIF_ISP_AE_MEAN_MAX];
818 struct rkisp1_cif_isp_bls_meas_val bls_val;
819};
820
821/**
822 * struct rkisp1_cif_isp_af_meas_val - AF measured values
823 *
824 * @sum: sharpness value
825 * @lum: luminance value
826 */
827struct rkisp1_cif_isp_af_meas_val {
828 __u32 sum;
829 __u32 lum;
830};
831
832/**
833 * struct rkisp1_cif_isp_af_stat - statistics auto focus data
834 *
835 * @window: AF measured value of window x
836 *
837 * The module measures the sharpness in 3 windows of selectable size via
838 * register settings(ISP_AFM_*_A/B/C)
839 */
840struct rkisp1_cif_isp_af_stat {
841 struct rkisp1_cif_isp_af_meas_val window[RKISP1_CIF_ISP_AFM_MAX_WINDOWS];
842};
843
844/**
845 * struct rkisp1_cif_isp_hist_stat - statistics histogram data
846 *
847 * @hist_bins: measured bin counters
848 *
849 * Measurement window divided into 25 sub-windows, set
850 * with ISP_HIST_XXX
851 */
852struct rkisp1_cif_isp_hist_stat {
853 __u16 hist_bins[RKISP1_CIF_ISP_HIST_BIN_N_MAX];
854};
855
856/**
857 * struct rkisp1_cif_isp_stat - Rockchip ISP1 Statistics Data
858 *
859 * @awb: statistics data for automatic white balance
860 * @ae: statistics data for auto exposure
861 * @af: statistics data for auto focus
862 * @hist: statistics histogram data
863 */
864struct rkisp1_cif_isp_stat {
865 struct rkisp1_cif_isp_awb_stat awb;
866 struct rkisp1_cif_isp_ae_stat ae;
867 struct rkisp1_cif_isp_af_stat af;
868 struct rkisp1_cif_isp_hist_stat hist;
869};
870
871/**
872 * struct rkisp1_stat_buffer - Rockchip ISP1 Statistics Meta Data
873 *
874 * @meas_type: measurement types (RKISP1_CIF_ISP_STAT_* definitions)
875 * @frame_id: frame ID for sync
876 * @params: statistics data
877 */
878struct rkisp1_stat_buffer {
879 __u32 meas_type;
880 __u32 frame_id;
881 struct rkisp1_cif_isp_stat params;
882};
883
884#endif /* _UAPI_RKISP1_CONFIG_H */
include/uapi/linux/v4l2-controls.h+673−200
@@ -54,7 +54,7 @@ · 53 unmodified lines
54 54
55/* Control classes */55/* Control classes */
56#define V4L2_CTRL_CLASS_USER 0x00980000 /* Old-style 'user' controls */56#define V4L2_CTRL_CLASS_USER 0x00980000 /* Old-style 'user' controls */
57#define V4L2_CTRL_CLASS_MPEG 0x00990000 /* MPEG-compression controls */57#define V4L2_CTRL_CLASS_CODEC 0x00990000 /* Stateful codec controls */
58#define V4L2_CTRL_CLASS_CAMERA 0x009a0000 /* Camera class controls */58#define V4L2_CTRL_CLASS_CAMERA 0x009a0000 /* Camera class controls */
59#define V4L2_CTRL_CLASS_FM_TX 0x009b0000 /* FM Modulator controls */59#define V4L2_CTRL_CLASS_FM_TX 0x009b0000 /* FM Modulator controls */
60#define V4L2_CTRL_CLASS_FLASH 0x009c0000 /* Camera flash controls */60#define V4L2_CTRL_CLASS_FLASH 0x009c0000 /* Camera flash controls */
@@ -65,6 +65,7 @@ · 4 unmodified lines
65#define V4L2_CTRL_CLASS_FM_RX 0x00a10000 /* FM Receiver controls */65#define V4L2_CTRL_CLASS_FM_RX 0x00a10000 /* FM Receiver controls */
66#define V4L2_CTRL_CLASS_RF_TUNER 0x00a20000 /* RF tuner controls */66#define V4L2_CTRL_CLASS_RF_TUNER 0x00a20000 /* RF tuner controls */
67#define V4L2_CTRL_CLASS_DETECT 0x00a30000 /* Detection controls */67#define V4L2_CTRL_CLASS_DETECT 0x00a30000 /* Detection controls */
68#define V4L2_CTRL_CLASS_CODEC_STATELESS 0x00a40000 /* Stateless codecs controls */
68 69
69/* User-class control IDs */70/* User-class control IDs */
70 71
@@ -198,15 +199,21 @@ enum v4l2_colorfx { · 127 unmodified lines
198 */199 */
199#define V4L2_CID_USER_ATMEL_ISC_BASE (V4L2_CID_USER_BASE + 0x10c0)200#define V4L2_CID_USER_ATMEL_ISC_BASE (V4L2_CID_USER_BASE + 0x10c0)
200 201
202/*
203 * The base for the CODA driver controls.
204 * We reserve 16 controls for this driver.
205 */
206#define V4L2_CID_USER_CODA_BASE (V4L2_CID_USER_BASE + 0x10e0)
207
201/* MPEG-class control IDs */208/* MPEG-class control IDs */
202/* The MPEG controls are applicable to all codec controls209/* The MPEG controls are applicable to all codec controls
203 * and the 'MPEG' part of the define is historical */210 * and the 'MPEG' part of the define is historical */
204 211
205#define V4L2_CID_MPEG_BASE (V4L2_CTRL_CLASS_MPEG | 0x900)212#define V4L2_CID_CODEC_BASE (V4L2_CTRL_CLASS_CODEC | 0x900)
206#define V4L2_CID_MPEG_CLASS (V4L2_CTRL_CLASS_MPEG | 1)213#define V4L2_CID_CODEC_CLASS (V4L2_CTRL_CLASS_CODEC | 1)
207 214
208/* MPEG streams, specific to multiplexed streams */215/* MPEG streams, specific to multiplexed streams */
209#define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_MPEG_BASE+0)216#define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_CODEC_BASE+0)
210enum v4l2_mpeg_stream_type {217enum v4l2_mpeg_stream_type {
211 V4L2_MPEG_STREAM_TYPE_MPEG2_PS = 0, /* MPEG-2 program stream */218 V4L2_MPEG_STREAM_TYPE_MPEG2_PS = 0, /* MPEG-2 program stream */
212 V4L2_MPEG_STREAM_TYPE_MPEG2_TS = 1, /* MPEG-2 transport stream */219 V4L2_MPEG_STREAM_TYPE_MPEG2_TS = 1, /* MPEG-2 transport stream */
@@ -215,26 +222,26 @@ enum v4l2_mpeg_stream_type { · 2 unmodified lines
215 V4L2_MPEG_STREAM_TYPE_MPEG1_VCD = 4, /* MPEG-1 VCD-compatible stream */222 V4L2_MPEG_STREAM_TYPE_MPEG1_VCD = 4, /* MPEG-1 VCD-compatible stream */
216 V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD = 5, /* MPEG-2 SVCD-compatible stream */223 V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD = 5, /* MPEG-2 SVCD-compatible stream */
217};224};
218#define V4L2_CID_MPEG_STREAM_PID_PMT (V4L2_CID_MPEG_BASE+1)225#define V4L2_CID_MPEG_STREAM_PID_PMT (V4L2_CID_CODEC_BASE+1)
219#define V4L2_CID_MPEG_STREAM_PID_AUDIO (V4L2_CID_MPEG_BASE+2)226#define V4L2_CID_MPEG_STREAM_PID_AUDIO (V4L2_CID_CODEC_BASE+2)
220#define V4L2_CID_MPEG_STREAM_PID_VIDEO (V4L2_CID_MPEG_BASE+3)227#define V4L2_CID_MPEG_STREAM_PID_VIDEO (V4L2_CID_CODEC_BASE+3)
221#define V4L2_CID_MPEG_STREAM_PID_PCR (V4L2_CID_MPEG_BASE+4)228#define V4L2_CID_MPEG_STREAM_PID_PCR (V4L2_CID_CODEC_BASE+4)
222#define V4L2_CID_MPEG_STREAM_PES_ID_AUDIO (V4L2_CID_MPEG_BASE+5)229#define V4L2_CID_MPEG_STREAM_PES_ID_AUDIO (V4L2_CID_CODEC_BASE+5)
223#define V4L2_CID_MPEG_STREAM_PES_ID_VIDEO (V4L2_CID_MPEG_BASE+6)230#define V4L2_CID_MPEG_STREAM_PES_ID_VIDEO (V4L2_CID_CODEC_BASE+6)
224#define V4L2_CID_MPEG_STREAM_VBI_FMT (V4L2_CID_MPEG_BASE+7)231#define V4L2_CID_MPEG_STREAM_VBI_FMT (V4L2_CID_CODEC_BASE+7)
225enum v4l2_mpeg_stream_vbi_fmt {232enum v4l2_mpeg_stream_vbi_fmt {
226 V4L2_MPEG_STREAM_VBI_FMT_NONE = 0, /* No VBI in the MPEG stream */233 V4L2_MPEG_STREAM_VBI_FMT_NONE = 0, /* No VBI in the MPEG stream */
227 V4L2_MPEG_STREAM_VBI_FMT_IVTV = 1, /* VBI in private packets, IVTV format */234 V4L2_MPEG_STREAM_VBI_FMT_IVTV = 1, /* VBI in private packets, IVTV format */
228};235};
229 236
230/* MPEG audio controls specific to multiplexed streams */237/* MPEG audio controls specific to multiplexed streams */
231#define V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ (V4L2_CID_MPEG_BASE+100)238#define V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ (V4L2_CID_CODEC_BASE+100)
232enum v4l2_mpeg_audio_sampling_freq {239enum v4l2_mpeg_audio_sampling_freq {
233 V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100 = 0,240 V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100 = 0,
234 V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000 = 1,241 V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000 = 1,
235 V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000 = 2,242 V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000 = 2,
236};243};
237#define V4L2_CID_MPEG_AUDIO_ENCODING (V4L2_CID_MPEG_BASE+101)244#define V4L2_CID_MPEG_AUDIO_ENCODING (V4L2_CID_CODEC_BASE+101)
238enum v4l2_mpeg_audio_encoding {245enum v4l2_mpeg_audio_encoding {
239 V4L2_MPEG_AUDIO_ENCODING_LAYER_1 = 0,246 V4L2_MPEG_AUDIO_ENCODING_LAYER_1 = 0,
240 V4L2_MPEG_AUDIO_ENCODING_LAYER_2 = 1,247 V4L2_MPEG_AUDIO_ENCODING_LAYER_2 = 1,
@@ -242,7 +249,7 @@ enum v4l2_mpeg_audio_encoding { · 1 unmodified line
242 V4L2_MPEG_AUDIO_ENCODING_AAC = 3,249 V4L2_MPEG_AUDIO_ENCODING_AAC = 3,
243 V4L2_MPEG_AUDIO_ENCODING_AC3 = 4,250 V4L2_MPEG_AUDIO_ENCODING_AC3 = 4,
244};251};
245#define V4L2_CID_MPEG_AUDIO_L1_BITRATE (V4L2_CID_MPEG_BASE+102)252#define V4L2_CID_MPEG_AUDIO_L1_BITRATE (V4L2_CID_CODEC_BASE+102)
246enum v4l2_mpeg_audio_l1_bitrate {253enum v4l2_mpeg_audio_l1_bitrate {
247 V4L2_MPEG_AUDIO_L1_BITRATE_32K = 0,254 V4L2_MPEG_AUDIO_L1_BITRATE_32K = 0,
248 V4L2_MPEG_AUDIO_L1_BITRATE_64K = 1,255 V4L2_MPEG_AUDIO_L1_BITRATE_64K = 1,
@@ -259,7 +266,7 @@ enum v4l2_mpeg_audio_l1_bitrate { · 10 unmodified lines
259 V4L2_MPEG_AUDIO_L1_BITRATE_416K = 12,266 V4L2_MPEG_AUDIO_L1_BITRATE_416K = 12,
260 V4L2_MPEG_AUDIO_L1_BITRATE_448K = 13,267 V4L2_MPEG_AUDIO_L1_BITRATE_448K = 13,
261};268};
262#define V4L2_CID_MPEG_AUDIO_L2_BITRATE (V4L2_CID_MPEG_BASE+103)269#define V4L2_CID_MPEG_AUDIO_L2_BITRATE (V4L2_CID_CODEC_BASE+103)
263enum v4l2_mpeg_audio_l2_bitrate {270enum v4l2_mpeg_audio_l2_bitrate {
264 V4L2_MPEG_AUDIO_L2_BITRATE_32K = 0,271 V4L2_MPEG_AUDIO_L2_BITRATE_32K = 0,
265 V4L2_MPEG_AUDIO_L2_BITRATE_48K = 1,272 V4L2_MPEG_AUDIO_L2_BITRATE_48K = 1,
@@ -276,7 +283,7 @@ enum v4l2_mpeg_audio_l2_bitrate { · 10 unmodified lines
276 V4L2_MPEG_AUDIO_L2_BITRATE_320K = 12,283 V4L2_MPEG_AUDIO_L2_BITRATE_320K = 12,
277 V4L2_MPEG_AUDIO_L2_BITRATE_384K = 13,284 V4L2_MPEG_AUDIO_L2_BITRATE_384K = 13,
278};285};
279#define V4L2_CID_MPEG_AUDIO_L3_BITRATE (V4L2_CID_MPEG_BASE+104)286#define V4L2_CID_MPEG_AUDIO_L3_BITRATE (V4L2_CID_CODEC_BASE+104)
280enum v4l2_mpeg_audio_l3_bitrate {287enum v4l2_mpeg_audio_l3_bitrate {
281 V4L2_MPEG_AUDIO_L3_BITRATE_32K = 0,288 V4L2_MPEG_AUDIO_L3_BITRATE_32K = 0,
282 V4L2_MPEG_AUDIO_L3_BITRATE_40K = 1,289 V4L2_MPEG_AUDIO_L3_BITRATE_40K = 1,
@@ -293,34 +300,34 @@ enum v4l2_mpeg_audio_l3_bitrate { · 10 unmodified lines
293 V4L2_MPEG_AUDIO_L3_BITRATE_256K = 12,300 V4L2_MPEG_AUDIO_L3_BITRATE_256K = 12,
294 V4L2_MPEG_AUDIO_L3_BITRATE_320K = 13,301 V4L2_MPEG_AUDIO_L3_BITRATE_320K = 13,
295};302};
296#define V4L2_CID_MPEG_AUDIO_MODE (V4L2_CID_MPEG_BASE+105)303#define V4L2_CID_MPEG_AUDIO_MODE (V4L2_CID_CODEC_BASE+105)
297enum v4l2_mpeg_audio_mode {304enum v4l2_mpeg_audio_mode {
298 V4L2_MPEG_AUDIO_MODE_STEREO = 0,305 V4L2_MPEG_AUDIO_MODE_STEREO = 0,
299 V4L2_MPEG_AUDIO_MODE_JOINT_STEREO = 1,306 V4L2_MPEG_AUDIO_MODE_JOINT_STEREO = 1,
300 V4L2_MPEG_AUDIO_MODE_DUAL = 2,307 V4L2_MPEG_AUDIO_MODE_DUAL = 2,
301 V4L2_MPEG_AUDIO_MODE_MONO = 3,308 V4L2_MPEG_AUDIO_MODE_MONO = 3,
302};309};
303#define V4L2_CID_MPEG_AUDIO_MODE_EXTENSION (V4L2_CID_MPEG_BASE+106)310#define V4L2_CID_MPEG_AUDIO_MODE_EXTENSION (V4L2_CID_CODEC_BASE+106)
304enum v4l2_mpeg_audio_mode_extension {311enum v4l2_mpeg_audio_mode_extension {
305 V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4 = 0,312 V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4 = 0,
306 V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8 = 1,313 V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8 = 1,
307 V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12 = 2,314 V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12 = 2,
308 V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16 = 3,315 V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16 = 3,
309};316};
310#define V4L2_CID_MPEG_AUDIO_EMPHASIS (V4L2_CID_MPEG_BASE+107)317#define V4L2_CID_MPEG_AUDIO_EMPHASIS (V4L2_CID_CODEC_BASE+107)
311enum v4l2_mpeg_audio_emphasis {318enum v4l2_mpeg_audio_emphasis {
312 V4L2_MPEG_AUDIO_EMPHASIS_NONE = 0,319 V4L2_MPEG_AUDIO_EMPHASIS_NONE = 0,
313 V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS = 1,320 V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS = 1,
314 V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17 = 2,321 V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17 = 2,
315};322};
316#define V4L2_CID_MPEG_AUDIO_CRC (V4L2_CID_MPEG_BASE+108)323#define V4L2_CID_MPEG_AUDIO_CRC (V4L2_CID_CODEC_BASE+108)
317enum v4l2_mpeg_audio_crc {324enum v4l2_mpeg_audio_crc {
318 V4L2_MPEG_AUDIO_CRC_NONE = 0,325 V4L2_MPEG_AUDIO_CRC_NONE = 0,
319 V4L2_MPEG_AUDIO_CRC_CRC16 = 1,326 V4L2_MPEG_AUDIO_CRC_CRC16 = 1,
320};327};
321#define V4L2_CID_MPEG_AUDIO_MUTE (V4L2_CID_MPEG_BASE+109)328#define V4L2_CID_MPEG_AUDIO_MUTE (V4L2_CID_CODEC_BASE+109)
322#define V4L2_CID_MPEG_AUDIO_AAC_BITRATE (V4L2_CID_MPEG_BASE+110)329#define V4L2_CID_MPEG_AUDIO_AAC_BITRATE (V4L2_CID_CODEC_BASE+110)
323#define V4L2_CID_MPEG_AUDIO_AC3_BITRATE (V4L2_CID_MPEG_BASE+111)330#define V4L2_CID_MPEG_AUDIO_AC3_BITRATE (V4L2_CID_CODEC_BASE+111)
324enum v4l2_mpeg_audio_ac3_bitrate {331enum v4l2_mpeg_audio_ac3_bitrate {
325 V4L2_MPEG_AUDIO_AC3_BITRATE_32K = 0,332 V4L2_MPEG_AUDIO_AC3_BITRATE_32K = 0,
326 V4L2_MPEG_AUDIO_AC3_BITRATE_40K = 1,333 V4L2_MPEG_AUDIO_AC3_BITRATE_40K = 1,
@@ -342,7 +349,7 @@ enum v4l2_mpeg_audio_ac3_bitrate { · 15 unmodified lines
342 V4L2_MPEG_AUDIO_AC3_BITRATE_576K = 17,349 V4L2_MPEG_AUDIO_AC3_BITRATE_576K = 17,
343 V4L2_MPEG_AUDIO_AC3_BITRATE_640K = 18,350 V4L2_MPEG_AUDIO_AC3_BITRATE_640K = 18,
344};351};
345#define V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK (V4L2_CID_MPEG_BASE+112)352#define V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK (V4L2_CID_CODEC_BASE+112)
346enum v4l2_mpeg_audio_dec_playback {353enum v4l2_mpeg_audio_dec_playback {
347 V4L2_MPEG_AUDIO_DEC_PLAYBACK_AUTO = 0,354 V4L2_MPEG_AUDIO_DEC_PLAYBACK_AUTO = 0,
348 V4L2_MPEG_AUDIO_DEC_PLAYBACK_STEREO = 1,355 V4L2_MPEG_AUDIO_DEC_PLAYBACK_STEREO = 1,
@@ -351,52 +358,52 @@ enum v4l2_mpeg_audio_dec_playback { · 2 unmodified lines
351 V4L2_MPEG_AUDIO_DEC_PLAYBACK_MONO = 4,358 V4L2_MPEG_AUDIO_DEC_PLAYBACK_MONO = 4,
352 V4L2_MPEG_AUDIO_DEC_PLAYBACK_SWAPPED_STEREO = 5,359 V4L2_MPEG_AUDIO_DEC_PLAYBACK_SWAPPED_STEREO = 5,
353};360};
354#define V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK (V4L2_CID_MPEG_BASE+113)361#define V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK (V4L2_CID_CODEC_BASE+113)
355 362
356/* MPEG video controls specific to multiplexed streams */363/* MPEG video controls specific to multiplexed streams */
357#define V4L2_CID_MPEG_VIDEO_ENCODING (V4L2_CID_MPEG_BASE+200)364#define V4L2_CID_MPEG_VIDEO_ENCODING (V4L2_CID_CODEC_BASE+200)
358enum v4l2_mpeg_video_encoding {365enum v4l2_mpeg_video_encoding {
359 V4L2_MPEG_VIDEO_ENCODING_MPEG_1 = 0,366 V4L2_MPEG_VIDEO_ENCODING_MPEG_1 = 0,
360 V4L2_MPEG_VIDEO_ENCODING_MPEG_2 = 1,367 V4L2_MPEG_VIDEO_ENCODING_MPEG_2 = 1,
361 V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC = 2,368 V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC = 2,
362};369};
363#define V4L2_CID_MPEG_VIDEO_ASPECT (V4L2_CID_MPEG_BASE+201)370#define V4L2_CID_MPEG_VIDEO_ASPECT (V4L2_CID_CODEC_BASE+201)
364enum v4l2_mpeg_video_aspect {371enum v4l2_mpeg_video_aspect {
365 V4L2_MPEG_VIDEO_ASPECT_1x1 = 0,372 V4L2_MPEG_VIDEO_ASPECT_1x1 = 0,
366 V4L2_MPEG_VIDEO_ASPECT_4x3 = 1,373 V4L2_MPEG_VIDEO_ASPECT_4x3 = 1,
367 V4L2_MPEG_VIDEO_ASPECT_16x9 = 2,374 V4L2_MPEG_VIDEO_ASPECT_16x9 = 2,
368 V4L2_MPEG_VIDEO_ASPECT_221x100 = 3,375 V4L2_MPEG_VIDEO_ASPECT_221x100 = 3,
369};376};
370#define V4L2_CID_MPEG_VIDEO_B_FRAMES (V4L2_CID_MPEG_BASE+202)377#define V4L2_CID_MPEG_VIDEO_B_FRAMES (V4L2_CID_CODEC_BASE+202)
371#define V4L2_CID_MPEG_VIDEO_GOP_SIZE (V4L2_CID_MPEG_BASE+203)378#define V4L2_CID_MPEG_VIDEO_GOP_SIZE (V4L2_CID_CODEC_BASE+203)
372#define V4L2_CID_MPEG_VIDEO_GOP_CLOSURE (V4L2_CID_MPEG_BASE+204)379#define V4L2_CID_MPEG_VIDEO_GOP_CLOSURE (V4L2_CID_CODEC_BASE+204)
373#define V4L2_CID_MPEG_VIDEO_PULLDOWN (V4L2_CID_MPEG_BASE+205)380#define V4L2_CID_MPEG_VIDEO_PULLDOWN (V4L2_CID_CODEC_BASE+205)
374#define V4L2_CID_MPEG_VIDEO_BITRATE_MODE (V4L2_CID_MPEG_BASE+206)381#define V4L2_CID_MPEG_VIDEO_BITRATE_MODE (V4L2_CID_CODEC_BASE+206)
375enum v4l2_mpeg_video_bitrate_mode {382enum v4l2_mpeg_video_bitrate_mode {
376 V4L2_MPEG_VIDEO_BITRATE_MODE_VBR = 0,383 V4L2_MPEG_VIDEO_BITRATE_MODE_VBR = 0,
377 V4L2_MPEG_VIDEO_BITRATE_MODE_CBR = 1,384 V4L2_MPEG_VIDEO_BITRATE_MODE_CBR = 1,
378 V4L2_MPEG_VIDEO_BITRATE_MODE_CQ = 2,385 V4L2_MPEG_VIDEO_BITRATE_MODE_CQ = 2,
379};386};
380#define V4L2_CID_MPEG_VIDEO_BITRATE (V4L2_CID_MPEG_BASE+207)387#define V4L2_CID_MPEG_VIDEO_BITRATE (V4L2_CID_CODEC_BASE+207)
381#define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK (V4L2_CID_MPEG_BASE+208)388#define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK (V4L2_CID_CODEC_BASE+208)
382#define V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (V4L2_CID_MPEG_BASE+209)389#define V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (V4L2_CID_CODEC_BASE+209)
383#define V4L2_CID_MPEG_VIDEO_MUTE (V4L2_CID_MPEG_BASE+210)390#define V4L2_CID_MPEG_VIDEO_MUTE (V4L2_CID_CODEC_BASE+210)
384#define V4L2_CID_MPEG_VIDEO_MUTE_YUV (V4L2_CID_MPEG_BASE+211)391#define V4L2_CID_MPEG_VIDEO_MUTE_YUV (V4L2_CID_CODEC_BASE+211)
385#define V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE (V4L2_CID_MPEG_BASE+212)392#define V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE (V4L2_CID_CODEC_BASE+212)
386#define V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER (V4L2_CID_MPEG_BASE+213)393#define V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER (V4L2_CID_CODEC_BASE+213)
387#define V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB (V4L2_CID_MPEG_BASE+214)394#define V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB (V4L2_CID_CODEC_BASE+214)
388#define V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE (V4L2_CID_MPEG_BASE+215)395#define V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE (V4L2_CID_CODEC_BASE+215)
389#define V4L2_CID_MPEG_VIDEO_HEADER_MODE (V4L2_CID_MPEG_BASE+216)396#define V4L2_CID_MPEG_VIDEO_HEADER_MODE (V4L2_CID_CODEC_BASE+216)
390enum v4l2_mpeg_video_header_mode {397enum v4l2_mpeg_video_header_mode {
391 V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE = 0,398 V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE = 0,
392 V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME = 1,399 V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME = 1,
393 400
394};401};
395#define V4L2_CID_MPEG_VIDEO_MAX_REF_PIC (V4L2_CID_MPEG_BASE+217)402#define V4L2_CID_MPEG_VIDEO_MAX_REF_PIC (V4L2_CID_CODEC_BASE+217)
396#define V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE (V4L2_CID_MPEG_BASE+218)403#define V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE (V4L2_CID_CODEC_BASE+218)
397#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES (V4L2_CID_MPEG_BASE+219)404#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES (V4L2_CID_CODEC_BASE+219)
398#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB (V4L2_CID_MPEG_BASE+220)405#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB (V4L2_CID_CODEC_BASE+220)
399#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE (V4L2_CID_MPEG_BASE+221)406#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE (V4L2_CID_CODEC_BASE+221)
400enum v4l2_mpeg_video_multi_slice_mode {407enum v4l2_mpeg_video_multi_slice_mode {
401 V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE = 0,408 V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE = 0,
402 V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_MB = 1,409 V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_MB = 1,
@@ -407,24 +414,24 @@ enum v4l2_mpeg_video_multi_slice_mode { · 4 unmodified lines
407 V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_BYTES = 2,414 V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_BYTES = 2,
408#endif415#endif
409};416};
410#define V4L2_CID_MPEG_VIDEO_VBV_SIZE (V4L2_CID_MPEG_BASE+222)417#define V4L2_CID_MPEG_VIDEO_VBV_SIZE (V4L2_CID_CODEC_BASE+222)
411#define V4L2_CID_MPEG_VIDEO_DEC_PTS (V4L2_CID_MPEG_BASE+223)418#define V4L2_CID_MPEG_VIDEO_DEC_PTS (V4L2_CID_CODEC_BASE+223)
412#define V4L2_CID_MPEG_VIDEO_DEC_FRAME (V4L2_CID_MPEG_BASE+224)419#define V4L2_CID_MPEG_VIDEO_DEC_FRAME (V4L2_CID_CODEC_BASE+224)
413#define V4L2_CID_MPEG_VIDEO_VBV_DELAY (V4L2_CID_MPEG_BASE+225)420#define V4L2_CID_MPEG_VIDEO_VBV_DELAY (V4L2_CID_CODEC_BASE+225)
414#define V4L2_CID_MPEG_VIDEO_REPEAT_SEQ_HEADER (V4L2_CID_MPEG_BASE+226)421#define V4L2_CID_MPEG_VIDEO_REPEAT_SEQ_HEADER (V4L2_CID_CODEC_BASE+226)
415#define V4L2_CID_MPEG_VIDEO_MV_H_SEARCH_RANGE (V4L2_CID_MPEG_BASE+227)422#define V4L2_CID_MPEG_VIDEO_MV_H_SEARCH_RANGE (V4L2_CID_CODEC_BASE+227)
416#define V4L2_CID_MPEG_VIDEO_MV_V_SEARCH_RANGE (V4L2_CID_MPEG_BASE+228)423#define V4L2_CID_MPEG_VIDEO_MV_V_SEARCH_RANGE (V4L2_CID_CODEC_BASE+228)
417#define V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME (V4L2_CID_MPEG_BASE+229)424#define V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME (V4L2_CID_CODEC_BASE+229)
418 425
419/* CIDs for the MPEG-2 Part 2 (H.262) codec */426/* CIDs for the MPEG-2 Part 2 (H.262) codec */
420#define V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL (V4L2_CID_MPEG_BASE+270)427#define V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL (V4L2_CID_CODEC_BASE+270)
421enum v4l2_mpeg_video_mpeg2_level {428enum v4l2_mpeg_video_mpeg2_level {
422 V4L2_MPEG_VIDEO_MPEG2_LEVEL_LOW = 0,429 V4L2_MPEG_VIDEO_MPEG2_LEVEL_LOW = 0,
423 V4L2_MPEG_VIDEO_MPEG2_LEVEL_MAIN = 1,430 V4L2_MPEG_VIDEO_MPEG2_LEVEL_MAIN = 1,
424 V4L2_MPEG_VIDEO_MPEG2_LEVEL_HIGH_1440 = 2,431 V4L2_MPEG_VIDEO_MPEG2_LEVEL_HIGH_1440 = 2,
425 V4L2_MPEG_VIDEO_MPEG2_LEVEL_HIGH = 3,432 V4L2_MPEG_VIDEO_MPEG2_LEVEL_HIGH = 3,
426};433};
427#define V4L2_CID_MPEG_VIDEO_MPEG2_PROFILE (V4L2_CID_MPEG_BASE+271)434#define V4L2_CID_MPEG_VIDEO_MPEG2_PROFILE (V4L2_CID_CODEC_BASE+271)
428enum v4l2_mpeg_video_mpeg2_profile {435enum v4l2_mpeg_video_mpeg2_profile {
429 V4L2_MPEG_VIDEO_MPEG2_PROFILE_SIMPLE = 0,436 V4L2_MPEG_VIDEO_MPEG2_PROFILE_SIMPLE = 0,
430 V4L2_MPEG_VIDEO_MPEG2_PROFILE_MAIN = 1,437 V4L2_MPEG_VIDEO_MPEG2_PROFILE_MAIN = 1,
@@ -435,28 +442,28 @@ enum v4l2_mpeg_video_mpeg2_profile { · 4 unmodified lines
435};442};
436 443
437/* CIDs for the FWHT codec as used by the vicodec driver. */444/* CIDs for the FWHT codec as used by the vicodec driver. */
438#define V4L2_CID_FWHT_I_FRAME_QP (V4L2_CID_MPEG_BASE + 290)445#define V4L2_CID_FWHT_I_FRAME_QP (V4L2_CID_CODEC_BASE + 290)
439#define V4L2_CID_FWHT_P_FRAME_QP (V4L2_CID_MPEG_BASE + 291)446#define V4L2_CID_FWHT_P_FRAME_QP (V4L2_CID_CODEC_BASE + 291)
440 447
441#define V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP (V4L2_CID_MPEG_BASE+300)448#define V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP (V4L2_CID_CODEC_BASE+300)
442#define V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP (V4L2_CID_MPEG_BASE+301)449#define V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP (V4L2_CID_CODEC_BASE+301)
443#define V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP (V4L2_CID_MPEG_BASE+302)450#define V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP (V4L2_CID_CODEC_BASE+302)
444#define V4L2_CID_MPEG_VIDEO_H263_MIN_QP (V4L2_CID_MPEG_BASE+303)451#define V4L2_CID_MPEG_VIDEO_H263_MIN_QP (V4L2_CID_CODEC_BASE+303)
445#define V4L2_CID_MPEG_VIDEO_H263_MAX_QP (V4L2_CID_MPEG_BASE+304)452#define V4L2_CID_MPEG_VIDEO_H263_MAX_QP (V4L2_CID_CODEC_BASE+304)
446#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP (V4L2_CID_MPEG_BASE+350)453#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP (V4L2_CID_CODEC_BASE+350)
447#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP (V4L2_CID_MPEG_BASE+351)454#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP (V4L2_CID_CODEC_BASE+351)
448#define V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP (V4L2_CID_MPEG_BASE+352)455#define V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP (V4L2_CID_CODEC_BASE+352)
449#define V4L2_CID_MPEG_VIDEO_H264_MIN_QP (V4L2_CID_MPEG_BASE+353)456#define V4L2_CID_MPEG_VIDEO_H264_MIN_QP (V4L2_CID_CODEC_BASE+353)
450#define V4L2_CID_MPEG_VIDEO_H264_MAX_QP (V4L2_CID_MPEG_BASE+354)457#define V4L2_CID_MPEG_VIDEO_H264_MAX_QP (V4L2_CID_CODEC_BASE+354)
451#define V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM (V4L2_CID_MPEG_BASE+355)458#define V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM (V4L2_CID_CODEC_BASE+355)
452#define V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE (V4L2_CID_MPEG_BASE+356)459#define V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE (V4L2_CID_CODEC_BASE+356)
453#define V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE (V4L2_CID_MPEG_BASE+357)460#define V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE (V4L2_CID_CODEC_BASE+357)
454enum v4l2_mpeg_video_h264_entropy_mode {461enum v4l2_mpeg_video_h264_entropy_mode {
455 V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC = 0,462 V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC = 0,
456 V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC = 1,463 V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC = 1,
457};464};
458#define V4L2_CID_MPEG_VIDEO_H264_I_PERIOD (V4L2_CID_MPEG_BASE+358)465#define V4L2_CID_MPEG_VIDEO_H264_I_PERIOD (V4L2_CID_CODEC_BASE+358)
459#define V4L2_CID_MPEG_VIDEO_H264_LEVEL (V4L2_CID_MPEG_BASE+359)466#define V4L2_CID_MPEG_VIDEO_H264_LEVEL (V4L2_CID_CODEC_BASE+359)
460enum v4l2_mpeg_video_h264_level {467enum v4l2_mpeg_video_h264_level {
461 V4L2_MPEG_VIDEO_H264_LEVEL_1_0 = 0,468 V4L2_MPEG_VIDEO_H264_LEVEL_1_0 = 0,
462 V4L2_MPEG_VIDEO_H264_LEVEL_1B = 1,469 V4L2_MPEG_VIDEO_H264_LEVEL_1B = 1,
@@ -479,15 +486,15 @@ enum v4l2_mpeg_video_h264_level { · 16 unmodified lines
479 V4L2_MPEG_VIDEO_H264_LEVEL_6_1 = 18,486 V4L2_MPEG_VIDEO_H264_LEVEL_6_1 = 18,
480 V4L2_MPEG_VIDEO_H264_LEVEL_6_2 = 19,487 V4L2_MPEG_VIDEO_H264_LEVEL_6_2 = 19,
481};488};
482#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA (V4L2_CID_MPEG_BASE+360)489#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA (V4L2_CID_CODEC_BASE+360)
483#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA (V4L2_CID_MPEG_BASE+361)490#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA (V4L2_CID_CODEC_BASE+361)
484#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE (V4L2_CID_MPEG_BASE+362)491#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE (V4L2_CID_CODEC_BASE+362)
485enum v4l2_mpeg_video_h264_loop_filter_mode {492enum v4l2_mpeg_video_h264_loop_filter_mode {
486 V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED = 0,493 V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED = 0,
487 V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED = 1,494 V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED = 1,
488 V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY = 2,495 V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY = 2,
489};496};
490#define V4L2_CID_MPEG_VIDEO_H264_PROFILE (V4L2_CID_MPEG_BASE+363)497#define V4L2_CID_MPEG_VIDEO_H264_PROFILE (V4L2_CID_CODEC_BASE+363)
491enum v4l2_mpeg_video_h264_profile {498enum v4l2_mpeg_video_h264_profile {
492 V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE = 0,499 V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE = 0,
493 V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE = 1,500 V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE = 1,
@@ -508,10 +515,10 @@ enum v4l2_mpeg_video_h264_profile { · 14 unmodified lines
508 V4L2_MPEG_VIDEO_H264_PROFILE_MULTIVIEW_HIGH = 16,515 V4L2_MPEG_VIDEO_H264_PROFILE_MULTIVIEW_HIGH = 16,
509 V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH = 17,516 V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH = 17,
510};517};
511#define V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_HEIGHT (V4L2_CID_MPEG_BASE+364)518#define V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_HEIGHT (V4L2_CID_CODEC_BASE+364)
512#define V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_WIDTH (V4L2_CID_MPEG_BASE+365)519#define V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_WIDTH (V4L2_CID_CODEC_BASE+365)
513#define V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_ENABLE (V4L2_CID_MPEG_BASE+366)520#define V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_ENABLE (V4L2_CID_CODEC_BASE+366)
514#define V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC (V4L2_CID_MPEG_BASE+367)521#define V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC (V4L2_CID_CODEC_BASE+367)
515enum v4l2_mpeg_video_h264_vui_sar_idc {522enum v4l2_mpeg_video_h264_vui_sar_idc {
516 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_UNSPECIFIED = 0,523 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_UNSPECIFIED = 0,
517 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_1x1 = 1,524 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_1x1 = 1,
@@ -532,9 +539,9 @@ enum v4l2_mpeg_video_h264_vui_sar_idc { · 14 unmodified lines
532 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_2x1 = 16,539 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_2x1 = 16,
533 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_EXTENDED = 17,540 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_EXTENDED = 17,
534};541};
535#define V4L2_CID_MPEG_VIDEO_H264_SEI_FRAME_PACKING (V4L2_CID_MPEG_BASE+368)542#define V4L2_CID_MPEG_VIDEO_H264_SEI_FRAME_PACKING (V4L2_CID_CODEC_BASE+368)
536#define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_CURRENT_FRAME_0 (V4L2_CID_MPEG_BASE+369)543#define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_CURRENT_FRAME_0 (V4L2_CID_CODEC_BASE+369)
537#define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE (V4L2_CID_MPEG_BASE+370)544#define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE (V4L2_CID_CODEC_BASE+370)
538enum v4l2_mpeg_video_h264_sei_fp_arrangement_type {545enum v4l2_mpeg_video_h264_sei_fp_arrangement_type {
539 V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_CHECKERBOARD = 0,546 V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_CHECKERBOARD = 0,
540 V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_COLUMN = 1,547 V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_COLUMN = 1,
@@ -543,8 +550,8 @@ enum v4l2_mpeg_video_h264_sei_fp_arrangement_type { · 2 unmodified lines
543 V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TOP_BOTTOM = 4,550 V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TOP_BOTTOM = 4,
544 V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TEMPORAL = 5,551 V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TEMPORAL = 5,
545};552};
546#define V4L2_CID_MPEG_VIDEO_H264_FMO (V4L2_CID_MPEG_BASE+371)553#define V4L2_CID_MPEG_VIDEO_H264_FMO (V4L2_CID_CODEC_BASE+371)
547#define V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE (V4L2_CID_MPEG_BASE+372)554#define V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE (V4L2_CID_CODEC_BASE+372)
548enum v4l2_mpeg_video_h264_fmo_map_type {555enum v4l2_mpeg_video_h264_fmo_map_type {
549 V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_INTERLEAVED_SLICES = 0,556 V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_INTERLEAVED_SLICES = 0,
550 V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_SCATTERED_SLICES = 1,557 V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_SCATTERED_SLICES = 1,
@@ -554,36 +561,36 @@ enum v4l2_mpeg_video_h264_fmo_map_type { · 3 unmodified lines
554 V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_WIPE_SCAN = 5,561 V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_WIPE_SCAN = 5,
555 V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_EXPLICIT = 6,562 V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_EXPLICIT = 6,
556};563};
557#define V4L2_CID_MPEG_VIDEO_H264_FMO_SLICE_GROUP (V4L2_CID_MPEG_BASE+373)564#define V4L2_CID_MPEG_VIDEO_H264_FMO_SLICE_GROUP (V4L2_CID_CODEC_BASE+373)
558#define V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_DIRECTION (V4L2_CID_MPEG_BASE+374)565#define V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_DIRECTION (V4L2_CID_CODEC_BASE+374)
559enum v4l2_mpeg_video_h264_fmo_change_dir {566enum v4l2_mpeg_video_h264_fmo_change_dir {
560 V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_RIGHT = 0,567 V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_RIGHT = 0,
561 V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_LEFT = 1,568 V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_LEFT = 1,
562};569};
563#define V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_RATE (V4L2_CID_MPEG_BASE+375)570#define V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_RATE (V4L2_CID_CODEC_BASE+375)
564#define V4L2_CID_MPEG_VIDEO_H264_FMO_RUN_LENGTH (V4L2_CID_MPEG_BASE+376)571#define V4L2_CID_MPEG_VIDEO_H264_FMO_RUN_LENGTH (V4L2_CID_CODEC_BASE+376)
565#define V4L2_CID_MPEG_VIDEO_H264_ASO (V4L2_CID_MPEG_BASE+377)572#define V4L2_CID_MPEG_VIDEO_H264_ASO (V4L2_CID_CODEC_BASE+377)
566#define V4L2_CID_MPEG_VIDEO_H264_ASO_SLICE_ORDER (V4L2_CID_MPEG_BASE+378)573#define V4L2_CID_MPEG_VIDEO_H264_ASO_SLICE_ORDER (V4L2_CID_CODEC_BASE+378)
567#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING (V4L2_CID_MPEG_BASE+379)574#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING (V4L2_CID_CODEC_BASE+379)
568#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE (V4L2_CID_MPEG_BASE+380)575#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE (V4L2_CID_CODEC_BASE+380)
569enum v4l2_mpeg_video_h264_hierarchical_coding_type {576enum v4l2_mpeg_video_h264_hierarchical_coding_type {
570 V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B = 0,577 V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B = 0,
571 V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P = 1,578 V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P = 1,
572};579};
573#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER (V4L2_CID_MPEG_BASE+381)580#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER (V4L2_CID_CODEC_BASE+381)
574#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP (V4L2_CID_MPEG_BASE+382)581#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP (V4L2_CID_CODEC_BASE+382)
575#define V4L2_CID_MPEG_VIDEO_H264_CONSTRAINED_INTRA_PREDICTION (V4L2_CID_MPEG_BASE+383)582#define V4L2_CID_MPEG_VIDEO_H264_CONSTRAINED_INTRA_PREDICTION (V4L2_CID_CODEC_BASE+383)
576#define V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET (V4L2_CID_MPEG_BASE+384)583#define V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET (V4L2_CID_CODEC_BASE+384)
577#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP (V4L2_CID_MPEG_BASE+385)584#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP (V4L2_CID_CODEC_BASE+385)
578#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP (V4L2_CID_MPEG_BASE+386)585#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP (V4L2_CID_CODEC_BASE+386)
579#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP (V4L2_CID_MPEG_BASE+387)586#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP (V4L2_CID_CODEC_BASE+387)
580#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP (V4L2_CID_MPEG_BASE+388)587#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP (V4L2_CID_CODEC_BASE+388)
581#define V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP (V4L2_CID_MPEG_BASE+400)588#define V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP (V4L2_CID_CODEC_BASE+400)
582#define V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP (V4L2_CID_MPEG_BASE+401)589#define V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP (V4L2_CID_CODEC_BASE+401)
583#define V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP (V4L2_CID_MPEG_BASE+402)590#define V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP (V4L2_CID_CODEC_BASE+402)
584#define V4L2_CID_MPEG_VIDEO_MPEG4_MIN_QP (V4L2_CID_MPEG_BASE+403)591#define V4L2_CID_MPEG_VIDEO_MPEG4_MIN_QP (V4L2_CID_CODEC_BASE+403)
585#define V4L2_CID_MPEG_VIDEO_MPEG4_MAX_QP (V4L2_CID_MPEG_BASE+404)592#define V4L2_CID_MPEG_VIDEO_MPEG4_MAX_QP (V4L2_CID_CODEC_BASE+404)
586#define V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL (V4L2_CID_MPEG_BASE+405)593#define V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL (V4L2_CID_CODEC_BASE+405)
587enum v4l2_mpeg_video_mpeg4_level {594enum v4l2_mpeg_video_mpeg4_level {
588 V4L2_MPEG_VIDEO_MPEG4_LEVEL_0 = 0,595 V4L2_MPEG_VIDEO_MPEG4_LEVEL_0 = 0,
589 V4L2_MPEG_VIDEO_MPEG4_LEVEL_0B = 1,596 V4L2_MPEG_VIDEO_MPEG4_LEVEL_0B = 1,
@@ -594,7 +601,7 @@ enum v4l2_mpeg_video_mpeg4_level { · 4 unmodified lines
594 V4L2_MPEG_VIDEO_MPEG4_LEVEL_4 = 6,601 V4L2_MPEG_VIDEO_MPEG4_LEVEL_4 = 6,
595 V4L2_MPEG_VIDEO_MPEG4_LEVEL_5 = 7,602 V4L2_MPEG_VIDEO_MPEG4_LEVEL_5 = 7,
596};603};
597#define V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE (V4L2_CID_MPEG_BASE+406)604#define V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE (V4L2_CID_CODEC_BASE+406)
598enum v4l2_mpeg_video_mpeg4_profile {605enum v4l2_mpeg_video_mpeg4_profile {
599 V4L2_MPEG_VIDEO_MPEG4_PROFILE_SIMPLE = 0,606 V4L2_MPEG_VIDEO_MPEG4_PROFILE_SIMPLE = 0,
600 V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_SIMPLE = 1,607 V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_SIMPLE = 1,
@@ -602,40 +609,40 @@ enum v4l2_mpeg_video_mpeg4_profile { · 1 unmodified line
602 V4L2_MPEG_VIDEO_MPEG4_PROFILE_SIMPLE_SCALABLE = 3,609 V4L2_MPEG_VIDEO_MPEG4_PROFILE_SIMPLE_SCALABLE = 3,
603 V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_CODING_EFFICIENCY = 4,610 V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_CODING_EFFICIENCY = 4,
604};611};
605#define V4L2_CID_MPEG_VIDEO_MPEG4_QPEL (V4L2_CID_MPEG_BASE+407)612#define V4L2_CID_MPEG_VIDEO_MPEG4_QPEL (V4L2_CID_CODEC_BASE+407)
606 613
607/* Control IDs for VP8 streams614/* Control IDs for VP8 streams
608 * Although VP8 is not part of MPEG we add these controls to the MPEG class615 * Although VP8 is not part of MPEG we add these controls to the MPEG class
609 * as that class is already handling other video compression standards616 * as that class is already handling other video compression standards
610 */617 */
611#define V4L2_CID_MPEG_VIDEO_VPX_NUM_PARTITIONS (V4L2_CID_MPEG_BASE+500)618#define V4L2_CID_MPEG_VIDEO_VPX_NUM_PARTITIONS (V4L2_CID_CODEC_BASE+500)
612enum v4l2_vp8_num_partitions {619enum v4l2_vp8_num_partitions {
613 V4L2_CID_MPEG_VIDEO_VPX_1_PARTITION = 0,620 V4L2_CID_MPEG_VIDEO_VPX_1_PARTITION = 0,
614 V4L2_CID_MPEG_VIDEO_VPX_2_PARTITIONS = 1,621 V4L2_CID_MPEG_VIDEO_VPX_2_PARTITIONS = 1,
615 V4L2_CID_MPEG_VIDEO_VPX_4_PARTITIONS = 2,622 V4L2_CID_MPEG_VIDEO_VPX_4_PARTITIONS = 2,
616 V4L2_CID_MPEG_VIDEO_VPX_8_PARTITIONS = 3,623 V4L2_CID_MPEG_VIDEO_VPX_8_PARTITIONS = 3,
617};624};
618#define V4L2_CID_MPEG_VIDEO_VPX_IMD_DISABLE_4X4 (V4L2_CID_MPEG_BASE+501)625#define V4L2_CID_MPEG_VIDEO_VPX_IMD_DISABLE_4X4 (V4L2_CID_CODEC_BASE+501)
619#define V4L2_CID_MPEG_VIDEO_VPX_NUM_REF_FRAMES (V4L2_CID_MPEG_BASE+502)626#define V4L2_CID_MPEG_VIDEO_VPX_NUM_REF_FRAMES (V4L2_CID_CODEC_BASE+502)
620enum v4l2_vp8_num_ref_frames {627enum v4l2_vp8_num_ref_frames {
621 V4L2_CID_MPEG_VIDEO_VPX_1_REF_FRAME = 0,628 V4L2_CID_MPEG_VIDEO_VPX_1_REF_FRAME = 0,
622 V4L2_CID_MPEG_VIDEO_VPX_2_REF_FRAME = 1,629 V4L2_CID_MPEG_VIDEO_VPX_2_REF_FRAME = 1,
623 V4L2_CID_MPEG_VIDEO_VPX_3_REF_FRAME = 2,630 V4L2_CID_MPEG_VIDEO_VPX_3_REF_FRAME = 2,
624};631};
625#define V4L2_CID_MPEG_VIDEO_VPX_FILTER_LEVEL (V4L2_CID_MPEG_BASE+503)632#define V4L2_CID_MPEG_VIDEO_VPX_FILTER_LEVEL (V4L2_CID_CODEC_BASE+503)
626#define V4L2_CID_MPEG_VIDEO_VPX_FILTER_SHARPNESS (V4L2_CID_MPEG_BASE+504)633#define V4L2_CID_MPEG_VIDEO_VPX_FILTER_SHARPNESS (V4L2_CID_CODEC_BASE+504)
627#define V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD (V4L2_CID_MPEG_BASE+505)634#define V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD (V4L2_CID_CODEC_BASE+505)
628#define V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL (V4L2_CID_MPEG_BASE+506)635#define V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL (V4L2_CID_CODEC_BASE+506)
629enum v4l2_vp8_golden_frame_sel {636enum v4l2_vp8_golden_frame_sel {
630 V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_PREV = 0,637 V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_PREV = 0,
631 V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_REF_PERIOD = 1,638 V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_REF_PERIOD = 1,
632};639};
633#define V4L2_CID_MPEG_VIDEO_VPX_MIN_QP (V4L2_CID_MPEG_BASE+507)640#define V4L2_CID_MPEG_VIDEO_VPX_MIN_QP (V4L2_CID_CODEC_BASE+507)
634#define V4L2_CID_MPEG_VIDEO_VPX_MAX_QP (V4L2_CID_MPEG_BASE+508)641#define V4L2_CID_MPEG_VIDEO_VPX_MAX_QP (V4L2_CID_CODEC_BASE+508)
635#define V4L2_CID_MPEG_VIDEO_VPX_I_FRAME_QP (V4L2_CID_MPEG_BASE+509)642#define V4L2_CID_MPEG_VIDEO_VPX_I_FRAME_QP (V4L2_CID_CODEC_BASE+509)
636#define V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP (V4L2_CID_MPEG_BASE+510)643#define V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP (V4L2_CID_CODEC_BASE+510)
637 644
638#define V4L2_CID_MPEG_VIDEO_VP8_PROFILE (V4L2_CID_MPEG_BASE+511)645#define V4L2_CID_MPEG_VIDEO_VP8_PROFILE (V4L2_CID_CODEC_BASE+511)
639enum v4l2_mpeg_video_vp8_profile {646enum v4l2_mpeg_video_vp8_profile {
640 V4L2_MPEG_VIDEO_VP8_PROFILE_0 = 0,647 V4L2_MPEG_VIDEO_VP8_PROFILE_0 = 0,
641 V4L2_MPEG_VIDEO_VP8_PROFILE_1 = 1,648 V4L2_MPEG_VIDEO_VP8_PROFILE_1 = 1,
@@ -644,14 +651,14 @@ enum v4l2_mpeg_video_vp8_profile { · 2 unmodified lines
644};651};
645/* Deprecated alias for compatibility reasons. */652/* Deprecated alias for compatibility reasons. */
646#define V4L2_CID_MPEG_VIDEO_VPX_PROFILE V4L2_CID_MPEG_VIDEO_VP8_PROFILE653#define V4L2_CID_MPEG_VIDEO_VPX_PROFILE V4L2_CID_MPEG_VIDEO_VP8_PROFILE
647#define V4L2_CID_MPEG_VIDEO_VP9_PROFILE (V4L2_CID_MPEG_BASE+512)654#define V4L2_CID_MPEG_VIDEO_VP9_PROFILE (V4L2_CID_CODEC_BASE+512)
648enum v4l2_mpeg_video_vp9_profile {655enum v4l2_mpeg_video_vp9_profile {
649 V4L2_MPEG_VIDEO_VP9_PROFILE_0 = 0,656 V4L2_MPEG_VIDEO_VP9_PROFILE_0 = 0,
650 V4L2_MPEG_VIDEO_VP9_PROFILE_1 = 1,657 V4L2_MPEG_VIDEO_VP9_PROFILE_1 = 1,
651 V4L2_MPEG_VIDEO_VP9_PROFILE_2 = 2,658 V4L2_MPEG_VIDEO_VP9_PROFILE_2 = 2,
652 V4L2_MPEG_VIDEO_VP9_PROFILE_3 = 3,659 V4L2_MPEG_VIDEO_VP9_PROFILE_3 = 3,
653};660};
654#define V4L2_CID_MPEG_VIDEO_VP9_LEVEL (V4L2_CID_MPEG_BASE+513)661#define V4L2_CID_MPEG_VIDEO_VP9_LEVEL (V4L2_CID_CODEC_BASE+513)
655enum v4l2_mpeg_video_vp9_level {662enum v4l2_mpeg_video_vp9_level {
656 V4L2_MPEG_VIDEO_VP9_LEVEL_1_0 = 0,663 V4L2_MPEG_VIDEO_VP9_LEVEL_1_0 = 0,
657 V4L2_MPEG_VIDEO_VP9_LEVEL_1_1 = 1,664 V4L2_MPEG_VIDEO_VP9_LEVEL_1_1 = 1,
@@ -671,32 +678,32 @@ enum v4l2_mpeg_video_vp9_level { · 13 unmodified lines
671 678
672/* CIDs for HEVC encoding. */679/* CIDs for HEVC encoding. */
673 680
674#define V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP (V4L2_CID_MPEG_BASE + 600)681#define V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP (V4L2_CID_CODEC_BASE + 600)
675#define V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP (V4L2_CID_MPEG_BASE + 601)682#define V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP (V4L2_CID_CODEC_BASE + 601)
676#define V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP (V4L2_CID_MPEG_BASE + 602)683#define V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP (V4L2_CID_CODEC_BASE + 602)
677#define V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_QP (V4L2_CID_MPEG_BASE + 603)684#define V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_QP (V4L2_CID_CODEC_BASE + 603)
678#define V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP (V4L2_CID_MPEG_BASE + 604)685#define V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP (V4L2_CID_CODEC_BASE + 604)
679#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_QP (V4L2_CID_MPEG_BASE + 605)686#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_QP (V4L2_CID_CODEC_BASE + 605)
680#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_TYPE (V4L2_CID_MPEG_BASE + 606)687#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_TYPE (V4L2_CID_CODEC_BASE + 606)
681enum v4l2_mpeg_video_hevc_hier_coding_type {688enum v4l2_mpeg_video_hevc_hier_coding_type {
682 V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B = 0,689 V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B = 0,
683 V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P = 1,690 V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P = 1,
684};691};
685#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER (V4L2_CID_MPEG_BASE + 607)692#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER (V4L2_CID_CODEC_BASE + 607)
686#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_QP (V4L2_CID_MPEG_BASE + 608)693#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_QP (V4L2_CID_CODEC_BASE + 608)
687#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_QP (V4L2_CID_MPEG_BASE + 609)694#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_QP (V4L2_CID_CODEC_BASE + 609)
688#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_QP (V4L2_CID_MPEG_BASE + 610)695#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_QP (V4L2_CID_CODEC_BASE + 610)
689#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_QP (V4L2_CID_MPEG_BASE + 611)696#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_QP (V4L2_CID_CODEC_BASE + 611)
690#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_QP (V4L2_CID_MPEG_BASE + 612)697#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_QP (V4L2_CID_CODEC_BASE + 612)
691#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_QP (V4L2_CID_MPEG_BASE + 613)698#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_QP (V4L2_CID_CODEC_BASE + 613)
692#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_QP (V4L2_CID_MPEG_BASE + 614)699#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_QP (V4L2_CID_CODEC_BASE + 614)
693#define V4L2_CID_MPEG_VIDEO_HEVC_PROFILE (V4L2_CID_MPEG_BASE + 615)700#define V4L2_CID_MPEG_VIDEO_HEVC_PROFILE (V4L2_CID_CODEC_BASE + 615)
694enum v4l2_mpeg_video_hevc_profile {701enum v4l2_mpeg_video_hevc_profile {
695 V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN = 0,702 V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN = 0,
696 V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE = 1,703 V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE = 1,
697 V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10 = 2,704 V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10 = 2,
698};705};
699#define V4L2_CID_MPEG_VIDEO_HEVC_LEVEL (V4L2_CID_MPEG_BASE + 616)706#define V4L2_CID_MPEG_VIDEO_HEVC_LEVEL (V4L2_CID_CODEC_BASE + 616)
700enum v4l2_mpeg_video_hevc_level {707enum v4l2_mpeg_video_hevc_level {
701 V4L2_MPEG_VIDEO_HEVC_LEVEL_1 = 0,708 V4L2_MPEG_VIDEO_HEVC_LEVEL_1 = 0,
702 V4L2_MPEG_VIDEO_HEVC_LEVEL_2 = 1,709 V4L2_MPEG_VIDEO_HEVC_LEVEL_2 = 1,
@@ -712,56 +719,56 @@ enum v4l2_mpeg_video_hevc_level { · 9 unmodified lines
712 V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1 = 11,719 V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1 = 11,
713 V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2 = 12,720 V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2 = 12,
714};721};
715#define V4L2_CID_MPEG_VIDEO_HEVC_FRAME_RATE_RESOLUTION (V4L2_CID_MPEG_BASE + 617)722#define V4L2_CID_MPEG_VIDEO_HEVC_FRAME_RATE_RESOLUTION (V4L2_CID_CODEC_BASE + 617)
716#define V4L2_CID_MPEG_VIDEO_HEVC_TIER (V4L2_CID_MPEG_BASE + 618)723#define V4L2_CID_MPEG_VIDEO_HEVC_TIER (V4L2_CID_CODEC_BASE + 618)
717enum v4l2_mpeg_video_hevc_tier {724enum v4l2_mpeg_video_hevc_tier {
718 V4L2_MPEG_VIDEO_HEVC_TIER_MAIN = 0,725 V4L2_MPEG_VIDEO_HEVC_TIER_MAIN = 0,
719 V4L2_MPEG_VIDEO_HEVC_TIER_HIGH = 1,726 V4L2_MPEG_VIDEO_HEVC_TIER_HIGH = 1,
720};727};
721#define V4L2_CID_MPEG_VIDEO_HEVC_MAX_PARTITION_DEPTH (V4L2_CID_MPEG_BASE + 619)728#define V4L2_CID_MPEG_VIDEO_HEVC_MAX_PARTITION_DEPTH (V4L2_CID_CODEC_BASE + 619)
722#define V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE (V4L2_CID_MPEG_BASE + 620)729#define V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE (V4L2_CID_CODEC_BASE + 620)
723enum v4l2_cid_mpeg_video_hevc_loop_filter_mode {730enum v4l2_cid_mpeg_video_hevc_loop_filter_mode {
724 V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_DISABLED = 0,731 V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_DISABLED = 0,
725 V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_ENABLED = 1,732 V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_ENABLED = 1,
726 V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY = 2,733 V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY = 2,
727};734};
728#define V4L2_CID_MPEG_VIDEO_HEVC_LF_BETA_OFFSET_DIV2 (V4L2_CID_MPEG_BASE + 621)735#define V4L2_CID_MPEG_VIDEO_HEVC_LF_BETA_OFFSET_DIV2 (V4L2_CID_CODEC_BASE + 621)
729#define V4L2_CID_MPEG_VIDEO_HEVC_LF_TC_OFFSET_DIV2 (V4L2_CID_MPEG_BASE + 622)736#define V4L2_CID_MPEG_VIDEO_HEVC_LF_TC_OFFSET_DIV2 (V4L2_CID_CODEC_BASE + 622)
730#define V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_TYPE (V4L2_CID_MPEG_BASE + 623)737#define V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_TYPE (V4L2_CID_CODEC_BASE + 623)
731enum v4l2_cid_mpeg_video_hevc_refresh_type {738enum v4l2_cid_mpeg_video_hevc_refresh_type {
732 V4L2_MPEG_VIDEO_HEVC_REFRESH_NONE = 0,739 V4L2_MPEG_VIDEO_HEVC_REFRESH_NONE = 0,
733 V4L2_MPEG_VIDEO_HEVC_REFRESH_CRA = 1,740 V4L2_MPEG_VIDEO_HEVC_REFRESH_CRA = 1,
734 V4L2_MPEG_VIDEO_HEVC_REFRESH_IDR = 2,741 V4L2_MPEG_VIDEO_HEVC_REFRESH_IDR = 2,
735};742};
736#define V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_PERIOD (V4L2_CID_MPEG_BASE + 624)743#define V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_PERIOD (V4L2_CID_CODEC_BASE + 624)
737#define V4L2_CID_MPEG_VIDEO_HEVC_LOSSLESS_CU (V4L2_CID_MPEG_BASE + 625)744#define V4L2_CID_MPEG_VIDEO_HEVC_LOSSLESS_CU (V4L2_CID_CODEC_BASE + 625)
738#define V4L2_CID_MPEG_VIDEO_HEVC_CONST_INTRA_PRED (V4L2_CID_MPEG_BASE + 626)745#define V4L2_CID_MPEG_VIDEO_HEVC_CONST_INTRA_PRED (V4L2_CID_CODEC_BASE + 626)
739#define V4L2_CID_MPEG_VIDEO_HEVC_WAVEFRONT (V4L2_CID_MPEG_BASE + 627)746#define V4L2_CID_MPEG_VIDEO_HEVC_WAVEFRONT (V4L2_CID_CODEC_BASE + 627)
740#define V4L2_CID_MPEG_VIDEO_HEVC_GENERAL_PB (V4L2_CID_MPEG_BASE + 628)747#define V4L2_CID_MPEG_VIDEO_HEVC_GENERAL_PB (V4L2_CID_CODEC_BASE + 628)
741#define V4L2_CID_MPEG_VIDEO_HEVC_TEMPORAL_ID (V4L2_CID_MPEG_BASE + 629)748#define V4L2_CID_MPEG_VIDEO_HEVC_TEMPORAL_ID (V4L2_CID_CODEC_BASE + 629)
742#define V4L2_CID_MPEG_VIDEO_HEVC_STRONG_SMOOTHING (V4L2_CID_MPEG_BASE + 630)749#define V4L2_CID_MPEG_VIDEO_HEVC_STRONG_SMOOTHING (V4L2_CID_CODEC_BASE + 630)
743#define V4L2_CID_MPEG_VIDEO_HEVC_MAX_NUM_MERGE_MV_MINUS1 (V4L2_CID_MPEG_BASE + 631)750#define V4L2_CID_MPEG_VIDEO_HEVC_MAX_NUM_MERGE_MV_MINUS1 (V4L2_CID_CODEC_BASE + 631)
744#define V4L2_CID_MPEG_VIDEO_HEVC_INTRA_PU_SPLIT (V4L2_CID_MPEG_BASE + 632)751#define V4L2_CID_MPEG_VIDEO_HEVC_INTRA_PU_SPLIT (V4L2_CID_CODEC_BASE + 632)
745#define V4L2_CID_MPEG_VIDEO_HEVC_TMV_PREDICTION (V4L2_CID_MPEG_BASE + 633)752#define V4L2_CID_MPEG_VIDEO_HEVC_TMV_PREDICTION (V4L2_CID_CODEC_BASE + 633)
746#define V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE (V4L2_CID_MPEG_BASE + 634)753#define V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE (V4L2_CID_CODEC_BASE + 634)
747#define V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD (V4L2_CID_MPEG_BASE + 635)754#define V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD (V4L2_CID_CODEC_BASE + 635)
748enum v4l2_cid_mpeg_video_hevc_size_of_length_field {755enum v4l2_cid_mpeg_video_hevc_size_of_length_field {
749 V4L2_MPEG_VIDEO_HEVC_SIZE_0 = 0,756 V4L2_MPEG_VIDEO_HEVC_SIZE_0 = 0,
750 V4L2_MPEG_VIDEO_HEVC_SIZE_1 = 1,757 V4L2_MPEG_VIDEO_HEVC_SIZE_1 = 1,
751 V4L2_MPEG_VIDEO_HEVC_SIZE_2 = 2,758 V4L2_MPEG_VIDEO_HEVC_SIZE_2 = 2,
752 V4L2_MPEG_VIDEO_HEVC_SIZE_4 = 3,759 V4L2_MPEG_VIDEO_HEVC_SIZE_4 = 3,
753};760};
754#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_BR (V4L2_CID_MPEG_BASE + 636)761#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_BR (V4L2_CID_CODEC_BASE + 636)
755#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_BR (V4L2_CID_MPEG_BASE + 637)762#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_BR (V4L2_CID_CODEC_BASE + 637)
756#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_BR (V4L2_CID_MPEG_BASE + 638)763#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_BR (V4L2_CID_CODEC_BASE + 638)
757#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_BR (V4L2_CID_MPEG_BASE + 639)764#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_BR (V4L2_CID_CODEC_BASE + 639)
758#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_BR (V4L2_CID_MPEG_BASE + 640)765#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_BR (V4L2_CID_CODEC_BASE + 640)
759#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_BR (V4L2_CID_MPEG_BASE + 641)766#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_BR (V4L2_CID_CODEC_BASE + 641)
760#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_BR (V4L2_CID_MPEG_BASE + 642)767#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_BR (V4L2_CID_CODEC_BASE + 642)
761#define V4L2_CID_MPEG_VIDEO_REF_NUMBER_FOR_PFRAMES (V4L2_CID_MPEG_BASE + 643)768#define V4L2_CID_MPEG_VIDEO_REF_NUMBER_FOR_PFRAMES (V4L2_CID_CODEC_BASE + 643)
762#define V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR (V4L2_CID_MPEG_BASE + 644)769#define V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR (V4L2_CID_CODEC_BASE + 644)
763#define V4L2_CID_MPEG_VIDEO_CONSTANT_QUALITY (V4L2_CID_MPEG_BASE + 645)770#define V4L2_CID_MPEG_VIDEO_CONSTANT_QUALITY (V4L2_CID_CODEC_BASE + 645)
764#define V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE (V4L2_CID_MPEG_BASE + 646)771#define V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE (V4L2_CID_CODEC_BASE + 646)
765enum v4l2_mpeg_video_frame_skip_mode {772enum v4l2_mpeg_video_frame_skip_mode {
766 V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED = 0,773 V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED = 0,
767 V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT = 1,774 V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT = 1,
@@ -769,14 +776,14 @@ enum v4l2_mpeg_video_frame_skip_mode { · 1 unmodified line
769};776};
770 777
771/* MPEG-class control IDs specific to the CX2341x driver as defined by V4L2 */778/* MPEG-class control IDs specific to the CX2341x driver as defined by V4L2 */
772#define V4L2_CID_MPEG_CX2341X_BASE (V4L2_CTRL_CLASS_MPEG | 0x1000)779#define V4L2_CID_CODEC_CX2341X_BASE (V4L2_CTRL_CLASS_CODEC | 0x1000)
773#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE+0)780#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE (V4L2_CID_CODEC_CX2341X_BASE+0)
774enum v4l2_mpeg_cx2341x_video_spatial_filter_mode {781enum v4l2_mpeg_cx2341x_video_spatial_filter_mode {
775 V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL = 0,782 V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL = 0,
776 V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO = 1,783 V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO = 1,
777};784};
778#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER (V4L2_CID_MPEG_CX2341X_BASE+1)785#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER (V4L2_CID_CODEC_CX2341X_BASE+1)
779#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+2)786#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE (V4L2_CID_CODEC_CX2341X_BASE+2)
780enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type {787enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type {
781 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF = 0,788 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF = 0,
782 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR = 1,789 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR = 1,
@@ -784,18 +791,18 @@ enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type { · 1 unmodified line
784 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE = 3,791 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE = 3,
785 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE = 4,792 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE = 4,
786};793};
787#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+3)794#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE (V4L2_CID_CODEC_CX2341X_BASE+3)
788enum v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type {795enum v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type {
789 V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF = 0,796 V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF = 0,
790 V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR = 1,797 V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR = 1,
791};798};
792#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE+4)799#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE (V4L2_CID_CODEC_CX2341X_BASE+4)
793enum v4l2_mpeg_cx2341x_video_temporal_filter_mode {800enum v4l2_mpeg_cx2341x_video_temporal_filter_mode {
794 V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL = 0,801 V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL = 0,
795 V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO = 1,802 V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO = 1,
796};803};
797#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER (V4L2_CID_MPEG_CX2341X_BASE+5)804#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER (V4L2_CID_CODEC_CX2341X_BASE+5)
798#define V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+6)805#define V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE (V4L2_CID_CODEC_CX2341X_BASE+6)
799enum v4l2_mpeg_cx2341x_video_median_filter_type {806enum v4l2_mpeg_cx2341x_video_median_filter_type {
800 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF = 0,807 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF = 0,
801 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR = 1,808 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR = 1,
@@ -803,38 +810,38 @@ enum v4l2_mpeg_cx2341x_video_median_filter_type { · 1 unmodified line
803 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT = 3,810 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT = 3,
804 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG = 4,811 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG = 4,
805};812};
806#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE+7)813#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_CODEC_CX2341X_BASE+7)
807#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE+8)814#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP (V4L2_CID_CODEC_CX2341X_BASE+8)
808#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE+9)815#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_CODEC_CX2341X_BASE+9)
809#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE+10)816#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP (V4L2_CID_CODEC_CX2341X_BASE+10)
810#define V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS (V4L2_CID_MPEG_CX2341X_BASE+11)817#define V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS (V4L2_CID_CODEC_CX2341X_BASE+11)
811 818
812/* MPEG-class control IDs specific to the Samsung MFC 5.1 driver as defined by V4L2 */819/* MPEG-class control IDs specific to the Samsung MFC 5.1 driver as defined by V4L2 */
813#define V4L2_CID_MPEG_MFC51_BASE (V4L2_CTRL_CLASS_MPEG | 0x1100)820#define V4L2_CID_CODEC_MFC51_BASE (V4L2_CTRL_CLASS_CODEC | 0x1100)
814 821
815#define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY (V4L2_CID_MPEG_MFC51_BASE+0)822#define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY (V4L2_CID_CODEC_MFC51_BASE+0)
816#define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE (V4L2_CID_MPEG_MFC51_BASE+1)823#define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE (V4L2_CID_CODEC_MFC51_BASE+1)
817#define V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE (V4L2_CID_MPEG_MFC51_BASE+2)824#define V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE (V4L2_CID_CODEC_MFC51_BASE+2)
818enum v4l2_mpeg_mfc51_video_frame_skip_mode {825enum v4l2_mpeg_mfc51_video_frame_skip_mode {
819 V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_DISABLED = 0,826 V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_DISABLED = 0,
820 V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT = 1,827 V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT = 1,
821 V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT = 2,828 V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT = 2,
822};829};
823#define V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE (V4L2_CID_MPEG_MFC51_BASE+3)830#define V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE (V4L2_CID_CODEC_MFC51_BASE+3)
824enum v4l2_mpeg_mfc51_video_force_frame_type {831enum v4l2_mpeg_mfc51_video_force_frame_type {
825 V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_DISABLED = 0,832 V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_DISABLED = 0,
826 V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_I_FRAME = 1,833 V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_I_FRAME = 1,
827 V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_NOT_CODED = 2,834 V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_NOT_CODED = 2,
828};835};
829#define V4L2_CID_MPEG_MFC51_VIDEO_PADDING (V4L2_CID_MPEG_MFC51_BASE+4)836#define V4L2_CID_MPEG_MFC51_VIDEO_PADDING (V4L2_CID_CODEC_MFC51_BASE+4)
830#define V4L2_CID_MPEG_MFC51_VIDEO_PADDING_YUV (V4L2_CID_MPEG_MFC51_BASE+5)837#define V4L2_CID_MPEG_MFC51_VIDEO_PADDING_YUV (V4L2_CID_CODEC_MFC51_BASE+5)
831#define V4L2_CID_MPEG_MFC51_VIDEO_RC_FIXED_TARGET_BIT (V4L2_CID_MPEG_MFC51_BASE+6)838#define V4L2_CID_MPEG_MFC51_VIDEO_RC_FIXED_TARGET_BIT (V4L2_CID_CODEC_MFC51_BASE+6)
832#define V4L2_CID_MPEG_MFC51_VIDEO_RC_REACTION_COEFF (V4L2_CID_MPEG_MFC51_BASE+7)839#define V4L2_CID_MPEG_MFC51_VIDEO_RC_REACTION_COEFF (V4L2_CID_CODEC_MFC51_BASE+7)
833#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_ACTIVITY (V4L2_CID_MPEG_MFC51_BASE+50)840#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_ACTIVITY (V4L2_CID_CODEC_MFC51_BASE+50)
834#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_DARK (V4L2_CID_MPEG_MFC51_BASE+51)841#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_DARK (V4L2_CID_CODEC_MFC51_BASE+51)
835#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_SMOOTH (V4L2_CID_MPEG_MFC51_BASE+52)842#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_SMOOTH (V4L2_CID_CODEC_MFC51_BASE+52)
836#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_STATIC (V4L2_CID_MPEG_MFC51_BASE+53)843#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_STATIC (V4L2_CID_CODEC_MFC51_BASE+53)
837#define V4L2_CID_MPEG_MFC51_VIDEO_H264_NUM_REF_PIC_FOR_P (V4L2_CID_MPEG_MFC51_BASE+54)844#define V4L2_CID_MPEG_MFC51_VIDEO_H264_NUM_REF_PIC_FOR_P (V4L2_CID_CODEC_MFC51_BASE+54)
838 845
839/* Camera class control IDs */846/* Camera class control IDs */
840 847
@@ -1171,4 +1178,470 @@ enum v4l2_detect_md_mode { · 330 unmodified lines
1171#define V4L2_CID_DETECT_MD_THRESHOLD_GRID (V4L2_CID_DETECT_CLASS_BASE + 3)1178#define V4L2_CID_DETECT_MD_THRESHOLD_GRID (V4L2_CID_DETECT_CLASS_BASE + 3)
1172#define V4L2_CID_DETECT_MD_REGION_GRID (V4L2_CID_DETECT_CLASS_BASE + 4)1179#define V4L2_CID_DETECT_MD_REGION_GRID (V4L2_CID_DETECT_CLASS_BASE + 4)
1173 1180
1181
1182/* Stateless CODECs controls */
1183#define V4L2_CID_CODEC_STATELESS_BASE (V4L2_CTRL_CLASS_CODEC_STATELESS | 0x900)
1184#define V4L2_CID_CODEC_STATELESS_CLASS (V4L2_CTRL_CLASS_CODEC_STATELESS | 1)
1185
1186#define V4L2_CID_STATELESS_H264_DECODE_MODE (V4L2_CID_CODEC_STATELESS_BASE + 0)
1187/**
1188 * enum v4l2_stateless_h264_decode_mode - Decoding mode
1189 *
1190 * @V4L2_STATELESS_H264_DECODE_MODE_SLICE_BASED: indicates that decoding
1191 * is performed one slice at a time. In this mode,
1192 * V4L2_CID_STATELESS_H264_SLICE_PARAMS must contain the parsed slice
1193 * parameters and the OUTPUT buffer must contain a single slice.
1194 * V4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUF feature is used
1195 * in order to support multislice frames.
1196 * @V4L2_STATELESS_H264_DECODE_MODE_FRAME_BASED: indicates that
1197 * decoding is performed per frame. The OUTPUT buffer must contain
1198 * all slices and also both fields. This mode is typically supported
1199 * by device drivers that are able to parse the slice(s) header(s)
1200 * in hardware. When this mode is selected,
1201 * V4L2_CID_STATELESS_H264_SLICE_PARAMS is not used.
1202 */
1203enum v4l2_stateless_h264_decode_mode {
1204 V4L2_STATELESS_H264_DECODE_MODE_SLICE_BASED,
1205 V4L2_STATELESS_H264_DECODE_MODE_FRAME_BASED,
1206};
1207
1208#define V4L2_CID_STATELESS_H264_START_CODE (V4L2_CID_CODEC_STATELESS_BASE + 1)
1209/**
1210 * enum v4l2_stateless_h264_start_code - Start code
1211 *
1212 * @V4L2_STATELESS_H264_START_CODE_NONE: slices are passed
1213 * to the driver without any start code.
1214 * @V4L2_STATELESS_H264_START_CODE_ANNEX_B: slices are passed
1215 * to the driver with an Annex B start code prefix
1216 * (legal start codes can be 3-bytes 0x000001 or 4-bytes 0x00000001).
1217 * This mode is typically supported by device drivers that parse
1218 * the start code in hardware.
1219 */
1220enum v4l2_stateless_h264_start_code {
1221 V4L2_STATELESS_H264_START_CODE_NONE,
1222 V4L2_STATELESS_H264_START_CODE_ANNEX_B,
1223};
1224
1225#define V4L2_H264_SPS_CONSTRAINT_SET0_FLAG 0x01
1226#define V4L2_H264_SPS_CONSTRAINT_SET1_FLAG 0x02
1227#define V4L2_H264_SPS_CONSTRAINT_SET2_FLAG 0x04
1228#define V4L2_H264_SPS_CONSTRAINT_SET3_FLAG 0x08
1229#define V4L2_H264_SPS_CONSTRAINT_SET4_FLAG 0x10
1230#define V4L2_H264_SPS_CONSTRAINT_SET5_FLAG 0x20
1231
1232#define V4L2_H264_SPS_FLAG_SEPARATE_COLOUR_PLANE 0x01
1233#define V4L2_H264_SPS_FLAG_QPPRIME_Y_ZERO_TRANSFORM_BYPASS 0x02
1234#define V4L2_H264_SPS_FLAG_DELTA_PIC_ORDER_ALWAYS_ZERO 0x04
1235#define V4L2_H264_SPS_FLAG_GAPS_IN_FRAME_NUM_VALUE_ALLOWED 0x08
1236#define V4L2_H264_SPS_FLAG_FRAME_MBS_ONLY 0x10
1237#define V4L2_H264_SPS_FLAG_MB_ADAPTIVE_FRAME_FIELD 0x20
1238#define V4L2_H264_SPS_FLAG_DIRECT_8X8_INFERENCE 0x40
1239
1240#define V4L2_H264_SPS_HAS_CHROMA_FORMAT(sps) \
1241 ((sps)->profile_idc == 100 || (sps)->profile_idc == 110 || \
1242 (sps)->profile_idc == 122 || (sps)->profile_idc == 244 || \
1243 (sps)->profile_idc == 44 || (sps)->profile_idc == 83 || \
1244 (sps)->profile_idc == 86 || (sps)->profile_idc == 118 || \
1245 (sps)->profile_idc == 128 || (sps)->profile_idc == 138 || \
1246 (sps)->profile_idc == 139 || (sps)->profile_idc == 134 || \
1247 (sps)->profile_idc == 135)
1248
1249#define V4L2_CID_STATELESS_H264_SPS (V4L2_CID_CODEC_STATELESS_BASE + 2)
1250/**
1251 * struct v4l2_ctrl_h264_sps - H264 sequence parameter set
1252 *
1253 * All the members on this sequence parameter set structure match the
1254 * sequence parameter set syntax as specified by the H264 specification.
1255 *
1256 * @profile_idc: see H264 specification.
1257 * @constraint_set_flags: see H264 specification.
1258 * @level_idc: see H264 specification.
1259 * @seq_parameter_set_id: see H264 specification.
1260 * @chroma_format_idc: see H264 specification.
1261 * @bit_depth_luma_minus8: see H264 specification.
1262 * @bit_depth_chroma_minus8: see H264 specification.
1263 * @log2_max_frame_num_minus4: see H264 specification.
1264 * @pic_order_cnt_type: see H264 specification.
1265 * @log2_max_pic_order_cnt_lsb_minus4: see H264 specification.
1266 * @max_num_ref_frames: see H264 specification.
1267 * @num_ref_frames_in_pic_order_cnt_cycle: see H264 specification.
1268 * @offset_for_ref_frame: see H264 specification.
1269 * @offset_for_non_ref_pic: see H264 specification.
1270 * @offset_for_top_to_bottom_field: see H264 specification.
1271 * @pic_width_in_mbs_minus1: see H264 specification.
1272 * @pic_height_in_map_units_minus1: see H264 specification.
1273 * @flags: see V4L2_H264_SPS_FLAG_{}.
1274 */
1275struct v4l2_ctrl_h264_sps {
1276 __u8 profile_idc;
1277 __u8 constraint_set_flags;
1278 __u8 level_idc;
1279 __u8 seq_parameter_set_id;
1280 __u8 chroma_format_idc;
1281 __u8 bit_depth_luma_minus8;
1282 __u8 bit_depth_chroma_minus8;
1283 __u8 log2_max_frame_num_minus4;
1284 __u8 pic_order_cnt_type;
1285 __u8 log2_max_pic_order_cnt_lsb_minus4;
1286 __u8 max_num_ref_frames;
1287 __u8 num_ref_frames_in_pic_order_cnt_cycle;
1288 __s32 offset_for_ref_frame[255];
1289 __s32 offset_for_non_ref_pic;
1290 __s32 offset_for_top_to_bottom_field;
1291 __u16 pic_width_in_mbs_minus1;
1292 __u16 pic_height_in_map_units_minus1;
1293 __u32 flags;
1294};
1295
1296#define V4L2_H264_PPS_FLAG_ENTROPY_CODING_MODE 0x0001
1297#define V4L2_H264_PPS_FLAG_BOTTOM_FIELD_PIC_ORDER_IN_FRAME_PRESENT 0x0002
1298#define V4L2_H264_PPS_FLAG_WEIGHTED_PRED 0x0004
1299#define V4L2_H264_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT 0x0008
1300#define V4L2_H264_PPS_FLAG_CONSTRAINED_INTRA_PRED 0x0010
1301#define V4L2_H264_PPS_FLAG_REDUNDANT_PIC_CNT_PRESENT 0x0020
1302#define V4L2_H264_PPS_FLAG_TRANSFORM_8X8_MODE 0x0040
1303#define V4L2_H264_PPS_FLAG_SCALING_MATRIX_PRESENT 0x0080
1304
1305#define V4L2_CID_STATELESS_H264_PPS (V4L2_CID_CODEC_STATELESS_BASE + 3)
1306/**
1307 * struct v4l2_ctrl_h264_pps - H264 picture parameter set
1308 *
1309 * Except where noted, all the members on this picture parameter set
1310 * structure match the sequence parameter set syntax as specified
1311 * by the H264 specification.
1312 *
1313 * In particular, V4L2_H264_PPS_FLAG_SCALING_MATRIX_PRESENT flag
1314 * has a specific meaning. This flag should be set if a non-flat
1315 * scaling matrix applies to the picture. In this case, applications
1316 * are expected to use V4L2_CID_STATELESS_H264_SCALING_MATRIX,
1317 * to pass the values of the non-flat matrices.
1318 *
1319 * @pic_parameter_set_id: see H264 specification.
1320 * @seq_parameter_set_id: see H264 specification.
1321 * @num_slice_groups_minus1: see H264 specification.
1322 * @num_ref_idx_l0_default_active_minus1: see H264 specification.
1323 * @num_ref_idx_l1_default_active_minus1: see H264 specification.
1324 * @weighted_bipred_idc: see H264 specification.
1325 * @pic_init_qp_minus26: see H264 specification.
1326 * @pic_init_qs_minus26: see H264 specification.
1327 * @chroma_qp_index_offset: see H264 specification.
1328 * @second_chroma_qp_index_offset: see H264 specification.
1329 * @flags: see V4L2_H264_PPS_FLAG_{}.
1330 */
1331struct v4l2_ctrl_h264_pps {
1332 __u8 pic_parameter_set_id;
1333 __u8 seq_parameter_set_id;
1334 __u8 num_slice_groups_minus1;
1335 __u8 num_ref_idx_l0_default_active_minus1;
1336 __u8 num_ref_idx_l1_default_active_minus1;
1337 __u8 weighted_bipred_idc;
1338 __s8 pic_init_qp_minus26;
1339 __s8 pic_init_qs_minus26;
1340 __s8 chroma_qp_index_offset;
1341 __s8 second_chroma_qp_index_offset;
1342 __u16 flags;
1343};
1344
1345#define V4L2_CID_STATELESS_H264_SCALING_MATRIX (V4L2_CID_CODEC_STATELESS_BASE + 4)
1346/**
1347 * struct v4l2_ctrl_h264_scaling_matrix - H264 scaling matrices
1348 *
1349 * @scaling_list_4x4: scaling matrix after applying the inverse
1350 * scanning process. Expected list order is Intra Y, Intra Cb,
1351 * Intra Cr, Inter Y, Inter Cb, Inter Cr. The values on each
1352 * scaling list are expected in raster scan order.
1353 * @scaling_list_8x8: scaling matrix after applying the inverse
1354 * scanning process. Expected list order is Intra Y, Inter Y,
1355 * Intra Cb, Inter Cb, Intra Cr, Inter Cr. The values on each
1356 * scaling list are expected in raster scan order.
1357 *
1358 * Note that the list order is different for the 4x4 and 8x8
1359 * matrices as per the H264 specification, see table 7-2 "Assignment
1360 * of mnemonic names to scaling list indices and specification of
1361 * fall-back rule".
1362 */
1363struct v4l2_ctrl_h264_scaling_matrix {
1364 __u8 scaling_list_4x4[6][16];
1365 __u8 scaling_list_8x8[6][64];
1366};
1367
1368struct v4l2_h264_weight_factors {
1369 __s16 luma_weight[32];
1370 __s16 luma_offset[32];
1371 __s16 chroma_weight[32][2];
1372 __s16 chroma_offset[32][2];
1373};
1374
1375#define V4L2_H264_CTRL_PRED_WEIGHTS_REQUIRED(pps, slice) \
1376 ((((pps)->flags & V4L2_H264_PPS_FLAG_WEIGHTED_PRED) && \
1377 ((slice)->slice_type == V4L2_H264_SLICE_TYPE_P || \
1378 (slice)->slice_type == V4L2_H264_SLICE_TYPE_SP)) || \
1379 ((pps)->weighted_bipred_idc == 1 && \
1380 (slice)->slice_type == V4L2_H264_SLICE_TYPE_B))
1381
1382#define V4L2_CID_STATELESS_H264_PRED_WEIGHTS (V4L2_CID_CODEC_STATELESS_BASE + 5)
1383/**
1384 * struct v4l2_ctrl_h264_pred_weights - Prediction weight table
1385 *
1386 * Prediction weight table, which matches the syntax specified
1387 * by the H264 specification.
1388 *
1389 * @luma_log2_weight_denom: see H264 specification.
1390 * @chroma_log2_weight_denom: see H264 specification.
1391 * @weight_factors: luma and chroma weight factors.
1392 */
1393struct v4l2_ctrl_h264_pred_weights {
1394 __u16 luma_log2_weight_denom;
1395 __u16 chroma_log2_weight_denom;
1396 struct v4l2_h264_weight_factors weight_factors[2];
1397};
1398
1399#define V4L2_H264_SLICE_TYPE_P 0
1400#define V4L2_H264_SLICE_TYPE_B 1
1401#define V4L2_H264_SLICE_TYPE_I 2
1402#define V4L2_H264_SLICE_TYPE_SP 3
1403#define V4L2_H264_SLICE_TYPE_SI 4
1404
1405#define V4L2_H264_SLICE_FLAG_DIRECT_SPATIAL_MV_PRED 0x01
1406#define V4L2_H264_SLICE_FLAG_SP_FOR_SWITCH 0x02
1407
1408#define V4L2_H264_TOP_FIELD_REF 0x1
1409#define V4L2_H264_BOTTOM_FIELD_REF 0x2
1410#define V4L2_H264_FRAME_REF 0x3
1411
1412/**
1413 * struct v4l2_h264_reference - H264 picture reference
1414 *
1415 * @fields: indicates how the picture is referenced.
1416 * Valid values are V4L2_H264_{}_REF.
1417 * @index: index into v4l2_ctrl_h264_decode_params.dpb[].
1418 */
1419struct v4l2_h264_reference {
1420 __u8 fields;
1421 __u8 index;
1422};
1423
1424/*
1425 * Maximum DPB size, as specified by section 'A.3.1 Level limits
1426 * common to the Baseline, Main, and Extended profiles'.
1427 */
1428#define V4L2_H264_NUM_DPB_ENTRIES 16
1429#define V4L2_H264_REF_LIST_LEN (2 * V4L2_H264_NUM_DPB_ENTRIES)
1430
1431#define V4L2_CID_STATELESS_H264_SLICE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 6)
1432/**
1433 * struct v4l2_ctrl_h264_slice_params - H264 slice parameters
1434 *
1435 * This structure holds the H264 syntax elements that are specified
1436 * as non-invariant for the slices in a given frame.
1437 *
1438 * Slice invariant syntax elements are contained in struct
1439 * v4l2_ctrl_h264_decode_params. This is done to reduce the API surface
1440 * on frame-based decoders, where slice header parsing is done by the
1441 * hardware.
1442 *
1443 * Slice invariant syntax elements are specified in specification section
1444 * "7.4.3 Slice header semantics".
1445 *
1446 * Except where noted, the members on this struct match the slice header syntax.
1447 *
1448 * @header_bit_size: offset in bits to slice_data() from the beginning of this slice.
1449 * @first_mb_in_slice: see H264 specification.
1450 * @slice_type: see H264 specification.
1451 * @colour_plane_id: see H264 specification.
1452 * @redundant_pic_cnt: see H264 specification.
1453 * @cabac_init_idc: see H264 specification.
1454 * @slice_qp_delta: see H264 specification.
1455 * @slice_qs_delta: see H264 specification.
1456 * @disable_deblocking_filter_idc: see H264 specification.
1457 * @slice_alpha_c0_offset_div2: see H264 specification.
1458 * @slice_beta_offset_div2: see H264 specification.
1459 * @num_ref_idx_l0_active_minus1: see H264 specification.
1460 * @num_ref_idx_l1_active_minus1: see H264 specification.
1461 * @reserved: padding field. Should be zeroed by applications.
1462 * @ref_pic_list0: reference picture list 0 after applying the per-slice modifications.
1463 * @ref_pic_list1: reference picture list 1 after applying the per-slice modifications.
1464 * @flags: see V4L2_H264_SLICE_FLAG_{}.
1465 */
1466struct v4l2_ctrl_h264_slice_params {
1467 __u32 header_bit_size;
1468 __u32 first_mb_in_slice;
1469 __u8 slice_type;
1470 __u8 colour_plane_id;
1471 __u8 redundant_pic_cnt;
1472 __u8 cabac_init_idc;
1473 __s8 slice_qp_delta;
1474 __s8 slice_qs_delta;
1475 __u8 disable_deblocking_filter_idc;
1476 __s8 slice_alpha_c0_offset_div2;
1477 __s8 slice_beta_offset_div2;
1478 __u8 num_ref_idx_l0_active_minus1;
1479 __u8 num_ref_idx_l1_active_minus1;
1480
1481 __u8 reserved;
1482
1483 struct v4l2_h264_reference ref_pic_list0[V4L2_H264_REF_LIST_LEN];
1484 struct v4l2_h264_reference ref_pic_list1[V4L2_H264_REF_LIST_LEN];
1485
1486 __u32 flags;
1487};
1488
1489#define V4L2_H264_DPB_ENTRY_FLAG_VALID 0x01
1490#define V4L2_H264_DPB_ENTRY_FLAG_ACTIVE 0x02
1491#define V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM 0x04
1492#define V4L2_H264_DPB_ENTRY_FLAG_FIELD 0x08
1493
1494/**
1495 * struct v4l2_h264_dpb_entry - H264 decoded picture buffer entry
1496 *
1497 * @reference_ts: timestamp of the V4L2 capture buffer to use as reference.
1498 * The timestamp refers to the timestamp field in struct v4l2_buffer.
1499 * Use v4l2_timeval_to_ns() to convert the struct timeval to a __u64.
1500 * @pic_num: matches PicNum variable assigned during the reference
1501 * picture lists construction process.
1502 * @frame_num: frame identifier which matches frame_num syntax element.
1503 * @fields: indicates how the DPB entry is referenced. Valid values are
1504 * V4L2_H264_{}_REF.
1505 * @reserved: padding field. Should be zeroed by applications.
1506 * @top_field_order_cnt: matches TopFieldOrderCnt picture value.
1507 * @bottom_field_order_cnt: matches BottomFieldOrderCnt picture value.
1508 * Note that picture field is indicated by v4l2_buffer.field.
1509 * @flags: see V4L2_H264_DPB_ENTRY_FLAG_{}.
1510 */
1511struct v4l2_h264_dpb_entry {
1512 __u64 reference_ts;
1513 __u32 pic_num;
1514 __u16 frame_num;
1515 __u8 fields;
1516 __u8 reserved[5];
1517 __s32 top_field_order_cnt;
1518 __s32 bottom_field_order_cnt;
1519 __u32 flags;
1520};
1521
1522#define V4L2_H264_DECODE_PARAM_FLAG_IDR_PIC 0x01
1523#define V4L2_H264_DECODE_PARAM_FLAG_FIELD_PIC 0x02
1524#define V4L2_H264_DECODE_PARAM_FLAG_BOTTOM_FIELD 0x04
1525
1526#define V4L2_CID_STATELESS_H264_DECODE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 7)
1527/**
1528 * struct v4l2_ctrl_h264_decode_params - H264 decoding parameters
1529 *
1530 * @dpb: decoded picture buffer.
1531 * @nal_ref_idc: slice header syntax element.
1532 * @frame_num: slice header syntax element.
1533 * @top_field_order_cnt: matches TopFieldOrderCnt picture value.
1534 * @bottom_field_order_cnt: matches BottomFieldOrderCnt picture value.
1535 * Note that picture field is indicated by v4l2_buffer.field.
1536 * @idr_pic_id: slice header syntax element.
1537 * @pic_order_cnt_lsb: slice header syntax element.
1538 * @delta_pic_order_cnt_bottom: slice header syntax element.
1539 * @delta_pic_order_cnt0: slice header syntax element.
1540 * @delta_pic_order_cnt1: slice header syntax element.
1541 * @dec_ref_pic_marking_bit_size: size in bits of dec_ref_pic_marking()
1542 * syntax element.
1543 * @pic_order_cnt_bit_size: size in bits of pic order count syntax.
1544 * @slice_group_change_cycle: slice header syntax element.
1545 * @reserved: padding field. Should be zeroed by applications.
1546 * @flags: see V4L2_H264_DECODE_PARAM_FLAG_{}.
1547 */
1548struct v4l2_ctrl_h264_decode_params {
1549 struct v4l2_h264_dpb_entry dpb[V4L2_H264_NUM_DPB_ENTRIES];
1550 __u16 nal_ref_idc;
1551 __u16 frame_num;
1552 __s32 top_field_order_cnt;
1553 __s32 bottom_field_order_cnt;
1554 __u16 idr_pic_id;
1555 __u16 pic_order_cnt_lsb;
1556 __s32 delta_pic_order_cnt_bottom;
1557 __s32 delta_pic_order_cnt0;
1558 __s32 delta_pic_order_cnt1;
1559 __u32 dec_ref_pic_marking_bit_size;
1560 __u32 pic_order_cnt_bit_size;
1561 __u32 slice_group_change_cycle;
1562
1563 __u32 reserved;
1564 __u32 flags;
1565};
1566
1567
1568/* Stateless FWHT control, used by the vicodec driver */
1569
1570/* Current FWHT version */
1571#define V4L2_FWHT_VERSION 3
1572
1573/* Set if this is an interlaced format */
1574#define V4L2_FWHT_FL_IS_INTERLACED BIT(0)
1575/* Set if this is a bottom-first (NTSC) interlaced format */
1576#define V4L2_FWHT_FL_IS_BOTTOM_FIRST BIT(1)
1577/* Set if each 'frame' contains just one field */
1578#define V4L2_FWHT_FL_IS_ALTERNATE BIT(2)
1579/*
1580 * If V4L2_FWHT_FL_IS_ALTERNATE was set, then this is set if this
1581 * 'frame' is the bottom field, else it is the top field.
1582 */
1583#define V4L2_FWHT_FL_IS_BOTTOM_FIELD BIT(3)
1584/* Set if the Y' plane is uncompressed */
1585#define V4L2_FWHT_FL_LUMA_IS_UNCOMPRESSED BIT(4)
1586/* Set if the Cb plane is uncompressed */
1587#define V4L2_FWHT_FL_CB_IS_UNCOMPRESSED BIT(5)
1588/* Set if the Cr plane is uncompressed */
1589#define V4L2_FWHT_FL_CR_IS_UNCOMPRESSED BIT(6)
1590/* Set if the chroma plane is full height, if cleared it is half height */
1591#define V4L2_FWHT_FL_CHROMA_FULL_HEIGHT BIT(7)
1592/* Set if the chroma plane is full width, if cleared it is half width */
1593#define V4L2_FWHT_FL_CHROMA_FULL_WIDTH BIT(8)
1594/* Set if the alpha plane is uncompressed */
1595#define V4L2_FWHT_FL_ALPHA_IS_UNCOMPRESSED BIT(9)
1596/* Set if this is an I Frame */
1597#define V4L2_FWHT_FL_I_FRAME BIT(10)
1598
1599/* A 4-values flag - the number of components - 1 */
1600#define V4L2_FWHT_FL_COMPONENTS_NUM_MSK GENMASK(18, 16)
1601#define V4L2_FWHT_FL_COMPONENTS_NUM_OFFSET 16
1602
1603/* A 4-values flag - the pixel encoding type */
1604#define V4L2_FWHT_FL_PIXENC_MSK GENMASK(20, 19)
1605#define V4L2_FWHT_FL_PIXENC_OFFSET 19
1606#define V4L2_FWHT_FL_PIXENC_YUV (1 << V4L2_FWHT_FL_PIXENC_OFFSET)
1607#define V4L2_FWHT_FL_PIXENC_RGB (2 << V4L2_FWHT_FL_PIXENC_OFFSET)
1608#define V4L2_FWHT_FL_PIXENC_HSV (3 << V4L2_FWHT_FL_PIXENC_OFFSET)
1609
1610#define V4L2_CID_STATELESS_FWHT_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 100)
1611/**
1612 * struct v4l2_ctrl_fwht_params - FWHT parameters
1613 *
1614 * @backward_ref_ts: timestamp of the V4L2 capture buffer to use as reference.
1615 * The timestamp refers to the timestamp field in struct v4l2_buffer.
1616 * Use v4l2_timeval_to_ns() to convert the struct timeval to a __u64.
1617 * @version: must be V4L2_FWHT_VERSION.
1618 * @width: width of frame.
1619 * @height: height of frame.
1620 * @flags: FWHT flags (see V4L2_FWHT_FL_*).
1621 * @colorspace: the colorspace (enum v4l2_colorspace).
1622 * @xfer_func: the transfer function (enum v4l2_xfer_func).
1623 * @ycbcr_enc: the Y'CbCr encoding (enum v4l2_ycbcr_encoding).
1624 * @quantization: the quantization (enum v4l2_quantization).
1625 */
1626struct v4l2_ctrl_fwht_params {
1627 __u64 backward_ref_ts;
1628 __u32 version;
1629 __u32 width;
1630 __u32 height;
1631 __u32 flags;
1632 __u32 colorspace;
1633 __u32 xfer_func;
1634 __u32 ycbcr_enc;
1635 __u32 quantization;
1636};
1637
1638/* MPEG-compression definitions kept for backwards compatibility */
1639#ifndef __KERNEL__
1640#define V4L2_CTRL_CLASS_MPEG V4L2_CTRL_CLASS_CODEC
1641#define V4L2_CID_MPEG_CLASS V4L2_CID_CODEC_CLASS
1642#define V4L2_CID_MPEG_BASE V4L2_CID_CODEC_BASE
1643#define V4L2_CID_MPEG_CX2341X_BASE V4L2_CID_CODEC_CX2341X_BASE
1644#define V4L2_CID_MPEG_MFC51_BASE V4L2_CID_CODEC_MFC51_BASE
1645#endif
1646
1174#endif1647#endif
include/uapi/linux/videodev2.h+28−13
@@ -221,9 +221,7 @@ enum v4l2_colorspace { · 220 unmodified lines
221 V4L2_COLORSPACE_470_SYSTEM_M = 5,221 V4L2_COLORSPACE_470_SYSTEM_M = 5,
222 222
223 /*223 /*
224 * EBU Tech 3213 PAL/SECAM colorspace. This only makes sense when224 * EBU Tech 3213 PAL/SECAM colorspace.
225 * dealing with really old PAL/SECAM recordings. Superseded by
226 * SMPTE 170M.
227 */225 */
228 V4L2_COLORSPACE_470_SYSTEM_BG = 6,226 V4L2_COLORSPACE_470_SYSTEM_BG = 6,
229 227
@@ -517,7 +515,7 @@ struct v4l2_pix_format { · 287 unmodified lines
517 515
518/* Pixel format FOURCC depth Description */516/* Pixel format FOURCC depth Description */
519 517
520/* RGB formats */518/* RGB formats (1 or 2 bytes per pixel) */
521#define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R', 'G', 'B', '1') /* 8 RGB-3-3-2 */519#define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R', 'G', 'B', '1') /* 8 RGB-3-3-2 */
522#define V4L2_PIX_FMT_RGB444 v4l2_fourcc('R', '4', '4', '4') /* 16 xxxxrrrr ggggbbbb */520#define V4L2_PIX_FMT_RGB444 v4l2_fourcc('R', '4', '4', '4') /* 16 xxxxrrrr ggggbbbb */
523#define V4L2_PIX_FMT_ARGB444 v4l2_fourcc('A', 'R', '1', '2') /* 16 aaaarrrr ggggbbbb */521#define V4L2_PIX_FMT_ARGB444 v4l2_fourcc('A', 'R', '1', '2') /* 16 aaaarrrr ggggbbbb */
@@ -526,12 +524,6 @@ struct v4l2_pix_format { · 2 unmodified lines
526#define V4L2_PIX_FMT_RGBX444 v4l2_fourcc('R', 'X', '1', '2') /* 16 rrrrgggg bbbbxxxx */524#define V4L2_PIX_FMT_RGBX444 v4l2_fourcc('R', 'X', '1', '2') /* 16 rrrrgggg bbbbxxxx */
527#define V4L2_PIX_FMT_ABGR444 v4l2_fourcc('A', 'B', '1', '2') /* 16 aaaabbbb ggggrrrr */525#define V4L2_PIX_FMT_ABGR444 v4l2_fourcc('A', 'B', '1', '2') /* 16 aaaabbbb ggggrrrr */
528#define V4L2_PIX_FMT_XBGR444 v4l2_fourcc('X', 'B', '1', '2') /* 16 xxxxbbbb ggggrrrr */526#define V4L2_PIX_FMT_XBGR444 v4l2_fourcc('X', 'B', '1', '2') /* 16 xxxxbbbb ggggrrrr */
529
530/*
531 * Originally this had 'BA12' as fourcc, but this clashed with the older
532 * V4L2_PIX_FMT_SGRBG12 which inexplicably used that same fourcc.
533 * So use 'GA12' instead for V4L2_PIX_FMT_BGRA444.
534 */
535#define V4L2_PIX_FMT_BGRA444 v4l2_fourcc('G', 'A', '1', '2') /* 16 bbbbgggg rrrraaaa */527#define V4L2_PIX_FMT_BGRA444 v4l2_fourcc('G', 'A', '1', '2') /* 16 bbbbgggg rrrraaaa */
536#define V4L2_PIX_FMT_BGRX444 v4l2_fourcc('B', 'X', '1', '2') /* 16 bbbbgggg rrrrxxxx */528#define V4L2_PIX_FMT_BGRX444 v4l2_fourcc('B', 'X', '1', '2') /* 16 bbbbgggg rrrrxxxx */
537#define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O') /* 16 RGB-5-5-5 */529#define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O') /* 16 RGB-5-5-5 */
@@ -548,6 +540,8 @@ struct v4l2_pix_format { · 10 unmodified lines
548#define V4L2_PIX_FMT_ARGB555X v4l2_fourcc_be('A', 'R', '1', '5') /* 16 ARGB-5-5-5 BE */540#define V4L2_PIX_FMT_ARGB555X v4l2_fourcc_be('A', 'R', '1', '5') /* 16 ARGB-5-5-5 BE */
549#define V4L2_PIX_FMT_XRGB555X v4l2_fourcc_be('X', 'R', '1', '5') /* 16 XRGB-5-5-5 BE */541#define V4L2_PIX_FMT_XRGB555X v4l2_fourcc_be('X', 'R', '1', '5') /* 16 XRGB-5-5-5 BE */
550#define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R') /* 16 RGB-5-6-5 BE */542#define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R') /* 16 RGB-5-6-5 BE */
543
544/* RGB formats (3 or 4 bytes per pixel) */
551#define V4L2_PIX_FMT_BGR666 v4l2_fourcc('B', 'G', 'R', 'H') /* 18 BGR-6-6-6 */545#define V4L2_PIX_FMT_BGR666 v4l2_fourcc('B', 'G', 'R', 'H') /* 18 BGR-6-6-6 */
552#define V4L2_PIX_FMT_BGR24 v4l2_fourcc('B', 'G', 'R', '3') /* 24 BGR-8-8-8 */546#define V4L2_PIX_FMT_BGR24 v4l2_fourcc('B', 'G', 'R', '3') /* 24 BGR-8-8-8 */
553#define V4L2_PIX_FMT_RGB24 v4l2_fourcc('R', 'G', 'B', '3') /* 24 RGB-8-8-8 */547#define V4L2_PIX_FMT_RGB24 v4l2_fourcc('R', 'G', 'B', '3') /* 24 RGB-8-8-8 */
@@ -597,8 +591,6 @@ struct v4l2_pix_format { · 43 unmodified lines
597#define V4L2_PIX_FMT_XYUV32 v4l2_fourcc('X', 'Y', 'U', 'V') /* 32 XYUV-8-8-8-8 */591#define V4L2_PIX_FMT_XYUV32 v4l2_fourcc('X', 'Y', 'U', 'V') /* 32 XYUV-8-8-8-8 */
598#define V4L2_PIX_FMT_VUYA32 v4l2_fourcc('V', 'U', 'Y', 'A') /* 32 VUYA-8-8-8-8 */592#define V4L2_PIX_FMT_VUYA32 v4l2_fourcc('V', 'U', 'Y', 'A') /* 32 VUYA-8-8-8-8 */
599#define V4L2_PIX_FMT_VUYX32 v4l2_fourcc('V', 'U', 'Y', 'X') /* 32 VUYX-8-8-8-8 */593#define V4L2_PIX_FMT_VUYX32 v4l2_fourcc('V', 'U', 'Y', 'X') /* 32 VUYX-8-8-8-8 */
600#define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* 8 8-bit color */
601#define V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2') /* 8 YUV 4:2:0 16x16 macroblocks */
602#define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0') /* 12 YUV 4:2:0 2 lines y, 1 line uv interleaved */594#define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0') /* 12 YUV 4:2:0 2 lines y, 1 line uv interleaved */
603 595
604/* two planes -- one Y, one Cr + Cb interleaved */596/* two planes -- one Y, one Cr + Cb interleaved */
@@ -608,6 +600,7 @@ struct v4l2_pix_format { · 3 unmodified lines
608#define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1') /* 16 Y/CrCb 4:2:2 */600#define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1') /* 16 Y/CrCb 4:2:2 */
609#define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4') /* 24 Y/CbCr 4:4:4 */601#define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4') /* 24 Y/CbCr 4:4:4 */
610#define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2') /* 24 Y/CrCb 4:4:4 */602#define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2') /* 24 Y/CrCb 4:4:4 */
603#define V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2') /* 8 YUV 4:2:0 16x16 macroblocks */
611 604
612/* two non contiguous planes - one Y, one Cr + Cb interleaved */605/* two non contiguous planes - one Y, one Cr + Cb interleaved */
613#define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 */606#define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 */
@@ -705,6 +698,7 @@ struct v4l2_pix_format { · 91 unmodified lines
705#define V4L2_PIX_FMT_HEVC v4l2_fourcc('H', 'E', 'V', 'C') /* HEVC aka H.265 */698#define V4L2_PIX_FMT_HEVC v4l2_fourcc('H', 'E', 'V', 'C') /* HEVC aka H.265 */
706#define V4L2_PIX_FMT_FWHT v4l2_fourcc('F', 'W', 'H', 'T') /* Fast Walsh Hadamard Transform (vicodec) */699#define V4L2_PIX_FMT_FWHT v4l2_fourcc('F', 'W', 'H', 'T') /* Fast Walsh Hadamard Transform (vicodec) */
707#define V4L2_PIX_FMT_FWHT_STATELESS v4l2_fourcc('S', 'F', 'W', 'H') /* Stateless FWHT (vicodec) */700#define V4L2_PIX_FMT_FWHT_STATELESS v4l2_fourcc('S', 'F', 'W', 'H') /* Stateless FWHT (vicodec) */
701#define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4') /* H264 parsed slices */
708 702
709/* Vendor-specific formats */703/* Vendor-specific formats */
710#define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */704#define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */
@@ -740,6 +734,7 @@ struct v4l2_pix_format { · 29 unmodified lines
740#define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I') /* Intel Planar Greyscale 10-bit and Depth 16-bit */734#define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I') /* Intel Planar Greyscale 10-bit and Depth 16-bit */
741#define V4L2_PIX_FMT_SUNXI_TILED_NV12 v4l2_fourcc('S', 'T', '1', '2') /* Sunxi Tiled NV12 Format */735#define V4L2_PIX_FMT_SUNXI_TILED_NV12 v4l2_fourcc('S', 'T', '1', '2') /* Sunxi Tiled NV12 Format */
742#define V4L2_PIX_FMT_CNF4 v4l2_fourcc('C', 'N', 'F', '4') /* Intel 4-bit packed depth confidence information */736#define V4L2_PIX_FMT_CNF4 v4l2_fourcc('C', 'N', 'F', '4') /* Intel 4-bit packed depth confidence information */
737#define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* BTTV 8-bit dithered RGB */
743 738
744/* 10bit raw bayer packed, 32 bytes for every 25 pixels, last LSB 6 bits unused */739/* 10bit raw bayer packed, 32 bytes for every 25 pixels, last LSB 6 bits unused */
745#define V4L2_PIX_FMT_IPU3_SBGGR10 v4l2_fourcc('i', 'p', '3', 'b') /* IPU3 packed 10-bit BGGR bayer */740#define V4L2_PIX_FMT_IPU3_SBGGR10 v4l2_fourcc('i', 'p', '3', 'b') /* IPU3 packed 10-bit BGGR bayer */
@@ -770,6 +765,10 @@ struct v4l2_pix_format { · 24 unmodified lines
770#define V4L2_META_FMT_D4XX v4l2_fourcc('D', '4', 'X', 'X') /* D4XX Payload Header metadata */765#define V4L2_META_FMT_D4XX v4l2_fourcc('D', '4', 'X', 'X') /* D4XX Payload Header metadata */
771#define V4L2_META_FMT_VIVID v4l2_fourcc('V', 'I', 'V', 'D') /* Vivid Metadata */766#define V4L2_META_FMT_VIVID v4l2_fourcc('V', 'I', 'V', 'D') /* Vivid Metadata */
772 767
768/* Vendor specific - used for RK_ISP1 camera sub-system */
769#define V4L2_META_FMT_RK_ISP1_PARAMS v4l2_fourcc('R', 'K', '1', 'P') /* Rockchip ISP1 3A Parameters */
770#define V4L2_META_FMT_RK_ISP1_STAT_3A v4l2_fourcc('R', 'K', '1', 'S') /* Rockchip ISP1 3A Statistics */
771
773/* priv field value to indicates that subsequent fields are valid. */772/* priv field value to indicates that subsequent fields are valid. */
774#define V4L2_PIX_FMT_PRIV_MAGIC 0xfeedcafe773#define V4L2_PIX_FMT_PRIV_MAGIC 0xfeedcafe
775 774
@@ -1185,7 +1184,7 @@ struct v4l2_window { · 409 unmodified lines
1185 struct v4l2_rect w;1184 struct v4l2_rect w;
1186 __u32 field; /* enum v4l2_field */1185 __u32 field; /* enum v4l2_field */
1187 __u32 chromakey;1186 __u32 chromakey;
1188 struct v4l2_clip __user *clips;1187 struct v4l2_clip *clips;
1189 __u32 clipcount;1188 __u32 clipcount;
1190 void __user *bitmap;1189 void __user *bitmap;
1191 __u8 global_alpha;1190 __u8 global_alpha;
@@ -1731,6 +1730,13 @@ struct v4l2_ext_control { · 539 unmodified lines
1731 __u16 __user *p_u16;1730 __u16 __user *p_u16;
1732 __u32 __user *p_u32;1731 __u32 __user *p_u32;
1733 struct v4l2_area __user *p_area;1732 struct v4l2_area __user *p_area;
1733 struct v4l2_ctrl_h264_sps __user *p_h264_sps;
1734 struct v4l2_ctrl_h264_pps *p_h264_pps;
1735 struct v4l2_ctrl_h264_scaling_matrix __user *p_h264_scaling_matrix;
1736 struct v4l2_ctrl_h264_pred_weights __user *p_h264_pred_weights;
1737 struct v4l2_ctrl_h264_slice_params __user *p_h264_slice_params;
1738 struct v4l2_ctrl_h264_decode_params __user *p_h264_decode_params;
1739 struct v4l2_ctrl_fwht_params __user *p_fwht_params;
1734 void __user *ptr;1740 void __user *ptr;
1735 };1741 };
1736} __attribute__ ((packed));1742} __attribute__ ((packed));
@@ -1777,6 +1783,15 @@ enum v4l2_ctrl_type { · 40 unmodified lines
1777 V4L2_CTRL_TYPE_U16 = 0x0101,1783 V4L2_CTRL_TYPE_U16 = 0x0101,
1778 V4L2_CTRL_TYPE_U32 = 0x0102,1784 V4L2_CTRL_TYPE_U32 = 0x0102,
1779 V4L2_CTRL_TYPE_AREA = 0x0106,1785 V4L2_CTRL_TYPE_AREA = 0x0106,
1786
1787 V4L2_CTRL_TYPE_H264_SPS = 0x0200,
1788 V4L2_CTRL_TYPE_H264_PPS = 0x0201,
1789 V4L2_CTRL_TYPE_H264_SCALING_MATRIX = 0x0202,
1790 V4L2_CTRL_TYPE_H264_SLICE_PARAMS = 0x0203,
1791 V4L2_CTRL_TYPE_H264_DECODE_PARAMS = 0x0204,
1792 V4L2_CTRL_TYPE_H264_PRED_WEIGHTS = 0x0205,
1793
1794 V4L2_CTRL_TYPE_FWHT_PARAMS = 0x0220,
1780};1795};
1781 1796
1782/* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */1797/* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */