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/linux (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
139139 */
140140 #define LIRC_GET_REC_TIMEOUT _IOR('i', 0x00000024, __u32)
141141
142−/*
142+/**
143143 * struct lirc_scancode - decoded scancode with protocol for use with
144144 * LIRC_MODE_SCANCODE
145145 *
@@ -196,6 +196,7 @@ struct lirc_scancode { · 50 unmodified lines
196196 * @RC_PROTO_RCMM24: RC-MM protocol 24 bits
197197 * @RC_PROTO_RCMM32: RC-MM protocol 32 bits
198198 * @RC_PROTO_XBOX_DVD: Xbox DVD Movie Playback Kit protocol
199+ * @RC_PROTO_MAX: Maximum value of enum rc_proto
199200 */
200201 enum rc_proto {
201202 RC_PROTO_UNKNOWN = 0,
@@ -226,6 +227,7 @@ enum rc_proto { · 24 unmodified lines
226227 RC_PROTO_RCMM24 = 25,
227228 RC_PROTO_RCMM32 = 26,
228229 RC_PROTO_XBOX_DVD = 27,
230+ RC_PROTO_MAX = RC_PROTO_XBOX_DVD,
229231 };
230232
231233 #endif
include/uapi/linux/media-bus-format.h+8−0
@@ -157,4 +157,12 @@ · 156 unmodified lines
157157 /* HSV - next is 0x6002 */
158158 #define MEDIA_BUS_FMT_AHSV8888_1X32 0x6001
159159
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+
160168 #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+
127+enum 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+
136+enum 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+
142+enum 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+ */
152+enum 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+ */
162+enum 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+ */
180+struct 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+ */
198+struct 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+ */
218+struct 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+ */
239+struct 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+ */
260+struct 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+ */
277+struct 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+ */
292+struct 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+ */
305+struct 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+ */
326+struct 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+ */
356+struct 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+ */
379+struct 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+ */
407+struct 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+ */
436+struct 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+ */
464+struct 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+ */
486+struct 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+ */
498+struct rkisp1_cif_isp_ctk_config {
499+ __u16 coeff[3][3];
500+ __u16 ct_offset[3];
501+};
502+
503+enum 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+ */
514+struct 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+ */
528+struct 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+ */
542+struct 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+ */
557+struct 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+ */
576+enum 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+ */
593+enum 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+ */
603+enum 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+ */
614+struct 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+ */
628+struct 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+ */
642+struct 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+ */
659+struct 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+ */
675+struct 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+ */
689+struct 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+ */
713+struct 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+ */
737+struct 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+ */
754+struct 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+ */
777+struct 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+ */
789+struct 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+ */
801+struct 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+ */
816+struct 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+ */
827+struct 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+ */
840+struct 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+ */
852+struct 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+ */
864+struct 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+ */
878+struct 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
5454
5555 /* Control classes */
5656 #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 */
5858 #define V4L2_CTRL_CLASS_CAMERA 0x009a0000 /* Camera class controls */
5959 #define V4L2_CTRL_CLASS_FM_TX 0x009b0000 /* FM Modulator controls */
6060 #define V4L2_CTRL_CLASS_FLASH 0x009c0000 /* Camera flash controls */
@@ -65,6 +65,7 @@ · 4 unmodified lines
6565 #define V4L2_CTRL_CLASS_FM_RX 0x00a10000 /* FM Receiver controls */
6666 #define V4L2_CTRL_CLASS_RF_TUNER 0x00a20000 /* RF tuner controls */
6767 #define V4L2_CTRL_CLASS_DETECT 0x00a30000 /* Detection controls */
68+#define V4L2_CTRL_CLASS_CODEC_STATELESS 0x00a40000 /* Stateless codecs controls */
6869
6970 /* User-class control IDs */
7071
@@ -198,15 +199,21 @@ enum v4l2_colorfx { · 127 unmodified lines
198199 */
199200 #define V4L2_CID_USER_ATMEL_ISC_BASE (V4L2_CID_USER_BASE + 0x10c0)
200201
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+
201208 /* MPEG-class control IDs */
202209 /* The MPEG controls are applicable to all codec controls
203210 * and the 'MPEG' part of the define is historical */
204211
205−#define V4L2_CID_MPEG_BASE (V4L2_CTRL_CLASS_MPEG | 0x900)
206−#define V4L2_CID_MPEG_CLASS (V4L2_CTRL_CLASS_MPEG | 1)
212+#define V4L2_CID_CODEC_BASE (V4L2_CTRL_CLASS_CODEC | 0x900)
213+#define V4L2_CID_CODEC_CLASS (V4L2_CTRL_CLASS_CODEC | 1)
207214
208215 /* 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)
210217 enum v4l2_mpeg_stream_type {
211218 V4L2_MPEG_STREAM_TYPE_MPEG2_PS = 0, /* MPEG-2 program stream */
212219 V4L2_MPEG_STREAM_TYPE_MPEG2_TS = 1, /* MPEG-2 transport stream */
@@ -215,26 +222,26 @@ enum v4l2_mpeg_stream_type { · 2 unmodified lines
215222 V4L2_MPEG_STREAM_TYPE_MPEG1_VCD = 4, /* MPEG-1 VCD-compatible stream */
216223 V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD = 5, /* MPEG-2 SVCD-compatible stream */
217224 };
218−#define V4L2_CID_MPEG_STREAM_PID_PMT (V4L2_CID_MPEG_BASE+1)
219−#define V4L2_CID_MPEG_STREAM_PID_AUDIO (V4L2_CID_MPEG_BASE+2)
220−#define V4L2_CID_MPEG_STREAM_PID_VIDEO (V4L2_CID_MPEG_BASE+3)
221−#define V4L2_CID_MPEG_STREAM_PID_PCR (V4L2_CID_MPEG_BASE+4)
222−#define V4L2_CID_MPEG_STREAM_PES_ID_AUDIO (V4L2_CID_MPEG_BASE+5)
223−#define V4L2_CID_MPEG_STREAM_PES_ID_VIDEO (V4L2_CID_MPEG_BASE+6)
224−#define V4L2_CID_MPEG_STREAM_VBI_FMT (V4L2_CID_MPEG_BASE+7)
225+#define V4L2_CID_MPEG_STREAM_PID_PMT (V4L2_CID_CODEC_BASE+1)
226+#define V4L2_CID_MPEG_STREAM_PID_AUDIO (V4L2_CID_CODEC_BASE+2)
227+#define V4L2_CID_MPEG_STREAM_PID_VIDEO (V4L2_CID_CODEC_BASE+3)
228+#define V4L2_CID_MPEG_STREAM_PID_PCR (V4L2_CID_CODEC_BASE+4)
229+#define V4L2_CID_MPEG_STREAM_PES_ID_AUDIO (V4L2_CID_CODEC_BASE+5)
230+#define V4L2_CID_MPEG_STREAM_PES_ID_VIDEO (V4L2_CID_CODEC_BASE+6)
231+#define V4L2_CID_MPEG_STREAM_VBI_FMT (V4L2_CID_CODEC_BASE+7)
225232 enum v4l2_mpeg_stream_vbi_fmt {
226233 V4L2_MPEG_STREAM_VBI_FMT_NONE = 0, /* No VBI in the MPEG stream */
227234 V4L2_MPEG_STREAM_VBI_FMT_IVTV = 1, /* VBI in private packets, IVTV format */
228235 };
229236
230237 /* 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)
232239 enum v4l2_mpeg_audio_sampling_freq {
233240 V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100 = 0,
234241 V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000 = 1,
235242 V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000 = 2,
236243 };
237−#define V4L2_CID_MPEG_AUDIO_ENCODING (V4L2_CID_MPEG_BASE+101)
244+#define V4L2_CID_MPEG_AUDIO_ENCODING (V4L2_CID_CODEC_BASE+101)
238245 enum v4l2_mpeg_audio_encoding {
239246 V4L2_MPEG_AUDIO_ENCODING_LAYER_1 = 0,
240247 V4L2_MPEG_AUDIO_ENCODING_LAYER_2 = 1,
@@ -242,7 +249,7 @@ enum v4l2_mpeg_audio_encoding { · 1 unmodified line
242249 V4L2_MPEG_AUDIO_ENCODING_AAC = 3,
243250 V4L2_MPEG_AUDIO_ENCODING_AC3 = 4,
244251 };
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)
246253 enum v4l2_mpeg_audio_l1_bitrate {
247254 V4L2_MPEG_AUDIO_L1_BITRATE_32K = 0,
248255 V4L2_MPEG_AUDIO_L1_BITRATE_64K = 1,
@@ -259,7 +266,7 @@ enum v4l2_mpeg_audio_l1_bitrate { · 10 unmodified lines
259266 V4L2_MPEG_AUDIO_L1_BITRATE_416K = 12,
260267 V4L2_MPEG_AUDIO_L1_BITRATE_448K = 13,
261268 };
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)
263270 enum v4l2_mpeg_audio_l2_bitrate {
264271 V4L2_MPEG_AUDIO_L2_BITRATE_32K = 0,
265272 V4L2_MPEG_AUDIO_L2_BITRATE_48K = 1,
@@ -276,7 +283,7 @@ enum v4l2_mpeg_audio_l2_bitrate { · 10 unmodified lines
276283 V4L2_MPEG_AUDIO_L2_BITRATE_320K = 12,
277284 V4L2_MPEG_AUDIO_L2_BITRATE_384K = 13,
278285 };
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)
280287 enum v4l2_mpeg_audio_l3_bitrate {
281288 V4L2_MPEG_AUDIO_L3_BITRATE_32K = 0,
282289 V4L2_MPEG_AUDIO_L3_BITRATE_40K = 1,
@@ -293,34 +300,34 @@ enum v4l2_mpeg_audio_l3_bitrate { · 10 unmodified lines
293300 V4L2_MPEG_AUDIO_L3_BITRATE_256K = 12,
294301 V4L2_MPEG_AUDIO_L3_BITRATE_320K = 13,
295302 };
296−#define V4L2_CID_MPEG_AUDIO_MODE (V4L2_CID_MPEG_BASE+105)
303+#define V4L2_CID_MPEG_AUDIO_MODE (V4L2_CID_CODEC_BASE+105)
297304 enum v4l2_mpeg_audio_mode {
298305 V4L2_MPEG_AUDIO_MODE_STEREO = 0,
299306 V4L2_MPEG_AUDIO_MODE_JOINT_STEREO = 1,
300307 V4L2_MPEG_AUDIO_MODE_DUAL = 2,
301308 V4L2_MPEG_AUDIO_MODE_MONO = 3,
302309 };
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)
304311 enum v4l2_mpeg_audio_mode_extension {
305312 V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4 = 0,
306313 V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8 = 1,
307314 V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12 = 2,
308315 V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16 = 3,
309316 };
310−#define V4L2_CID_MPEG_AUDIO_EMPHASIS (V4L2_CID_MPEG_BASE+107)
317+#define V4L2_CID_MPEG_AUDIO_EMPHASIS (V4L2_CID_CODEC_BASE+107)
311318 enum v4l2_mpeg_audio_emphasis {
312319 V4L2_MPEG_AUDIO_EMPHASIS_NONE = 0,
313320 V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS = 1,
314321 V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17 = 2,
315322 };
316−#define V4L2_CID_MPEG_AUDIO_CRC (V4L2_CID_MPEG_BASE+108)
323+#define V4L2_CID_MPEG_AUDIO_CRC (V4L2_CID_CODEC_BASE+108)
317324 enum v4l2_mpeg_audio_crc {
318325 V4L2_MPEG_AUDIO_CRC_NONE = 0,
319326 V4L2_MPEG_AUDIO_CRC_CRC16 = 1,
320327 };
321−#define V4L2_CID_MPEG_AUDIO_MUTE (V4L2_CID_MPEG_BASE+109)
322−#define V4L2_CID_MPEG_AUDIO_AAC_BITRATE (V4L2_CID_MPEG_BASE+110)
323−#define V4L2_CID_MPEG_AUDIO_AC3_BITRATE (V4L2_CID_MPEG_BASE+111)
328+#define V4L2_CID_MPEG_AUDIO_MUTE (V4L2_CID_CODEC_BASE+109)
329+#define V4L2_CID_MPEG_AUDIO_AAC_BITRATE (V4L2_CID_CODEC_BASE+110)
330+#define V4L2_CID_MPEG_AUDIO_AC3_BITRATE (V4L2_CID_CODEC_BASE+111)
324331 enum v4l2_mpeg_audio_ac3_bitrate {
325332 V4L2_MPEG_AUDIO_AC3_BITRATE_32K = 0,
326333 V4L2_MPEG_AUDIO_AC3_BITRATE_40K = 1,
@@ -342,7 +349,7 @@ enum v4l2_mpeg_audio_ac3_bitrate { · 15 unmodified lines
342349 V4L2_MPEG_AUDIO_AC3_BITRATE_576K = 17,
343350 V4L2_MPEG_AUDIO_AC3_BITRATE_640K = 18,
344351 };
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)
346353 enum v4l2_mpeg_audio_dec_playback {
347354 V4L2_MPEG_AUDIO_DEC_PLAYBACK_AUTO = 0,
348355 V4L2_MPEG_AUDIO_DEC_PLAYBACK_STEREO = 1,
@@ -351,52 +358,52 @@ enum v4l2_mpeg_audio_dec_playback { · 2 unmodified lines
351358 V4L2_MPEG_AUDIO_DEC_PLAYBACK_MONO = 4,
352359 V4L2_MPEG_AUDIO_DEC_PLAYBACK_SWAPPED_STEREO = 5,
353360 };
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)
355362
356363 /* 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)
358365 enum v4l2_mpeg_video_encoding {
359366 V4L2_MPEG_VIDEO_ENCODING_MPEG_1 = 0,
360367 V4L2_MPEG_VIDEO_ENCODING_MPEG_2 = 1,
361368 V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC = 2,
362369 };
363−#define V4L2_CID_MPEG_VIDEO_ASPECT (V4L2_CID_MPEG_BASE+201)
370+#define V4L2_CID_MPEG_VIDEO_ASPECT (V4L2_CID_CODEC_BASE+201)
364371 enum v4l2_mpeg_video_aspect {
365372 V4L2_MPEG_VIDEO_ASPECT_1x1 = 0,
366373 V4L2_MPEG_VIDEO_ASPECT_4x3 = 1,
367374 V4L2_MPEG_VIDEO_ASPECT_16x9 = 2,
368375 V4L2_MPEG_VIDEO_ASPECT_221x100 = 3,
369376 };
370−#define V4L2_CID_MPEG_VIDEO_B_FRAMES (V4L2_CID_MPEG_BASE+202)
371−#define V4L2_CID_MPEG_VIDEO_GOP_SIZE (V4L2_CID_MPEG_BASE+203)
372−#define V4L2_CID_MPEG_VIDEO_GOP_CLOSURE (V4L2_CID_MPEG_BASE+204)
373−#define V4L2_CID_MPEG_VIDEO_PULLDOWN (V4L2_CID_MPEG_BASE+205)
374−#define V4L2_CID_MPEG_VIDEO_BITRATE_MODE (V4L2_CID_MPEG_BASE+206)
377+#define V4L2_CID_MPEG_VIDEO_B_FRAMES (V4L2_CID_CODEC_BASE+202)
378+#define V4L2_CID_MPEG_VIDEO_GOP_SIZE (V4L2_CID_CODEC_BASE+203)
379+#define V4L2_CID_MPEG_VIDEO_GOP_CLOSURE (V4L2_CID_CODEC_BASE+204)
380+#define V4L2_CID_MPEG_VIDEO_PULLDOWN (V4L2_CID_CODEC_BASE+205)
381+#define V4L2_CID_MPEG_VIDEO_BITRATE_MODE (V4L2_CID_CODEC_BASE+206)
375382 enum v4l2_mpeg_video_bitrate_mode {
376383 V4L2_MPEG_VIDEO_BITRATE_MODE_VBR = 0,
377384 V4L2_MPEG_VIDEO_BITRATE_MODE_CBR = 1,
378385 V4L2_MPEG_VIDEO_BITRATE_MODE_CQ = 2,
379386 };
380−#define V4L2_CID_MPEG_VIDEO_BITRATE (V4L2_CID_MPEG_BASE+207)
381−#define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK (V4L2_CID_MPEG_BASE+208)
382−#define V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (V4L2_CID_MPEG_BASE+209)
383−#define V4L2_CID_MPEG_VIDEO_MUTE (V4L2_CID_MPEG_BASE+210)
384−#define V4L2_CID_MPEG_VIDEO_MUTE_YUV (V4L2_CID_MPEG_BASE+211)
385−#define V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE (V4L2_CID_MPEG_BASE+212)
386−#define V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER (V4L2_CID_MPEG_BASE+213)
387−#define V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB (V4L2_CID_MPEG_BASE+214)
388−#define V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE (V4L2_CID_MPEG_BASE+215)
389−#define V4L2_CID_MPEG_VIDEO_HEADER_MODE (V4L2_CID_MPEG_BASE+216)
387+#define V4L2_CID_MPEG_VIDEO_BITRATE (V4L2_CID_CODEC_BASE+207)
388+#define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK (V4L2_CID_CODEC_BASE+208)
389+#define V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (V4L2_CID_CODEC_BASE+209)
390+#define V4L2_CID_MPEG_VIDEO_MUTE (V4L2_CID_CODEC_BASE+210)
391+#define V4L2_CID_MPEG_VIDEO_MUTE_YUV (V4L2_CID_CODEC_BASE+211)
392+#define V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE (V4L2_CID_CODEC_BASE+212)
393+#define V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER (V4L2_CID_CODEC_BASE+213)
394+#define V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB (V4L2_CID_CODEC_BASE+214)
395+#define V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE (V4L2_CID_CODEC_BASE+215)
396+#define V4L2_CID_MPEG_VIDEO_HEADER_MODE (V4L2_CID_CODEC_BASE+216)
390397 enum v4l2_mpeg_video_header_mode {
391398 V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE = 0,
392399 V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME = 1,
393400
394401 };
395−#define V4L2_CID_MPEG_VIDEO_MAX_REF_PIC (V4L2_CID_MPEG_BASE+217)
396−#define V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE (V4L2_CID_MPEG_BASE+218)
397−#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES (V4L2_CID_MPEG_BASE+219)
398−#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB (V4L2_CID_MPEG_BASE+220)
399−#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE (V4L2_CID_MPEG_BASE+221)
402+#define V4L2_CID_MPEG_VIDEO_MAX_REF_PIC (V4L2_CID_CODEC_BASE+217)
403+#define V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE (V4L2_CID_CODEC_BASE+218)
404+#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES (V4L2_CID_CODEC_BASE+219)
405+#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB (V4L2_CID_CODEC_BASE+220)
406+#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE (V4L2_CID_CODEC_BASE+221)
400407 enum v4l2_mpeg_video_multi_slice_mode {
401408 V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE = 0,
402409 V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_MB = 1,
@@ -407,24 +414,24 @@ enum v4l2_mpeg_video_multi_slice_mode { · 4 unmodified lines
407414 V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_BYTES = 2,
408415 #endif
409416 };
410−#define V4L2_CID_MPEG_VIDEO_VBV_SIZE (V4L2_CID_MPEG_BASE+222)
411−#define V4L2_CID_MPEG_VIDEO_DEC_PTS (V4L2_CID_MPEG_BASE+223)
412−#define V4L2_CID_MPEG_VIDEO_DEC_FRAME (V4L2_CID_MPEG_BASE+224)
413−#define V4L2_CID_MPEG_VIDEO_VBV_DELAY (V4L2_CID_MPEG_BASE+225)
414−#define V4L2_CID_MPEG_VIDEO_REPEAT_SEQ_HEADER (V4L2_CID_MPEG_BASE+226)
415−#define V4L2_CID_MPEG_VIDEO_MV_H_SEARCH_RANGE (V4L2_CID_MPEG_BASE+227)
416−#define V4L2_CID_MPEG_VIDEO_MV_V_SEARCH_RANGE (V4L2_CID_MPEG_BASE+228)
417−#define V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME (V4L2_CID_MPEG_BASE+229)
417+#define V4L2_CID_MPEG_VIDEO_VBV_SIZE (V4L2_CID_CODEC_BASE+222)
418+#define V4L2_CID_MPEG_VIDEO_DEC_PTS (V4L2_CID_CODEC_BASE+223)
419+#define V4L2_CID_MPEG_VIDEO_DEC_FRAME (V4L2_CID_CODEC_BASE+224)
420+#define V4L2_CID_MPEG_VIDEO_VBV_DELAY (V4L2_CID_CODEC_BASE+225)
421+#define V4L2_CID_MPEG_VIDEO_REPEAT_SEQ_HEADER (V4L2_CID_CODEC_BASE+226)
422+#define V4L2_CID_MPEG_VIDEO_MV_H_SEARCH_RANGE (V4L2_CID_CODEC_BASE+227)
423+#define V4L2_CID_MPEG_VIDEO_MV_V_SEARCH_RANGE (V4L2_CID_CODEC_BASE+228)
424+#define V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME (V4L2_CID_CODEC_BASE+229)
418425
419426 /* 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)
421428 enum v4l2_mpeg_video_mpeg2_level {
422429 V4L2_MPEG_VIDEO_MPEG2_LEVEL_LOW = 0,
423430 V4L2_MPEG_VIDEO_MPEG2_LEVEL_MAIN = 1,
424431 V4L2_MPEG_VIDEO_MPEG2_LEVEL_HIGH_1440 = 2,
425432 V4L2_MPEG_VIDEO_MPEG2_LEVEL_HIGH = 3,
426433 };
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)
428435 enum v4l2_mpeg_video_mpeg2_profile {
429436 V4L2_MPEG_VIDEO_MPEG2_PROFILE_SIMPLE = 0,
430437 V4L2_MPEG_VIDEO_MPEG2_PROFILE_MAIN = 1,
@@ -435,28 +442,28 @@ enum v4l2_mpeg_video_mpeg2_profile { · 4 unmodified lines
435442 };
436443
437444 /* CIDs for the FWHT codec as used by the vicodec driver. */
438−#define V4L2_CID_FWHT_I_FRAME_QP (V4L2_CID_MPEG_BASE + 290)
439−#define V4L2_CID_FWHT_P_FRAME_QP (V4L2_CID_MPEG_BASE + 291)
440−
441−#define V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP (V4L2_CID_MPEG_BASE+300)
442−#define V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP (V4L2_CID_MPEG_BASE+301)
443−#define V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP (V4L2_CID_MPEG_BASE+302)
444−#define V4L2_CID_MPEG_VIDEO_H263_MIN_QP (V4L2_CID_MPEG_BASE+303)
445−#define V4L2_CID_MPEG_VIDEO_H263_MAX_QP (V4L2_CID_MPEG_BASE+304)
446−#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP (V4L2_CID_MPEG_BASE+350)
447−#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP (V4L2_CID_MPEG_BASE+351)
448−#define V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP (V4L2_CID_MPEG_BASE+352)
449−#define V4L2_CID_MPEG_VIDEO_H264_MIN_QP (V4L2_CID_MPEG_BASE+353)
450−#define V4L2_CID_MPEG_VIDEO_H264_MAX_QP (V4L2_CID_MPEG_BASE+354)
451−#define V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM (V4L2_CID_MPEG_BASE+355)
452−#define V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE (V4L2_CID_MPEG_BASE+356)
453−#define V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE (V4L2_CID_MPEG_BASE+357)
445+#define V4L2_CID_FWHT_I_FRAME_QP (V4L2_CID_CODEC_BASE + 290)
446+#define V4L2_CID_FWHT_P_FRAME_QP (V4L2_CID_CODEC_BASE + 291)
447+
448+#define V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP (V4L2_CID_CODEC_BASE+300)
449+#define V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP (V4L2_CID_CODEC_BASE+301)
450+#define V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP (V4L2_CID_CODEC_BASE+302)
451+#define V4L2_CID_MPEG_VIDEO_H263_MIN_QP (V4L2_CID_CODEC_BASE+303)
452+#define V4L2_CID_MPEG_VIDEO_H263_MAX_QP (V4L2_CID_CODEC_BASE+304)
453+#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP (V4L2_CID_CODEC_BASE+350)
454+#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP (V4L2_CID_CODEC_BASE+351)
455+#define V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP (V4L2_CID_CODEC_BASE+352)
456+#define V4L2_CID_MPEG_VIDEO_H264_MIN_QP (V4L2_CID_CODEC_BASE+353)
457+#define V4L2_CID_MPEG_VIDEO_H264_MAX_QP (V4L2_CID_CODEC_BASE+354)
458+#define V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM (V4L2_CID_CODEC_BASE+355)
459+#define V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE (V4L2_CID_CODEC_BASE+356)
460+#define V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE (V4L2_CID_CODEC_BASE+357)
454461 enum v4l2_mpeg_video_h264_entropy_mode {
455462 V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC = 0,
456463 V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC = 1,
457464 };
458−#define V4L2_CID_MPEG_VIDEO_H264_I_PERIOD (V4L2_CID_MPEG_BASE+358)
459−#define V4L2_CID_MPEG_VIDEO_H264_LEVEL (V4L2_CID_MPEG_BASE+359)
465+#define V4L2_CID_MPEG_VIDEO_H264_I_PERIOD (V4L2_CID_CODEC_BASE+358)
466+#define V4L2_CID_MPEG_VIDEO_H264_LEVEL (V4L2_CID_CODEC_BASE+359)
460467 enum v4l2_mpeg_video_h264_level {
461468 V4L2_MPEG_VIDEO_H264_LEVEL_1_0 = 0,
462469 V4L2_MPEG_VIDEO_H264_LEVEL_1B = 1,
@@ -479,15 +486,15 @@ enum v4l2_mpeg_video_h264_level { · 16 unmodified lines
479486 V4L2_MPEG_VIDEO_H264_LEVEL_6_1 = 18,
480487 V4L2_MPEG_VIDEO_H264_LEVEL_6_2 = 19,
481488 };
482−#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA (V4L2_CID_MPEG_BASE+360)
483−#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA (V4L2_CID_MPEG_BASE+361)
484−#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE (V4L2_CID_MPEG_BASE+362)
489+#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA (V4L2_CID_CODEC_BASE+360)
490+#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA (V4L2_CID_CODEC_BASE+361)
491+#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE (V4L2_CID_CODEC_BASE+362)
485492 enum v4l2_mpeg_video_h264_loop_filter_mode {
486493 V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED = 0,
487494 V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED = 1,
488495 V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY = 2,
489496 };
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)
491498 enum v4l2_mpeg_video_h264_profile {
492499 V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE = 0,
493500 V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE = 1,
@@ -508,10 +515,10 @@ enum v4l2_mpeg_video_h264_profile { · 14 unmodified lines
508515 V4L2_MPEG_VIDEO_H264_PROFILE_MULTIVIEW_HIGH = 16,
509516 V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH = 17,
510517 };
511−#define V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_HEIGHT (V4L2_CID_MPEG_BASE+364)
512−#define V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_WIDTH (V4L2_CID_MPEG_BASE+365)
513−#define V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_ENABLE (V4L2_CID_MPEG_BASE+366)
514−#define V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC (V4L2_CID_MPEG_BASE+367)
518+#define V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_HEIGHT (V4L2_CID_CODEC_BASE+364)
519+#define V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_WIDTH (V4L2_CID_CODEC_BASE+365)
520+#define V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_ENABLE (V4L2_CID_CODEC_BASE+366)
521+#define V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC (V4L2_CID_CODEC_BASE+367)
515522 enum v4l2_mpeg_video_h264_vui_sar_idc {
516523 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_UNSPECIFIED = 0,
517524 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_1x1 = 1,
@@ -532,9 +539,9 @@ enum v4l2_mpeg_video_h264_vui_sar_idc { · 14 unmodified lines
532539 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_2x1 = 16,
533540 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_EXTENDED = 17,
534541 };
535−#define V4L2_CID_MPEG_VIDEO_H264_SEI_FRAME_PACKING (V4L2_CID_MPEG_BASE+368)
536−#define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_CURRENT_FRAME_0 (V4L2_CID_MPEG_BASE+369)
537−#define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE (V4L2_CID_MPEG_BASE+370)
542+#define V4L2_CID_MPEG_VIDEO_H264_SEI_FRAME_PACKING (V4L2_CID_CODEC_BASE+368)
543+#define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_CURRENT_FRAME_0 (V4L2_CID_CODEC_BASE+369)
544+#define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE (V4L2_CID_CODEC_BASE+370)
538545 enum v4l2_mpeg_video_h264_sei_fp_arrangement_type {
539546 V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_CHECKERBOARD = 0,
540547 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
543550 V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TOP_BOTTOM = 4,
544551 V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TEMPORAL = 5,
545552 };
546−#define V4L2_CID_MPEG_VIDEO_H264_FMO (V4L2_CID_MPEG_BASE+371)
547−#define V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE (V4L2_CID_MPEG_BASE+372)
553+#define V4L2_CID_MPEG_VIDEO_H264_FMO (V4L2_CID_CODEC_BASE+371)
554+#define V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE (V4L2_CID_CODEC_BASE+372)
548555 enum v4l2_mpeg_video_h264_fmo_map_type {
549556 V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_INTERLEAVED_SLICES = 0,
550557 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
554561 V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_WIPE_SCAN = 5,
555562 V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_EXPLICIT = 6,
556563 };
557−#define V4L2_CID_MPEG_VIDEO_H264_FMO_SLICE_GROUP (V4L2_CID_MPEG_BASE+373)
558−#define V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_DIRECTION (V4L2_CID_MPEG_BASE+374)
564+#define V4L2_CID_MPEG_VIDEO_H264_FMO_SLICE_GROUP (V4L2_CID_CODEC_BASE+373)
565+#define V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_DIRECTION (V4L2_CID_CODEC_BASE+374)
559566 enum v4l2_mpeg_video_h264_fmo_change_dir {
560567 V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_RIGHT = 0,
561568 V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_LEFT = 1,
562569 };
563−#define V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_RATE (V4L2_CID_MPEG_BASE+375)
564−#define V4L2_CID_MPEG_VIDEO_H264_FMO_RUN_LENGTH (V4L2_CID_MPEG_BASE+376)
565−#define V4L2_CID_MPEG_VIDEO_H264_ASO (V4L2_CID_MPEG_BASE+377)
566−#define V4L2_CID_MPEG_VIDEO_H264_ASO_SLICE_ORDER (V4L2_CID_MPEG_BASE+378)
567−#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING (V4L2_CID_MPEG_BASE+379)
568−#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE (V4L2_CID_MPEG_BASE+380)
570+#define V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_RATE (V4L2_CID_CODEC_BASE+375)
571+#define V4L2_CID_MPEG_VIDEO_H264_FMO_RUN_LENGTH (V4L2_CID_CODEC_BASE+376)
572+#define V4L2_CID_MPEG_VIDEO_H264_ASO (V4L2_CID_CODEC_BASE+377)
573+#define V4L2_CID_MPEG_VIDEO_H264_ASO_SLICE_ORDER (V4L2_CID_CODEC_BASE+378)
574+#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING (V4L2_CID_CODEC_BASE+379)
575+#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE (V4L2_CID_CODEC_BASE+380)
569576 enum v4l2_mpeg_video_h264_hierarchical_coding_type {
570577 V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B = 0,
571578 V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P = 1,
572579 };
573−#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER (V4L2_CID_MPEG_BASE+381)
574−#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP (V4L2_CID_MPEG_BASE+382)
575−#define V4L2_CID_MPEG_VIDEO_H264_CONSTRAINED_INTRA_PREDICTION (V4L2_CID_MPEG_BASE+383)
576−#define V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET (V4L2_CID_MPEG_BASE+384)
577−#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP (V4L2_CID_MPEG_BASE+385)
578−#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP (V4L2_CID_MPEG_BASE+386)
579−#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP (V4L2_CID_MPEG_BASE+387)
580−#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP (V4L2_CID_MPEG_BASE+388)
581−#define V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP (V4L2_CID_MPEG_BASE+400)
582−#define V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP (V4L2_CID_MPEG_BASE+401)
583−#define V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP (V4L2_CID_MPEG_BASE+402)
584−#define V4L2_CID_MPEG_VIDEO_MPEG4_MIN_QP (V4L2_CID_MPEG_BASE+403)
585−#define V4L2_CID_MPEG_VIDEO_MPEG4_MAX_QP (V4L2_CID_MPEG_BASE+404)
586−#define V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL (V4L2_CID_MPEG_BASE+405)
580+#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER (V4L2_CID_CODEC_BASE+381)
581+#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP (V4L2_CID_CODEC_BASE+382)
582+#define V4L2_CID_MPEG_VIDEO_H264_CONSTRAINED_INTRA_PREDICTION (V4L2_CID_CODEC_BASE+383)
583+#define V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET (V4L2_CID_CODEC_BASE+384)
584+#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP (V4L2_CID_CODEC_BASE+385)
585+#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP (V4L2_CID_CODEC_BASE+386)
586+#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP (V4L2_CID_CODEC_BASE+387)
587+#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP (V4L2_CID_CODEC_BASE+388)
588+#define V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP (V4L2_CID_CODEC_BASE+400)
589+#define V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP (V4L2_CID_CODEC_BASE+401)
590+#define V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP (V4L2_CID_CODEC_BASE+402)
591+#define V4L2_CID_MPEG_VIDEO_MPEG4_MIN_QP (V4L2_CID_CODEC_BASE+403)
592+#define V4L2_CID_MPEG_VIDEO_MPEG4_MAX_QP (V4L2_CID_CODEC_BASE+404)
593+#define V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL (V4L2_CID_CODEC_BASE+405)
587594 enum v4l2_mpeg_video_mpeg4_level {
588595 V4L2_MPEG_VIDEO_MPEG4_LEVEL_0 = 0,
589596 V4L2_MPEG_VIDEO_MPEG4_LEVEL_0B = 1,
@@ -594,7 +601,7 @@ enum v4l2_mpeg_video_mpeg4_level { · 4 unmodified lines
594601 V4L2_MPEG_VIDEO_MPEG4_LEVEL_4 = 6,
595602 V4L2_MPEG_VIDEO_MPEG4_LEVEL_5 = 7,
596603 };
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)
598605 enum v4l2_mpeg_video_mpeg4_profile {
599606 V4L2_MPEG_VIDEO_MPEG4_PROFILE_SIMPLE = 0,
600607 V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_SIMPLE = 1,
@@ -602,40 +609,40 @@ enum v4l2_mpeg_video_mpeg4_profile { · 1 unmodified line
602609 V4L2_MPEG_VIDEO_MPEG4_PROFILE_SIMPLE_SCALABLE = 3,
603610 V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_CODING_EFFICIENCY = 4,
604611 };
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)
606613
607614 /* Control IDs for VP8 streams
608615 * Although VP8 is not part of MPEG we add these controls to the MPEG class
609616 * as that class is already handling other video compression standards
610617 */
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)
612619 enum v4l2_vp8_num_partitions {
613620 V4L2_CID_MPEG_VIDEO_VPX_1_PARTITION = 0,
614621 V4L2_CID_MPEG_VIDEO_VPX_2_PARTITIONS = 1,
615622 V4L2_CID_MPEG_VIDEO_VPX_4_PARTITIONS = 2,
616623 V4L2_CID_MPEG_VIDEO_VPX_8_PARTITIONS = 3,
617624 };
618−#define V4L2_CID_MPEG_VIDEO_VPX_IMD_DISABLE_4X4 (V4L2_CID_MPEG_BASE+501)
619−#define V4L2_CID_MPEG_VIDEO_VPX_NUM_REF_FRAMES (V4L2_CID_MPEG_BASE+502)
625+#define V4L2_CID_MPEG_VIDEO_VPX_IMD_DISABLE_4X4 (V4L2_CID_CODEC_BASE+501)
626+#define V4L2_CID_MPEG_VIDEO_VPX_NUM_REF_FRAMES (V4L2_CID_CODEC_BASE+502)
620627 enum v4l2_vp8_num_ref_frames {
621628 V4L2_CID_MPEG_VIDEO_VPX_1_REF_FRAME = 0,
622629 V4L2_CID_MPEG_VIDEO_VPX_2_REF_FRAME = 1,
623630 V4L2_CID_MPEG_VIDEO_VPX_3_REF_FRAME = 2,
624631 };
625−#define V4L2_CID_MPEG_VIDEO_VPX_FILTER_LEVEL (V4L2_CID_MPEG_BASE+503)
626−#define V4L2_CID_MPEG_VIDEO_VPX_FILTER_SHARPNESS (V4L2_CID_MPEG_BASE+504)
627−#define V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD (V4L2_CID_MPEG_BASE+505)
628−#define V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL (V4L2_CID_MPEG_BASE+506)
632+#define V4L2_CID_MPEG_VIDEO_VPX_FILTER_LEVEL (V4L2_CID_CODEC_BASE+503)
633+#define V4L2_CID_MPEG_VIDEO_VPX_FILTER_SHARPNESS (V4L2_CID_CODEC_BASE+504)
634+#define V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD (V4L2_CID_CODEC_BASE+505)
635+#define V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL (V4L2_CID_CODEC_BASE+506)
629636 enum v4l2_vp8_golden_frame_sel {
630637 V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_PREV = 0,
631638 V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_REF_PERIOD = 1,
632639 };
633−#define V4L2_CID_MPEG_VIDEO_VPX_MIN_QP (V4L2_CID_MPEG_BASE+507)
634−#define V4L2_CID_MPEG_VIDEO_VPX_MAX_QP (V4L2_CID_MPEG_BASE+508)
635−#define V4L2_CID_MPEG_VIDEO_VPX_I_FRAME_QP (V4L2_CID_MPEG_BASE+509)
636−#define V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP (V4L2_CID_MPEG_BASE+510)
640+#define V4L2_CID_MPEG_VIDEO_VPX_MIN_QP (V4L2_CID_CODEC_BASE+507)
641+#define V4L2_CID_MPEG_VIDEO_VPX_MAX_QP (V4L2_CID_CODEC_BASE+508)
642+#define V4L2_CID_MPEG_VIDEO_VPX_I_FRAME_QP (V4L2_CID_CODEC_BASE+509)
643+#define V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP (V4L2_CID_CODEC_BASE+510)
637644
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)
639646 enum v4l2_mpeg_video_vp8_profile {
640647 V4L2_MPEG_VIDEO_VP8_PROFILE_0 = 0,
641648 V4L2_MPEG_VIDEO_VP8_PROFILE_1 = 1,
@@ -644,14 +651,14 @@ enum v4l2_mpeg_video_vp8_profile { · 2 unmodified lines
644651 };
645652 /* Deprecated alias for compatibility reasons. */
646653 #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)
648655 enum v4l2_mpeg_video_vp9_profile {
649656 V4L2_MPEG_VIDEO_VP9_PROFILE_0 = 0,
650657 V4L2_MPEG_VIDEO_VP9_PROFILE_1 = 1,
651658 V4L2_MPEG_VIDEO_VP9_PROFILE_2 = 2,
652659 V4L2_MPEG_VIDEO_VP9_PROFILE_3 = 3,
653660 };
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)
655662 enum v4l2_mpeg_video_vp9_level {
656663 V4L2_MPEG_VIDEO_VP9_LEVEL_1_0 = 0,
657664 V4L2_MPEG_VIDEO_VP9_LEVEL_1_1 = 1,
@@ -671,32 +678,32 @@ enum v4l2_mpeg_video_vp9_level { · 13 unmodified lines
671678
672679 /* CIDs for HEVC encoding. */
673680
674−#define V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP (V4L2_CID_MPEG_BASE + 600)
675−#define V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP (V4L2_CID_MPEG_BASE + 601)
676−#define V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP (V4L2_CID_MPEG_BASE + 602)
677−#define V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_QP (V4L2_CID_MPEG_BASE + 603)
678−#define V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP (V4L2_CID_MPEG_BASE + 604)
679−#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_QP (V4L2_CID_MPEG_BASE + 605)
680−#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_TYPE (V4L2_CID_MPEG_BASE + 606)
681+#define V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP (V4L2_CID_CODEC_BASE + 600)
682+#define V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP (V4L2_CID_CODEC_BASE + 601)
683+#define V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP (V4L2_CID_CODEC_BASE + 602)
684+#define V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_QP (V4L2_CID_CODEC_BASE + 603)
685+#define V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP (V4L2_CID_CODEC_BASE + 604)
686+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_QP (V4L2_CID_CODEC_BASE + 605)
687+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_TYPE (V4L2_CID_CODEC_BASE + 606)
681688 enum v4l2_mpeg_video_hevc_hier_coding_type {
682689 V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B = 0,
683690 V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P = 1,
684691 };
685−#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER (V4L2_CID_MPEG_BASE + 607)
686−#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_QP (V4L2_CID_MPEG_BASE + 608)
687−#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_QP (V4L2_CID_MPEG_BASE + 609)
688−#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_QP (V4L2_CID_MPEG_BASE + 610)
689−#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_QP (V4L2_CID_MPEG_BASE + 611)
690−#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_QP (V4L2_CID_MPEG_BASE + 612)
691−#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_QP (V4L2_CID_MPEG_BASE + 613)
692−#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_QP (V4L2_CID_MPEG_BASE + 614)
693−#define V4L2_CID_MPEG_VIDEO_HEVC_PROFILE (V4L2_CID_MPEG_BASE + 615)
692+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER (V4L2_CID_CODEC_BASE + 607)
693+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_QP (V4L2_CID_CODEC_BASE + 608)
694+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_QP (V4L2_CID_CODEC_BASE + 609)
695+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_QP (V4L2_CID_CODEC_BASE + 610)
696+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_QP (V4L2_CID_CODEC_BASE + 611)
697+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_QP (V4L2_CID_CODEC_BASE + 612)
698+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_QP (V4L2_CID_CODEC_BASE + 613)
699+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_QP (V4L2_CID_CODEC_BASE + 614)
700+#define V4L2_CID_MPEG_VIDEO_HEVC_PROFILE (V4L2_CID_CODEC_BASE + 615)
694701 enum v4l2_mpeg_video_hevc_profile {
695702 V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN = 0,
696703 V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE = 1,
697704 V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10 = 2,
698705 };
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)
700707 enum v4l2_mpeg_video_hevc_level {
701708 V4L2_MPEG_VIDEO_HEVC_LEVEL_1 = 0,
702709 V4L2_MPEG_VIDEO_HEVC_LEVEL_2 = 1,
@@ -712,56 +719,56 @@ enum v4l2_mpeg_video_hevc_level { · 9 unmodified lines
712719 V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1 = 11,
713720 V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2 = 12,
714721 };
715−#define V4L2_CID_MPEG_VIDEO_HEVC_FRAME_RATE_RESOLUTION (V4L2_CID_MPEG_BASE + 617)
716−#define V4L2_CID_MPEG_VIDEO_HEVC_TIER (V4L2_CID_MPEG_BASE + 618)
722+#define V4L2_CID_MPEG_VIDEO_HEVC_FRAME_RATE_RESOLUTION (V4L2_CID_CODEC_BASE + 617)
723+#define V4L2_CID_MPEG_VIDEO_HEVC_TIER (V4L2_CID_CODEC_BASE + 618)
717724 enum v4l2_mpeg_video_hevc_tier {
718725 V4L2_MPEG_VIDEO_HEVC_TIER_MAIN = 0,
719726 V4L2_MPEG_VIDEO_HEVC_TIER_HIGH = 1,
720727 };
721−#define V4L2_CID_MPEG_VIDEO_HEVC_MAX_PARTITION_DEPTH (V4L2_CID_MPEG_BASE + 619)
722−#define V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE (V4L2_CID_MPEG_BASE + 620)
728+#define V4L2_CID_MPEG_VIDEO_HEVC_MAX_PARTITION_DEPTH (V4L2_CID_CODEC_BASE + 619)
729+#define V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE (V4L2_CID_CODEC_BASE + 620)
723730 enum v4l2_cid_mpeg_video_hevc_loop_filter_mode {
724731 V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_DISABLED = 0,
725732 V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_ENABLED = 1,
726733 V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY = 2,
727734 };
728−#define V4L2_CID_MPEG_VIDEO_HEVC_LF_BETA_OFFSET_DIV2 (V4L2_CID_MPEG_BASE + 621)
729−#define V4L2_CID_MPEG_VIDEO_HEVC_LF_TC_OFFSET_DIV2 (V4L2_CID_MPEG_BASE + 622)
730−#define V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_TYPE (V4L2_CID_MPEG_BASE + 623)
735+#define V4L2_CID_MPEG_VIDEO_HEVC_LF_BETA_OFFSET_DIV2 (V4L2_CID_CODEC_BASE + 621)
736+#define V4L2_CID_MPEG_VIDEO_HEVC_LF_TC_OFFSET_DIV2 (V4L2_CID_CODEC_BASE + 622)
737+#define V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_TYPE (V4L2_CID_CODEC_BASE + 623)
731738 enum v4l2_cid_mpeg_video_hevc_refresh_type {
732739 V4L2_MPEG_VIDEO_HEVC_REFRESH_NONE = 0,
733740 V4L2_MPEG_VIDEO_HEVC_REFRESH_CRA = 1,
734741 V4L2_MPEG_VIDEO_HEVC_REFRESH_IDR = 2,
735742 };
736−#define V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_PERIOD (V4L2_CID_MPEG_BASE + 624)
737−#define V4L2_CID_MPEG_VIDEO_HEVC_LOSSLESS_CU (V4L2_CID_MPEG_BASE + 625)
738−#define V4L2_CID_MPEG_VIDEO_HEVC_CONST_INTRA_PRED (V4L2_CID_MPEG_BASE + 626)
739−#define V4L2_CID_MPEG_VIDEO_HEVC_WAVEFRONT (V4L2_CID_MPEG_BASE + 627)
740−#define V4L2_CID_MPEG_VIDEO_HEVC_GENERAL_PB (V4L2_CID_MPEG_BASE + 628)
741−#define V4L2_CID_MPEG_VIDEO_HEVC_TEMPORAL_ID (V4L2_CID_MPEG_BASE + 629)
742−#define V4L2_CID_MPEG_VIDEO_HEVC_STRONG_SMOOTHING (V4L2_CID_MPEG_BASE + 630)
743−#define V4L2_CID_MPEG_VIDEO_HEVC_MAX_NUM_MERGE_MV_MINUS1 (V4L2_CID_MPEG_BASE + 631)
744−#define V4L2_CID_MPEG_VIDEO_HEVC_INTRA_PU_SPLIT (V4L2_CID_MPEG_BASE + 632)
745−#define V4L2_CID_MPEG_VIDEO_HEVC_TMV_PREDICTION (V4L2_CID_MPEG_BASE + 633)
746−#define V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE (V4L2_CID_MPEG_BASE + 634)
747−#define V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD (V4L2_CID_MPEG_BASE + 635)
743+#define V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_PERIOD (V4L2_CID_CODEC_BASE + 624)
744+#define V4L2_CID_MPEG_VIDEO_HEVC_LOSSLESS_CU (V4L2_CID_CODEC_BASE + 625)
745+#define V4L2_CID_MPEG_VIDEO_HEVC_CONST_INTRA_PRED (V4L2_CID_CODEC_BASE + 626)
746+#define V4L2_CID_MPEG_VIDEO_HEVC_WAVEFRONT (V4L2_CID_CODEC_BASE + 627)
747+#define V4L2_CID_MPEG_VIDEO_HEVC_GENERAL_PB (V4L2_CID_CODEC_BASE + 628)
748+#define V4L2_CID_MPEG_VIDEO_HEVC_TEMPORAL_ID (V4L2_CID_CODEC_BASE + 629)
749+#define V4L2_CID_MPEG_VIDEO_HEVC_STRONG_SMOOTHING (V4L2_CID_CODEC_BASE + 630)
750+#define V4L2_CID_MPEG_VIDEO_HEVC_MAX_NUM_MERGE_MV_MINUS1 (V4L2_CID_CODEC_BASE + 631)
751+#define V4L2_CID_MPEG_VIDEO_HEVC_INTRA_PU_SPLIT (V4L2_CID_CODEC_BASE + 632)
752+#define V4L2_CID_MPEG_VIDEO_HEVC_TMV_PREDICTION (V4L2_CID_CODEC_BASE + 633)
753+#define V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE (V4L2_CID_CODEC_BASE + 634)
754+#define V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD (V4L2_CID_CODEC_BASE + 635)
748755 enum v4l2_cid_mpeg_video_hevc_size_of_length_field {
749756 V4L2_MPEG_VIDEO_HEVC_SIZE_0 = 0,
750757 V4L2_MPEG_VIDEO_HEVC_SIZE_1 = 1,
751758 V4L2_MPEG_VIDEO_HEVC_SIZE_2 = 2,
752759 V4L2_MPEG_VIDEO_HEVC_SIZE_4 = 3,
753760 };
754−#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_BR (V4L2_CID_MPEG_BASE + 636)
755−#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_BR (V4L2_CID_MPEG_BASE + 637)
756−#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_BR (V4L2_CID_MPEG_BASE + 638)
757−#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_BR (V4L2_CID_MPEG_BASE + 639)
758−#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_BR (V4L2_CID_MPEG_BASE + 640)
759−#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_BR (V4L2_CID_MPEG_BASE + 641)
760−#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_BR (V4L2_CID_MPEG_BASE + 642)
761−#define V4L2_CID_MPEG_VIDEO_REF_NUMBER_FOR_PFRAMES (V4L2_CID_MPEG_BASE + 643)
762−#define V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR (V4L2_CID_MPEG_BASE + 644)
763−#define V4L2_CID_MPEG_VIDEO_CONSTANT_QUALITY (V4L2_CID_MPEG_BASE + 645)
764−#define V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE (V4L2_CID_MPEG_BASE + 646)
761+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_BR (V4L2_CID_CODEC_BASE + 636)
762+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_BR (V4L2_CID_CODEC_BASE + 637)
763+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_BR (V4L2_CID_CODEC_BASE + 638)
764+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_BR (V4L2_CID_CODEC_BASE + 639)
765+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_BR (V4L2_CID_CODEC_BASE + 640)
766+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_BR (V4L2_CID_CODEC_BASE + 641)
767+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_BR (V4L2_CID_CODEC_BASE + 642)
768+#define V4L2_CID_MPEG_VIDEO_REF_NUMBER_FOR_PFRAMES (V4L2_CID_CODEC_BASE + 643)
769+#define V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR (V4L2_CID_CODEC_BASE + 644)
770+#define V4L2_CID_MPEG_VIDEO_CONSTANT_QUALITY (V4L2_CID_CODEC_BASE + 645)
771+#define V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE (V4L2_CID_CODEC_BASE + 646)
765772 enum v4l2_mpeg_video_frame_skip_mode {
766773 V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED = 0,
767774 V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT = 1,
@@ -769,14 +776,14 @@ enum v4l2_mpeg_video_frame_skip_mode { · 1 unmodified line
769776 };
770777
771778 /* 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)
773−#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE+0)
779+#define V4L2_CID_CODEC_CX2341X_BASE (V4L2_CTRL_CLASS_CODEC | 0x1000)
780+#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE (V4L2_CID_CODEC_CX2341X_BASE+0)
774781 enum v4l2_mpeg_cx2341x_video_spatial_filter_mode {
775782 V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL = 0,
776783 V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO = 1,
777784 };
778−#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER (V4L2_CID_MPEG_CX2341X_BASE+1)
779−#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+2)
785+#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER (V4L2_CID_CODEC_CX2341X_BASE+1)
786+#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE (V4L2_CID_CODEC_CX2341X_BASE+2)
780787 enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type {
781788 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF = 0,
782789 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
784791 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE = 3,
785792 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE = 4,
786793 };
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)
788795 enum v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type {
789796 V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF = 0,
790797 V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR = 1,
791798 };
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)
793800 enum v4l2_mpeg_cx2341x_video_temporal_filter_mode {
794801 V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL = 0,
795802 V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO = 1,
796803 };
797−#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER (V4L2_CID_MPEG_CX2341X_BASE+5)
798−#define V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+6)
804+#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER (V4L2_CID_CODEC_CX2341X_BASE+5)
805+#define V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE (V4L2_CID_CODEC_CX2341X_BASE+6)
799806 enum v4l2_mpeg_cx2341x_video_median_filter_type {
800807 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF = 0,
801808 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR = 1,
@@ -803,38 +810,38 @@ enum v4l2_mpeg_cx2341x_video_median_filter_type { · 1 unmodified line
803810 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT = 3,
804811 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG = 4,
805812 };
806−#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE+7)
807−#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE+8)
808−#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE+9)
809−#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE+10)
810−#define V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS (V4L2_CID_MPEG_CX2341X_BASE+11)
813+#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_CODEC_CX2341X_BASE+7)
814+#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP (V4L2_CID_CODEC_CX2341X_BASE+8)
815+#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_CODEC_CX2341X_BASE+9)
816+#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP (V4L2_CID_CODEC_CX2341X_BASE+10)
817+#define V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS (V4L2_CID_CODEC_CX2341X_BASE+11)
811818
812819 /* 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)
814821
815−#define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY (V4L2_CID_MPEG_MFC51_BASE+0)
816−#define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE (V4L2_CID_MPEG_MFC51_BASE+1)
817−#define V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE (V4L2_CID_MPEG_MFC51_BASE+2)
822+#define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY (V4L2_CID_CODEC_MFC51_BASE+0)
823+#define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE (V4L2_CID_CODEC_MFC51_BASE+1)
824+#define V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE (V4L2_CID_CODEC_MFC51_BASE+2)
818825 enum v4l2_mpeg_mfc51_video_frame_skip_mode {
819826 V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_DISABLED = 0,
820827 V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT = 1,
821828 V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT = 2,
822829 };
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)
824831 enum v4l2_mpeg_mfc51_video_force_frame_type {
825832 V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_DISABLED = 0,
826833 V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_I_FRAME = 1,
827834 V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_NOT_CODED = 2,
828835 };
829−#define V4L2_CID_MPEG_MFC51_VIDEO_PADDING (V4L2_CID_MPEG_MFC51_BASE+4)
830−#define V4L2_CID_MPEG_MFC51_VIDEO_PADDING_YUV (V4L2_CID_MPEG_MFC51_BASE+5)
831−#define V4L2_CID_MPEG_MFC51_VIDEO_RC_FIXED_TARGET_BIT (V4L2_CID_MPEG_MFC51_BASE+6)
832−#define V4L2_CID_MPEG_MFC51_VIDEO_RC_REACTION_COEFF (V4L2_CID_MPEG_MFC51_BASE+7)
833−#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_ACTIVITY (V4L2_CID_MPEG_MFC51_BASE+50)
834−#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_DARK (V4L2_CID_MPEG_MFC51_BASE+51)
835−#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_SMOOTH (V4L2_CID_MPEG_MFC51_BASE+52)
836−#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_STATIC (V4L2_CID_MPEG_MFC51_BASE+53)
837−#define V4L2_CID_MPEG_MFC51_VIDEO_H264_NUM_REF_PIC_FOR_P (V4L2_CID_MPEG_MFC51_BASE+54)
836+#define V4L2_CID_MPEG_MFC51_VIDEO_PADDING (V4L2_CID_CODEC_MFC51_BASE+4)
837+#define V4L2_CID_MPEG_MFC51_VIDEO_PADDING_YUV (V4L2_CID_CODEC_MFC51_BASE+5)
838+#define V4L2_CID_MPEG_MFC51_VIDEO_RC_FIXED_TARGET_BIT (V4L2_CID_CODEC_MFC51_BASE+6)
839+#define V4L2_CID_MPEG_MFC51_VIDEO_RC_REACTION_COEFF (V4L2_CID_CODEC_MFC51_BASE+7)
840+#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_ACTIVITY (V4L2_CID_CODEC_MFC51_BASE+50)
841+#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_DARK (V4L2_CID_CODEC_MFC51_BASE+51)
842+#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_SMOOTH (V4L2_CID_CODEC_MFC51_BASE+52)
843+#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_STATIC (V4L2_CID_CODEC_MFC51_BASE+53)
844+#define V4L2_CID_MPEG_MFC51_VIDEO_H264_NUM_REF_PIC_FOR_P (V4L2_CID_CODEC_MFC51_BASE+54)
838845
839846 /* Camera class control IDs */
840847
@@ -1171,4 +1178,470 @@ enum v4l2_detect_md_mode { · 330 unmodified lines
11711178 #define V4L2_CID_DETECT_MD_THRESHOLD_GRID (V4L2_CID_DETECT_CLASS_BASE + 3)
11721179 #define V4L2_CID_DETECT_MD_REGION_GRID (V4L2_CID_DETECT_CLASS_BASE + 4)
11731180
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+ */
1203+enum 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+ */
1220+enum 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+ */
1275+struct 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+ */
1331+struct 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+ */
1363+struct v4l2_ctrl_h264_scaling_matrix {
1364+ __u8 scaling_list_4x4[6][16];
1365+ __u8 scaling_list_8x8[6][64];
1366+};
1367+
1368+struct 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+ */
1393+struct 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+ */
1419+struct 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+ */
1466+struct 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+ */
1511+struct 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+ */
1548+struct 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+ */
1626+struct 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+
11741647 #endif
include/uapi/linux/videodev2.h+28−13
@@ -221,9 +221,7 @@ enum v4l2_colorspace { · 220 unmodified lines
221221 V4L2_COLORSPACE_470_SYSTEM_M = 5,
222222
223223 /*
224− * EBU Tech 3213 PAL/SECAM colorspace. This only makes sense when
225− * dealing with really old PAL/SECAM recordings. Superseded by
226− * SMPTE 170M.
224+ * EBU Tech 3213 PAL/SECAM colorspace.
227225 */
228226 V4L2_COLORSPACE_470_SYSTEM_BG = 6,
229227
@@ -517,7 +515,7 @@ struct v4l2_pix_format { · 287 unmodified lines
517515
518516 /* Pixel format FOURCC depth Description */
519517
520−/* RGB formats */
518+/* RGB formats (1 or 2 bytes per pixel) */
521519 #define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R', 'G', 'B', '1') /* 8 RGB-3-3-2 */
522520 #define V4L2_PIX_FMT_RGB444 v4l2_fourcc('R', '4', '4', '4') /* 16 xxxxrrrr ggggbbbb */
523521 #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
526524 #define V4L2_PIX_FMT_RGBX444 v4l2_fourcc('R', 'X', '1', '2') /* 16 rrrrgggg bbbbxxxx */
527525 #define V4L2_PIX_FMT_ABGR444 v4l2_fourcc('A', 'B', '1', '2') /* 16 aaaabbbb ggggrrrr */
528526 #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− */
535527 #define V4L2_PIX_FMT_BGRA444 v4l2_fourcc('G', 'A', '1', '2') /* 16 bbbbgggg rrrraaaa */
536528 #define V4L2_PIX_FMT_BGRX444 v4l2_fourcc('B', 'X', '1', '2') /* 16 bbbbgggg rrrrxxxx */
537529 #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
548540 #define V4L2_PIX_FMT_ARGB555X v4l2_fourcc_be('A', 'R', '1', '5') /* 16 ARGB-5-5-5 BE */
549541 #define V4L2_PIX_FMT_XRGB555X v4l2_fourcc_be('X', 'R', '1', '5') /* 16 XRGB-5-5-5 BE */
550542 #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) */
551545 #define V4L2_PIX_FMT_BGR666 v4l2_fourcc('B', 'G', 'R', 'H') /* 18 BGR-6-6-6 */
552546 #define V4L2_PIX_FMT_BGR24 v4l2_fourcc('B', 'G', 'R', '3') /* 24 BGR-8-8-8 */
553547 #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
597591 #define V4L2_PIX_FMT_XYUV32 v4l2_fourcc('X', 'Y', 'U', 'V') /* 32 XYUV-8-8-8-8 */
598592 #define V4L2_PIX_FMT_VUYA32 v4l2_fourcc('V', 'U', 'Y', 'A') /* 32 VUYA-8-8-8-8 */
599593 #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 */
602594 #define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0') /* 12 YUV 4:2:0 2 lines y, 1 line uv interleaved */
603595
604596 /* two planes -- one Y, one Cr + Cb interleaved */
@@ -608,6 +600,7 @@ struct v4l2_pix_format { · 3 unmodified lines
608600 #define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1') /* 16 Y/CrCb 4:2:2 */
609601 #define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4') /* 24 Y/CbCr 4:4:4 */
610602 #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 */
611604
612605 /* two non contiguous planes - one Y, one Cr + Cb interleaved */
613606 #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
705698 #define V4L2_PIX_FMT_HEVC v4l2_fourcc('H', 'E', 'V', 'C') /* HEVC aka H.265 */
706699 #define V4L2_PIX_FMT_FWHT v4l2_fourcc('F', 'W', 'H', 'T') /* Fast Walsh Hadamard Transform (vicodec) */
707700 #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 */
708702
709703 /* Vendor-specific formats */
710704 #define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */
@@ -740,6 +734,7 @@ struct v4l2_pix_format { · 29 unmodified lines
740734 #define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I') /* Intel Planar Greyscale 10-bit and Depth 16-bit */
741735 #define V4L2_PIX_FMT_SUNXI_TILED_NV12 v4l2_fourcc('S', 'T', '1', '2') /* Sunxi Tiled NV12 Format */
742736 #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 */
743738
744739 /* 10bit raw bayer packed, 32 bytes for every 25 pixels, last LSB 6 bits unused */
745740 #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
770765 #define V4L2_META_FMT_D4XX v4l2_fourcc('D', '4', 'X', 'X') /* D4XX Payload Header metadata */
771766 #define V4L2_META_FMT_VIVID v4l2_fourcc('V', 'I', 'V', 'D') /* Vivid Metadata */
772767
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+
773772 /* priv field value to indicates that subsequent fields are valid. */
774773 #define V4L2_PIX_FMT_PRIV_MAGIC 0xfeedcafe
775774
@@ -1185,7 +1184,7 @@ struct v4l2_window { · 409 unmodified lines
11851184 struct v4l2_rect w;
11861185 __u32 field; /* enum v4l2_field */
11871186 __u32 chromakey;
1188− struct v4l2_clip __user *clips;
1187+ struct v4l2_clip *clips;
11891188 __u32 clipcount;
11901189 void __user *bitmap;
11911190 __u8 global_alpha;
@@ -1731,6 +1730,13 @@ struct v4l2_ext_control { · 539 unmodified lines
17311730 __u16 __user *p_u16;
17321731 __u32 __user *p_u32;
17331732 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;
17341740 void __user *ptr;
17351741 };
17361742 } __attribute__ ((packed));
@@ -1777,6 +1783,15 @@ enum v4l2_ctrl_type { · 40 unmodified lines
17771783 V4L2_CTRL_TYPE_U16 = 0x0101,
17781784 V4L2_CTRL_TYPE_U32 = 0x0102,
17791785 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,
17801795 };
17811796
17821797 /* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */