History

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

Pull media updates from Mauro Carvalho Chehab: - new CEC pin injection code for testing purposes - DVB frontend cxd2099 promoted from staging - new platform driver for Sony cxd2880 DVB devices - new sensor drivers: mt9t112, ov2685, ov5695, ov772x, tda1997x, tw9910.c - removal of unused cx18 and ivtv alsa mixers - the reneseas-ceu driver doesn't depend on soc_camera anymore and moved from staging - removed the mantis_vp3028 driver, unused since 2009 - s5p-mfc: add support for version 10 of the MSP - added a decoder for imon protocol - atomisp: lots of cleanups - imx074 and mt9t031: don't depend on soc_camera anymore, being promoted from staging - added helper functions to better support DVB I2C binding - lots of driver improvements and cleanups * tag 'media/v4.17-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (438 commits) media: v4l2-ioctl: rename a temp var that stores _IOC_SIZE(cmd) media: fimc-capture: get rid of two warnings media: dvb-usb-v2: fix a missing dependency of I2C_MUX media: uvc: to the right check at uvc_ioctl_enum_framesizes() media: cec-core: fix a bug at cec_error_inj_write() media: tda9840: cleanup a warning media: tm6000: avoid casting just to print pointer address media: em28xx-input: improve error handling code media: zr364xx: avoid casting just to print pointer address media: vivid-radio-rx: add a cast to avoid a warning media: saa7134-alsa: don't use casts to print a buffer address media: solo6x10: get rid of an address space warning media: zoran: don't cast pointers to print them media: ir-kbd-i2c: change the if logic to avoid a warning media: ir-kbd-i2c: improve error handling code media: saa7134-input: improve error handling media: s2255drv: fix a casting warning media: ivtvfb: Cleanup some warnings media: videobuf-dma-sg: Fix a weird cast soc_camera: fix a weird cast on printk ...

Linus Torvalds committed 8 years ago

Commit ef1c4a62 parents 147a89b f8a695c572 files · +37792 −21327Browse files

Showing the changes to include/uapi/linux (7 of 572 files). Show all

Unified · Split

7 files
  1. include/uapi/linux/cec-funcs.h +0 −29
  2. include/uapi/linux/cec.h +0 −29
  3. include/uapi/linux/lirc.h +2 −0
  4. include/uapi/linux/media.h +165 −179
  5. include/uapi/linux/v4l2-controls.h +92 −1
  6. include/uapi/linux/v4l2-mediabus.h +2 −2
  7. include/uapi/linux/videodev2.h +1 −0
include/uapi/linux/cec-funcs.h+0−29
@@ -3,35 +3,6 @@ · 2 unmodified lines
33 * cec - HDMI Consumer Electronics Control message functions
44 *
55 * Copyright 2016 Cisco Systems, Inc. and/or its affiliates. All rights reserved.
6− *
7− * This program is free software; you may redistribute it and/or modify
8− * it under the terms of the GNU General Public License as published by
9− * the Free Software Foundation; version 2 of the License.
10− *
11− * Alternatively you can redistribute this file under the terms of the
12− * BSD license as stated below:
13− *
14− * Redistribution and use in source and binary forms, with or without
15− * modification, are permitted provided that the following conditions
16− * are met:
17− * 1. Redistributions of source code must retain the above copyright
18− * notice, this list of conditions and the following disclaimer.
19− * 2. Redistributions in binary form must reproduce the above copyright
20− * notice, this list of conditions and the following disclaimer in
21− * the documentation and/or other materials provided with the
22− * distribution.
23− * 3. The names of its contributors may not be used to endorse or promote
24− * products derived from this software without specific prior written
25− * permission.
26− *
27− * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
28− * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
29− * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
30− * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
31− * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
32− * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
33− * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
34− * SOFTWARE.
356 */
367
378 #ifndef _CEC_UAPI_FUNCS_H
include/uapi/linux/cec.h+0−29
@@ -3,35 +3,6 @@ · 2 unmodified lines
33 * cec - HDMI Consumer Electronics Control public header
44 *
55 * Copyright 2016 Cisco Systems, Inc. and/or its affiliates. All rights reserved.
6− *
7− * This program is free software; you may redistribute it and/or modify
8− * it under the terms of the GNU General Public License as published by
9− * the Free Software Foundation; version 2 of the License.
10− *
11− * Alternatively you can redistribute this file under the terms of the
12− * BSD license as stated below:
13− *
14− * Redistribution and use in source and binary forms, with or without
15− * modification, are permitted provided that the following conditions
16− * are met:
17− * 1. Redistributions of source code must retain the above copyright
18− * notice, this list of conditions and the following disclaimer.
19− * 2. Redistributions in binary form must reproduce the above copyright
20− * notice, this list of conditions and the following disclaimer in
21− * the documentation and/or other materials provided with the
22− * distribution.
23− * 3. The names of its contributors may not be used to endorse or promote
24− * products derived from this software without specific prior written
25− * permission.
26− *
27− * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
28− * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
29− * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
30− * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
31− * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
32− * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
33− * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
34− * SOFTWARE.
356 */
367
378 #ifndef _CEC_UAPI_H
include/uapi/linux/lirc.h+2−0
@@ -185,6 +185,7 @@ struct lirc_scancode { · 184 unmodified lines
185185 * @RC_PROTO_SHARP: Sharp protocol
186186 * @RC_PROTO_XMP: XMP protocol
187187 * @RC_PROTO_CEC: CEC protocol
188+ * @RC_PROTO_IMON: iMon Pad protocol
188189 */
189190 enum rc_proto {
190191 RC_PROTO_UNKNOWN = 0,
@@ -210,6 +211,7 @@ enum rc_proto { · 19 unmodified lines
210211 RC_PROTO_SHARP = 20,
211212 RC_PROTO_XMP = 21,
212213 RC_PROTO_CEC = 22,
214+ RC_PROTO_IMON = 23,
213215 };
214216
215217 #endif
include/uapi/linux/media.h+165−179
@@ -15,10 +15,6 @@ · 14 unmodified lines
1515 * but WITHOUT ANY WARRANTY; without even the implied warranty of
1616 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1717 * GNU General Public License for more details.
18− *
19− * You should have received a copy of the GNU General Public License
20− * along with this program; if not, write to the Free Software
21− * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
2218 */
2319
2420 #ifndef __LINUX_MEDIA_H
@@ -42,108 +38,66 @@ struct media_device_info { · 17 unmodified lines
4238 __u32 reserved[31];
4339 };
4440
45−#define MEDIA_ENT_ID_FLAG_NEXT (1 << 31)
46−
47−/*
48− * Initial value to be used when a new entity is created
49− * Drivers should change it to something useful
50− */
51−#define MEDIA_ENT_F_UNKNOWN 0x00000000
52−
5341 /*
5442 * Base number ranges for entity functions
5543 *
56− * NOTE: those ranges and entity function number are phased just to
57− * make it easier to maintain this file. Userspace should not rely on
58− * the ranges to identify a group of function types, as newer
59− * functions can be added with any name within the full u32 range.
60− */
61−#define MEDIA_ENT_F_BASE 0x00000000
62−#define MEDIA_ENT_F_OLD_BASE 0x00010000
63−#define MEDIA_ENT_F_OLD_SUBDEV_BASE 0x00020000
64−
65−/*
66− * DVB entities
44+ * NOTE: Userspace should not rely on these ranges to identify a group
45+ * of function types, as newer functions can be added with any name within
46+ * the full u32 range.
47+ *
48+ * Some older functions use the MEDIA_ENT_F_OLD_*_BASE range. Do not
49+ * change this, this is for backwards compatibility. When adding new
50+ * functions always use MEDIA_ENT_F_BASE.
6751 */
68−#define MEDIA_ENT_F_DTV_DEMOD (MEDIA_ENT_F_BASE + 0x00001)
69−#define MEDIA_ENT_F_TS_DEMUX (MEDIA_ENT_F_BASE + 0x00002)
70−#define MEDIA_ENT_F_DTV_CA (MEDIA_ENT_F_BASE + 0x00003)
71−#define MEDIA_ENT_F_DTV_NET_DECAP (MEDIA_ENT_F_BASE + 0x00004)
52+#define MEDIA_ENT_F_BASE 0x00000000
53+#define MEDIA_ENT_F_OLD_BASE 0x00010000
54+#define MEDIA_ENT_F_OLD_SUBDEV_BASE 0x00020000
7255
7356 /*
74− * I/O entities
57+ * Initial value to be used when a new entity is created
58+ * Drivers should change it to something useful.
7559 */
76−#define MEDIA_ENT_F_IO_DTV (MEDIA_ENT_F_BASE + 0x01001)
77−#define MEDIA_ENT_F_IO_VBI (MEDIA_ENT_F_BASE + 0x01002)
78−#define MEDIA_ENT_F_IO_SWRADIO (MEDIA_ENT_F_BASE + 0x01003)
60+#define MEDIA_ENT_F_UNKNOWN MEDIA_ENT_F_BASE
7961
8062 /*
81− * Analog TV IF-PLL decoders
82− *
83− * It is a responsibility of the master/bridge drivers to create links
84− * for MEDIA_ENT_F_IF_VID_DECODER and MEDIA_ENT_F_IF_AUD_DECODER.
63+ * Subdevs are initialized with MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN in order
64+ * to preserve backward compatibility. Drivers must change to the proper
65+ * subdev type before registering the entity.
8566 */
86−#define MEDIA_ENT_F_IF_VID_DECODER (MEDIA_ENT_F_BASE + 0x02001)
87−#define MEDIA_ENT_F_IF_AUD_DECODER (MEDIA_ENT_F_BASE + 0x02002)
67+#define MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN MEDIA_ENT_F_OLD_SUBDEV_BASE
8868
8969 /*
90− * Audio Entity Functions
70+ * DVB entity functions
9171 */
92−#define MEDIA_ENT_F_AUDIO_CAPTURE (MEDIA_ENT_F_BASE + 0x03001)
93−#define MEDIA_ENT_F_AUDIO_PLAYBACK (MEDIA_ENT_F_BASE + 0x03002)
94−#define MEDIA_ENT_F_AUDIO_MIXER (MEDIA_ENT_F_BASE + 0x03003)
72+#define MEDIA_ENT_F_DTV_DEMOD (MEDIA_ENT_F_BASE + 0x00001)
73+#define MEDIA_ENT_F_TS_DEMUX (MEDIA_ENT_F_BASE + 0x00002)
74+#define MEDIA_ENT_F_DTV_CA (MEDIA_ENT_F_BASE + 0x00003)
75+#define MEDIA_ENT_F_DTV_NET_DECAP (MEDIA_ENT_F_BASE + 0x00004)
9576
9677 /*
97− * Processing entities
78+ * I/O entity functions
9879 */
99−#define MEDIA_ENT_F_PROC_VIDEO_COMPOSER (MEDIA_ENT_F_BASE + 0x4001)
100−#define MEDIA_ENT_F_PROC_VIDEO_PIXEL_FORMATTER (MEDIA_ENT_F_BASE + 0x4002)
101−#define MEDIA_ENT_F_PROC_VIDEO_PIXEL_ENC_CONV (MEDIA_ENT_F_BASE + 0x4003)
102−#define MEDIA_ENT_F_PROC_VIDEO_LUT (MEDIA_ENT_F_BASE + 0x4004)
103−#define MEDIA_ENT_F_PROC_VIDEO_SCALER (MEDIA_ENT_F_BASE + 0x4005)
104−#define MEDIA_ENT_F_PROC_VIDEO_STATISTICS (MEDIA_ENT_F_BASE + 0x4006)
80+#define MEDIA_ENT_F_IO_V4L (MEDIA_ENT_F_OLD_BASE + 1)
81+#define MEDIA_ENT_F_IO_DTV (MEDIA_ENT_F_BASE + 0x01001)
82+#define MEDIA_ENT_F_IO_VBI (MEDIA_ENT_F_BASE + 0x01002)
83+#define MEDIA_ENT_F_IO_SWRADIO (MEDIA_ENT_F_BASE + 0x01003)
10584
10685 /*
107− * Switch and bridge entitites
86+ * Sensor functions
10887 */
109−#define MEDIA_ENT_F_VID_MUX (MEDIA_ENT_F_BASE + 0x5001)
110−#define MEDIA_ENT_F_VID_IF_BRIDGE (MEDIA_ENT_F_BASE + 0x5002)
88+#define MEDIA_ENT_F_CAM_SENSOR (MEDIA_ENT_F_OLD_SUBDEV_BASE + 1)
89+#define MEDIA_ENT_F_FLASH (MEDIA_ENT_F_OLD_SUBDEV_BASE + 2)
90+#define MEDIA_ENT_F_LENS (MEDIA_ENT_F_OLD_SUBDEV_BASE + 3)
11191
11292 /*
113− * Connectors
93+ * Video decoder functions
11494 */
115−/* It is a responsibility of the entity drivers to add connectors and links */
116−#ifdef __KERNEL__
117− /*
118− * For now, it should not be used in userspace, as some
119− * definitions may change
120− */
121−
122−#define MEDIA_ENT_F_CONN_RF (MEDIA_ENT_F_BASE + 0x30001)
123−#define MEDIA_ENT_F_CONN_SVIDEO (MEDIA_ENT_F_BASE + 0x30002)
124−#define MEDIA_ENT_F_CONN_COMPOSITE (MEDIA_ENT_F_BASE + 0x30003)
125−
126−#endif
95+#define MEDIA_ENT_F_ATV_DECODER (MEDIA_ENT_F_OLD_SUBDEV_BASE + 4)
96+#define MEDIA_ENT_F_DTV_DECODER (MEDIA_ENT_F_BASE + 0x6001)
12797
12898 /*
129− * Don't touch on those. The ranges MEDIA_ENT_F_OLD_BASE and
130− * MEDIA_ENT_F_OLD_SUBDEV_BASE are kept to keep backward compatibility
131− * with the legacy v1 API.The number range is out of range by purpose:
132− * several previously reserved numbers got excluded from this range.
99+ * Digital TV, analog TV, radio and/or software defined radio tuner functions.
133100 *
134− * Subdevs are initialized with MEDIA_ENT_T_V4L2_SUBDEV_UNKNOWN,
135− * in order to preserve backward compatibility.
136− * Drivers must change to the proper subdev type before
137− * registering the entity.
138− */
139−
140−#define MEDIA_ENT_F_IO_V4L (MEDIA_ENT_F_OLD_BASE + 1)
141−
142−#define MEDIA_ENT_F_CAM_SENSOR (MEDIA_ENT_F_OLD_SUBDEV_BASE + 1)
143−#define MEDIA_ENT_F_FLASH (MEDIA_ENT_F_OLD_SUBDEV_BASE + 2)
144−#define MEDIA_ENT_F_LENS (MEDIA_ENT_F_OLD_SUBDEV_BASE + 3)
145−#define MEDIA_ENT_F_ATV_DECODER (MEDIA_ENT_F_OLD_SUBDEV_BASE + 4)
146−/*
147101 * It is a responsibility of the master/bridge drivers to add connectors
148102 * and links for MEDIA_ENT_F_TUNER. Please notice that some old tuners
149103 * may require the usage of separate I2C chips to decode analog TV signals,
@@ -151,49 +105,46 @@ struct media_device_info { · 1 unmodified line
151105 * On such cases, the IF-PLL staging is mapped via one or two entities:
152106 * MEDIA_ENT_F_IF_VID_DECODER and/or MEDIA_ENT_F_IF_AUD_DECODER.
153107 */
154−#define MEDIA_ENT_F_TUNER (MEDIA_ENT_F_OLD_SUBDEV_BASE + 5)
108+#define MEDIA_ENT_F_TUNER (MEDIA_ENT_F_OLD_SUBDEV_BASE + 5)
155109
156−#define MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN MEDIA_ENT_F_OLD_SUBDEV_BASE
110+/*
111+ * Analog TV IF-PLL decoder functions
112+ *
113+ * It is a responsibility of the master/bridge drivers to create links
114+ * for MEDIA_ENT_F_IF_VID_DECODER and MEDIA_ENT_F_IF_AUD_DECODER.
115+ */
116+#define MEDIA_ENT_F_IF_VID_DECODER (MEDIA_ENT_F_BASE + 0x02001)
117+#define MEDIA_ENT_F_IF_AUD_DECODER (MEDIA_ENT_F_BASE + 0x02002)
157118
158−#if !defined(__KERNEL__) || defined(__NEED_MEDIA_LEGACY_API)
119+/*
120+ * Audio entity functions
121+ */
122+#define MEDIA_ENT_F_AUDIO_CAPTURE (MEDIA_ENT_F_BASE + 0x03001)
123+#define MEDIA_ENT_F_AUDIO_PLAYBACK (MEDIA_ENT_F_BASE + 0x03002)
124+#define MEDIA_ENT_F_AUDIO_MIXER (MEDIA_ENT_F_BASE + 0x03003)
159125
160126 /*
161− * Legacy symbols used to avoid userspace compilation breakages
162− *
163− * Those symbols map the entity function into types and should be
164− * used only on legacy programs for legacy hardware. Don't rely
165− * on those for MEDIA_IOC_G_TOPOLOGY.
127+ * Processing entity functions
166128 */
167−#define MEDIA_ENT_TYPE_SHIFT 16
168−#define MEDIA_ENT_TYPE_MASK 0x00ff0000
169−#define MEDIA_ENT_SUBTYPE_MASK 0x0000ffff
170−
171−/* End of the old subdev reserved numberspace */
172−#define MEDIA_ENT_T_DEVNODE_UNKNOWN (MEDIA_ENT_T_DEVNODE | \
173− MEDIA_ENT_SUBTYPE_MASK)
174−
175−#define MEDIA_ENT_T_DEVNODE MEDIA_ENT_F_OLD_BASE
176−#define MEDIA_ENT_T_DEVNODE_V4L MEDIA_ENT_F_IO_V4L
177−#define MEDIA_ENT_T_DEVNODE_FB (MEDIA_ENT_T_DEVNODE + 2)
178−#define MEDIA_ENT_T_DEVNODE_ALSA (MEDIA_ENT_T_DEVNODE + 3)
179−#define MEDIA_ENT_T_DEVNODE_DVB (MEDIA_ENT_T_DEVNODE + 4)
180−
181−#define MEDIA_ENT_T_UNKNOWN MEDIA_ENT_F_UNKNOWN
182−#define MEDIA_ENT_T_V4L2_VIDEO MEDIA_ENT_F_IO_V4L
183−#define MEDIA_ENT_T_V4L2_SUBDEV MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN
184−#define MEDIA_ENT_T_V4L2_SUBDEV_SENSOR MEDIA_ENT_F_CAM_SENSOR
185−#define MEDIA_ENT_T_V4L2_SUBDEV_FLASH MEDIA_ENT_F_FLASH
186−#define MEDIA_ENT_T_V4L2_SUBDEV_LENS MEDIA_ENT_F_LENS
187−#define MEDIA_ENT_T_V4L2_SUBDEV_DECODER MEDIA_ENT_F_ATV_DECODER
188−#define MEDIA_ENT_T_V4L2_SUBDEV_TUNER MEDIA_ENT_F_TUNER
129+#define MEDIA_ENT_F_PROC_VIDEO_COMPOSER (MEDIA_ENT_F_BASE + 0x4001)
130+#define MEDIA_ENT_F_PROC_VIDEO_PIXEL_FORMATTER (MEDIA_ENT_F_BASE + 0x4002)
131+#define MEDIA_ENT_F_PROC_VIDEO_PIXEL_ENC_CONV (MEDIA_ENT_F_BASE + 0x4003)
132+#define MEDIA_ENT_F_PROC_VIDEO_LUT (MEDIA_ENT_F_BASE + 0x4004)
133+#define MEDIA_ENT_F_PROC_VIDEO_SCALER (MEDIA_ENT_F_BASE + 0x4005)
134+#define MEDIA_ENT_F_PROC_VIDEO_STATISTICS (MEDIA_ENT_F_BASE + 0x4006)
189135
190−/* Obsolete symbol for media_version, no longer used in the kernel */
191−#define MEDIA_API_VERSION KERNEL_VERSION(0, 1, 0)
192−#endif
136+/*
137+ * Switch and bridge entity functions
138+ */
139+#define MEDIA_ENT_F_VID_MUX (MEDIA_ENT_F_BASE + 0x5001)
140+#define MEDIA_ENT_F_VID_IF_BRIDGE (MEDIA_ENT_F_BASE + 0x5002)
193141
194142 /* Entity flags */
195−#define MEDIA_ENT_FL_DEFAULT (1 << 0)
196−#define MEDIA_ENT_FL_CONNECTOR (1 << 1)
143+#define MEDIA_ENT_FL_DEFAULT (1 << 0)
144+#define MEDIA_ENT_FL_CONNECTOR (1 << 1)
145+
146+/* OR with the entity id value to find the next entity */
147+#define MEDIA_ENT_ID_FLAG_NEXT (1 << 31)
197148
198149 struct media_entity_desc {
199150 __u32 id;
@@ -214,7 +165,7 @@ struct media_entity_desc { · 14 unmodified lines
214165 __u32 minor;
215166 } dev;
216167
217−#if 1
168+#if !defined(__KERNEL__)
218169 /*
219170 * TODO: this shouldn't have been added without
220171 * actual drivers that use this. When the first real driver
@@ -225,24 +176,17 @@ struct media_entity_desc { · 4 unmodified lines
225176 * contain the subdevice information. In addition, struct dev
226177 * can only refer to a single device, and not to multiple (e.g.
227178 * pcm and mixer devices).
228− *
229− * So for now mark this as a to do.
230179 */
231180 struct {
232181 __u32 card;
233182 __u32 device;
234183 __u32 subdevice;
235184 } alsa;
236−#endif
237185
238−#if 1
239186 /*
240187 * DEPRECATED: previous node specifications. Kept just to
241− * avoid breaking compilation, but media_entity_desc.dev
242− * should be used instead. In particular, alsa and dvb
243− * fields below are wrong: for all devnodes, there should
244− * be just major/minor inside the struct, as this is enough
245− * to represent any devnode, no matter what type.
188+ * avoid breaking compilation. Use media_entity_desc.dev
189+ * instead.
246190 */
247191 struct {
248192 __u32 major;
@@ -261,9 +205,9 @@ struct media_entity_desc { · 12 unmodified lines
261205 };
262206 };
263207
264−#define MEDIA_PAD_FL_SINK (1 << 0)
265−#define MEDIA_PAD_FL_SOURCE (1 << 1)
266−#define MEDIA_PAD_FL_MUST_CONNECT (1 << 2)
208+#define MEDIA_PAD_FL_SINK (1 << 0)
209+#define MEDIA_PAD_FL_SOURCE (1 << 1)
210+#define MEDIA_PAD_FL_MUST_CONNECT (1 << 2)
267211
268212 struct media_pad_desc {
269213 __u32 entity; /* entity ID */
@@ -272,13 +216,13 @@ struct media_pad_desc { · 2 unmodified lines
272216 __u32 reserved[2];
273217 };
274218
275−#define MEDIA_LNK_FL_ENABLED (1 << 0)
276−#define MEDIA_LNK_FL_IMMUTABLE (1 << 1)
277−#define MEDIA_LNK_FL_DYNAMIC (1 << 2)
219+#define MEDIA_LNK_FL_ENABLED (1 << 0)
220+#define MEDIA_LNK_FL_IMMUTABLE (1 << 1)
221+#define MEDIA_LNK_FL_DYNAMIC (1 << 2)
278222
279−#define MEDIA_LNK_FL_LINK_TYPE (0xf << 28)
280−# define MEDIA_LNK_FL_DATA_LINK (0 << 28)
281−# define MEDIA_LNK_FL_INTERFACE_LINK (1 << 28)
223+#define MEDIA_LNK_FL_LINK_TYPE (0xf << 28)
224+# define MEDIA_LNK_FL_DATA_LINK (0 << 28)
225+# define MEDIA_LNK_FL_INTERFACE_LINK (1 << 28)
282226
283227 struct media_link_desc {
284228 struct media_pad_desc source;
@@ -298,57 +242,47 @@ struct media_links_enum { · 13 unmodified lines
298242
299243 /* Interface type ranges */
300244
301−#define MEDIA_INTF_T_DVB_BASE 0x00000100
302−#define MEDIA_INTF_T_V4L_BASE 0x00000200
303−#define MEDIA_INTF_T_ALSA_BASE 0x00000300
245+#define MEDIA_INTF_T_DVB_BASE 0x00000100
246+#define MEDIA_INTF_T_V4L_BASE 0x00000200
304247
305248 /* Interface types */
306249
307−#define MEDIA_INTF_T_DVB_FE (MEDIA_INTF_T_DVB_BASE)
308−#define MEDIA_INTF_T_DVB_DEMUX (MEDIA_INTF_T_DVB_BASE + 1)
309−#define MEDIA_INTF_T_DVB_DVR (MEDIA_INTF_T_DVB_BASE + 2)
310−#define MEDIA_INTF_T_DVB_CA (MEDIA_INTF_T_DVB_BASE + 3)
311−#define MEDIA_INTF_T_DVB_NET (MEDIA_INTF_T_DVB_BASE + 4)
312−
313−#define MEDIA_INTF_T_V4L_VIDEO (MEDIA_INTF_T_V4L_BASE)
314−#define MEDIA_INTF_T_V4L_VBI (MEDIA_INTF_T_V4L_BASE + 1)
315−#define MEDIA_INTF_T_V4L_RADIO (MEDIA_INTF_T_V4L_BASE + 2)
316−#define MEDIA_INTF_T_V4L_SUBDEV (MEDIA_INTF_T_V4L_BASE + 3)
317−#define MEDIA_INTF_T_V4L_SWRADIO (MEDIA_INTF_T_V4L_BASE + 4)
318−#define MEDIA_INTF_T_V4L_TOUCH (MEDIA_INTF_T_V4L_BASE + 5)
319−
320−#define MEDIA_INTF_T_ALSA_PCM_CAPTURE (MEDIA_INTF_T_ALSA_BASE)
321−#define MEDIA_INTF_T_ALSA_PCM_PLAYBACK (MEDIA_INTF_T_ALSA_BASE + 1)
322−#define MEDIA_INTF_T_ALSA_CONTROL (MEDIA_INTF_T_ALSA_BASE + 2)
323−#define MEDIA_INTF_T_ALSA_COMPRESS (MEDIA_INTF_T_ALSA_BASE + 3)
324−#define MEDIA_INTF_T_ALSA_RAWMIDI (MEDIA_INTF_T_ALSA_BASE + 4)
325−#define MEDIA_INTF_T_ALSA_HWDEP (MEDIA_INTF_T_ALSA_BASE + 5)
326−#define MEDIA_INTF_T_ALSA_SEQUENCER (MEDIA_INTF_T_ALSA_BASE + 6)
327−#define MEDIA_INTF_T_ALSA_TIMER (MEDIA_INTF_T_ALSA_BASE + 7)
250+#define MEDIA_INTF_T_DVB_FE (MEDIA_INTF_T_DVB_BASE)
251+#define MEDIA_INTF_T_DVB_DEMUX (MEDIA_INTF_T_DVB_BASE + 1)
252+#define MEDIA_INTF_T_DVB_DVR (MEDIA_INTF_T_DVB_BASE + 2)
253+#define MEDIA_INTF_T_DVB_CA (MEDIA_INTF_T_DVB_BASE + 3)
254+#define MEDIA_INTF_T_DVB_NET (MEDIA_INTF_T_DVB_BASE + 4)
255+
256+#define MEDIA_INTF_T_V4L_VIDEO (MEDIA_INTF_T_V4L_BASE)
257+#define MEDIA_INTF_T_V4L_VBI (MEDIA_INTF_T_V4L_BASE + 1)
258+#define MEDIA_INTF_T_V4L_RADIO (MEDIA_INTF_T_V4L_BASE + 2)
259+#define MEDIA_INTF_T_V4L_SUBDEV (MEDIA_INTF_T_V4L_BASE + 3)
260+#define MEDIA_INTF_T_V4L_SWRADIO (MEDIA_INTF_T_V4L_BASE + 4)
261+#define MEDIA_INTF_T_V4L_TOUCH (MEDIA_INTF_T_V4L_BASE + 5)
262+
263+#if defined(__KERNEL__)
328264
329265 /*
330− * MC next gen API definitions
266+ * Connector functions
331267 *
332− * NOTE: The declarations below are close to the MC RFC for the Media
333− * Controller, the next generation. Yet, there are a few adjustments
334− * to do, as we want to be able to have a functional API before
335− * the MC properties change. Those will be properly marked below.
336− * Please also notice that I removed "num_pads", "num_links",
337− * from the proposal, as a proper userspace application will likely
338− * use lists for pads/links, just as we intend to do in Kernelspace.
339− * The API definition should be freed from fields that are bound to
340− * some specific data structure.
268+ * For now these should not be used in userspace, as some definitions may
269+ * change.
341270 *
342− * FIXME: Currently, I opted to name the new types as "media_v2", as this
343− * won't cause any conflict with the Kernelspace namespace, nor with
344− * the previous kAPI media_*_desc namespace. This can be changed
345− * later, before the adding this API upstream.
271+ * It is the responsibility of the entity drivers to add connectors and links.
346272 */
273+#define MEDIA_ENT_F_CONN_RF (MEDIA_ENT_F_BASE + 0x30001)
274+#define MEDIA_ENT_F_CONN_SVIDEO (MEDIA_ENT_F_BASE + 0x30002)
275+#define MEDIA_ENT_F_CONN_COMPOSITE (MEDIA_ENT_F_BASE + 0x30003)
347276
277+#endif
278+
279+/*
280+ * MC next gen API definitions
281+ */
348282
349283 struct media_v2_entity {
350284 __u32 id;
351− char name[64]; /* FIXME: move to a property? (RFC says so) */
285+ char name[64];
352286 __u32 function; /* Main function of the entity */
353287 __u32 reserved[6];
354288 } __attribute__ ((packed));
@@ -408,10 +342,62 @@ struct media_v2_topology { · 53 unmodified lines
408342
409343 /* ioctls */
410344
411−#define MEDIA_IOC_DEVICE_INFO _IOWR('|', 0x00, struct media_device_info)
412−#define MEDIA_IOC_ENUM_ENTITIES _IOWR('|', 0x01, struct media_entity_desc)
413−#define MEDIA_IOC_ENUM_LINKS _IOWR('|', 0x02, struct media_links_enum)
414−#define MEDIA_IOC_SETUP_LINK _IOWR('|', 0x03, struct media_link_desc)
415−#define MEDIA_IOC_G_TOPOLOGY _IOWR('|', 0x04, struct media_v2_topology)
345+#define MEDIA_IOC_DEVICE_INFO _IOWR('|', 0x00, struct media_device_info)
346+#define MEDIA_IOC_ENUM_ENTITIES _IOWR('|', 0x01, struct media_entity_desc)
347+#define MEDIA_IOC_ENUM_LINKS _IOWR('|', 0x02, struct media_links_enum)
348+#define MEDIA_IOC_SETUP_LINK _IOWR('|', 0x03, struct media_link_desc)
349+#define MEDIA_IOC_G_TOPOLOGY _IOWR('|', 0x04, struct media_v2_topology)
350+
351+#if !defined(__KERNEL__) || defined(__NEED_MEDIA_LEGACY_API)
352+
353+/*
354+ * Legacy symbols used to avoid userspace compilation breakages.
355+ * Do not use any of this in new applications!
356+ *
357+ * Those symbols map the entity function into types and should be
358+ * used only on legacy programs for legacy hardware. Don't rely
359+ * on those for MEDIA_IOC_G_TOPOLOGY.
360+ */
361+#define MEDIA_ENT_TYPE_SHIFT 16
362+#define MEDIA_ENT_TYPE_MASK 0x00ff0000
363+#define MEDIA_ENT_SUBTYPE_MASK 0x0000ffff
364+
365+#define MEDIA_ENT_T_DEVNODE_UNKNOWN (MEDIA_ENT_F_OLD_BASE | \
366+ MEDIA_ENT_SUBTYPE_MASK)
367+
368+#define MEDIA_ENT_T_DEVNODE MEDIA_ENT_F_OLD_BASE
369+#define MEDIA_ENT_T_DEVNODE_V4L MEDIA_ENT_F_IO_V4L
370+#define MEDIA_ENT_T_DEVNODE_FB (MEDIA_ENT_F_OLD_BASE + 2)
371+#define MEDIA_ENT_T_DEVNODE_ALSA (MEDIA_ENT_F_OLD_BASE + 3)
372+#define MEDIA_ENT_T_DEVNODE_DVB (MEDIA_ENT_F_OLD_BASE + 4)
373+
374+#define MEDIA_ENT_T_UNKNOWN MEDIA_ENT_F_UNKNOWN
375+#define MEDIA_ENT_T_V4L2_VIDEO MEDIA_ENT_F_IO_V4L
376+#define MEDIA_ENT_T_V4L2_SUBDEV MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN
377+#define MEDIA_ENT_T_V4L2_SUBDEV_SENSOR MEDIA_ENT_F_CAM_SENSOR
378+#define MEDIA_ENT_T_V4L2_SUBDEV_FLASH MEDIA_ENT_F_FLASH
379+#define MEDIA_ENT_T_V4L2_SUBDEV_LENS MEDIA_ENT_F_LENS
380+#define MEDIA_ENT_T_V4L2_SUBDEV_DECODER MEDIA_ENT_F_ATV_DECODER
381+#define MEDIA_ENT_T_V4L2_SUBDEV_TUNER MEDIA_ENT_F_TUNER
382+
383+/*
384+ * There is still no ALSA support in the media controller. These
385+ * defines should not have been added and we leave them here only
386+ * in case some application tries to use these defines.
387+ */
388+#define MEDIA_INTF_T_ALSA_BASE 0x00000300
389+#define MEDIA_INTF_T_ALSA_PCM_CAPTURE (MEDIA_INTF_T_ALSA_BASE)
390+#define MEDIA_INTF_T_ALSA_PCM_PLAYBACK (MEDIA_INTF_T_ALSA_BASE + 1)
391+#define MEDIA_INTF_T_ALSA_CONTROL (MEDIA_INTF_T_ALSA_BASE + 2)
392+#define MEDIA_INTF_T_ALSA_COMPRESS (MEDIA_INTF_T_ALSA_BASE + 3)
393+#define MEDIA_INTF_T_ALSA_RAWMIDI (MEDIA_INTF_T_ALSA_BASE + 4)
394+#define MEDIA_INTF_T_ALSA_HWDEP (MEDIA_INTF_T_ALSA_BASE + 5)
395+#define MEDIA_INTF_T_ALSA_SEQUENCER (MEDIA_INTF_T_ALSA_BASE + 6)
396+#define MEDIA_INTF_T_ALSA_TIMER (MEDIA_INTF_T_ALSA_BASE + 7)
397+
398+/* Obsolete symbol for media_version, no longer used in the kernel */
399+#define MEDIA_API_VERSION KERNEL_VERSION(0, 1, 0)
400+
401+#endif
416402
417403 #endif /* __LINUX_MEDIA_H */
include/uapi/linux/v4l2-controls.h+92−1
@@ -589,6 +589,98 @@ enum v4l2_vp8_golden_frame_sel { · 588 unmodified lines
589589 #define V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP (V4L2_CID_MPEG_BASE+510)
590590 #define V4L2_CID_MPEG_VIDEO_VPX_PROFILE (V4L2_CID_MPEG_BASE+511)
591591
592+/* CIDs for HEVC encoding. */
593+
594+#define V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP (V4L2_CID_MPEG_BASE + 600)
595+#define V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP (V4L2_CID_MPEG_BASE + 601)
596+#define V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP (V4L2_CID_MPEG_BASE + 602)
597+#define V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_QP (V4L2_CID_MPEG_BASE + 603)
598+#define V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP (V4L2_CID_MPEG_BASE + 604)
599+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_QP (V4L2_CID_MPEG_BASE + 605)
600+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_TYPE (V4L2_CID_MPEG_BASE + 606)
601+enum v4l2_mpeg_video_hevc_hier_coding_type {
602+ V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B = 0,
603+ V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P = 1,
604+};
605+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER (V4L2_CID_MPEG_BASE + 607)
606+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_QP (V4L2_CID_MPEG_BASE + 608)
607+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_QP (V4L2_CID_MPEG_BASE + 609)
608+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_QP (V4L2_CID_MPEG_BASE + 610)
609+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_QP (V4L2_CID_MPEG_BASE + 611)
610+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_QP (V4L2_CID_MPEG_BASE + 612)
611+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_QP (V4L2_CID_MPEG_BASE + 613)
612+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_QP (V4L2_CID_MPEG_BASE + 614)
613+#define V4L2_CID_MPEG_VIDEO_HEVC_PROFILE (V4L2_CID_MPEG_BASE + 615)
614+enum v4l2_mpeg_video_hevc_profile {
615+ V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN = 0,
616+ V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE = 1,
617+ V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10 = 2,
618+};
619+#define V4L2_CID_MPEG_VIDEO_HEVC_LEVEL (V4L2_CID_MPEG_BASE + 616)
620+enum v4l2_mpeg_video_hevc_level {
621+ V4L2_MPEG_VIDEO_HEVC_LEVEL_1 = 0,
622+ V4L2_MPEG_VIDEO_HEVC_LEVEL_2 = 1,
623+ V4L2_MPEG_VIDEO_HEVC_LEVEL_2_1 = 2,
624+ V4L2_MPEG_VIDEO_HEVC_LEVEL_3 = 3,
625+ V4L2_MPEG_VIDEO_HEVC_LEVEL_3_1 = 4,
626+ V4L2_MPEG_VIDEO_HEVC_LEVEL_4 = 5,
627+ V4L2_MPEG_VIDEO_HEVC_LEVEL_4_1 = 6,
628+ V4L2_MPEG_VIDEO_HEVC_LEVEL_5 = 7,
629+ V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1 = 8,
630+ V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2 = 9,
631+ V4L2_MPEG_VIDEO_HEVC_LEVEL_6 = 10,
632+ V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1 = 11,
633+ V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2 = 12,
634+};
635+#define V4L2_CID_MPEG_VIDEO_HEVC_FRAME_RATE_RESOLUTION (V4L2_CID_MPEG_BASE + 617)
636+#define V4L2_CID_MPEG_VIDEO_HEVC_TIER (V4L2_CID_MPEG_BASE + 618)
637+enum v4l2_mpeg_video_hevc_tier {
638+ V4L2_MPEG_VIDEO_HEVC_TIER_MAIN = 0,
639+ V4L2_MPEG_VIDEO_HEVC_TIER_HIGH = 1,
640+};
641+#define V4L2_CID_MPEG_VIDEO_HEVC_MAX_PARTITION_DEPTH (V4L2_CID_MPEG_BASE + 619)
642+#define V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE (V4L2_CID_MPEG_BASE + 620)
643+enum v4l2_cid_mpeg_video_hevc_loop_filter_mode {
644+ V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_DISABLED = 0,
645+ V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_ENABLED = 1,
646+ V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY = 2,
647+};
648+#define V4L2_CID_MPEG_VIDEO_HEVC_LF_BETA_OFFSET_DIV2 (V4L2_CID_MPEG_BASE + 621)
649+#define V4L2_CID_MPEG_VIDEO_HEVC_LF_TC_OFFSET_DIV2 (V4L2_CID_MPEG_BASE + 622)
650+#define V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_TYPE (V4L2_CID_MPEG_BASE + 623)
651+enum v4l2_cid_mpeg_video_hevc_refresh_type {
652+ V4L2_MPEG_VIDEO_HEVC_REFRESH_NONE = 0,
653+ V4L2_MPEG_VIDEO_HEVC_REFRESH_CRA = 1,
654+ V4L2_MPEG_VIDEO_HEVC_REFRESH_IDR = 2,
655+};
656+#define V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_PERIOD (V4L2_CID_MPEG_BASE + 624)
657+#define V4L2_CID_MPEG_VIDEO_HEVC_LOSSLESS_CU (V4L2_CID_MPEG_BASE + 625)
658+#define V4L2_CID_MPEG_VIDEO_HEVC_CONST_INTRA_PRED (V4L2_CID_MPEG_BASE + 626)
659+#define V4L2_CID_MPEG_VIDEO_HEVC_WAVEFRONT (V4L2_CID_MPEG_BASE + 627)
660+#define V4L2_CID_MPEG_VIDEO_HEVC_GENERAL_PB (V4L2_CID_MPEG_BASE + 628)
661+#define V4L2_CID_MPEG_VIDEO_HEVC_TEMPORAL_ID (V4L2_CID_MPEG_BASE + 629)
662+#define V4L2_CID_MPEG_VIDEO_HEVC_STRONG_SMOOTHING (V4L2_CID_MPEG_BASE + 630)
663+#define V4L2_CID_MPEG_VIDEO_HEVC_MAX_NUM_MERGE_MV_MINUS1 (V4L2_CID_MPEG_BASE + 631)
664+#define V4L2_CID_MPEG_VIDEO_HEVC_INTRA_PU_SPLIT (V4L2_CID_MPEG_BASE + 632)
665+#define V4L2_CID_MPEG_VIDEO_HEVC_TMV_PREDICTION (V4L2_CID_MPEG_BASE + 633)
666+#define V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE (V4L2_CID_MPEG_BASE + 634)
667+#define V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD (V4L2_CID_MPEG_BASE + 635)
668+enum v4l2_cid_mpeg_video_hevc_size_of_length_field {
669+ V4L2_MPEG_VIDEO_HEVC_SIZE_0 = 0,
670+ V4L2_MPEG_VIDEO_HEVC_SIZE_1 = 1,
671+ V4L2_MPEG_VIDEO_HEVC_SIZE_2 = 2,
672+ V4L2_MPEG_VIDEO_HEVC_SIZE_4 = 3,
673+};
674+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_BR (V4L2_CID_MPEG_BASE + 636)
675+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_BR (V4L2_CID_MPEG_BASE + 637)
676+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_BR (V4L2_CID_MPEG_BASE + 638)
677+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_BR (V4L2_CID_MPEG_BASE + 639)
678+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_BR (V4L2_CID_MPEG_BASE + 640)
679+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_BR (V4L2_CID_MPEG_BASE + 641)
680+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_BR (V4L2_CID_MPEG_BASE + 642)
681+#define V4L2_CID_MPEG_VIDEO_REF_NUMBER_FOR_PFRAMES (V4L2_CID_MPEG_BASE + 643)
682+#define V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR (V4L2_CID_MPEG_BASE + 644)
683+
592684 /* MPEG-class control IDs specific to the CX2341x driver as defined by V4L2 */
593685 #define V4L2_CID_MPEG_CX2341X_BASE (V4L2_CTRL_CLASS_MPEG | 0x1000)
594686 #define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE+0)
@@ -657,7 +749,6 @@ enum v4l2_mpeg_mfc51_video_force_frame_type { · 62 unmodified lines
657749 #define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_STATIC (V4L2_CID_MPEG_MFC51_BASE+53)
658750 #define V4L2_CID_MPEG_MFC51_VIDEO_H264_NUM_REF_PIC_FOR_P (V4L2_CID_MPEG_MFC51_BASE+54)
659751
660−
661752 /* Camera class control IDs */
662753
663754 #define V4L2_CID_CAMERA_CLASS_BASE (V4L2_CTRL_CLASS_CAMERA | 0x900)
include/uapi/linux/v4l2-mediabus.h+2−2
@@ -18,8 +18,8 @@ · 17 unmodified lines
1818
1919 /**
2020 * struct v4l2_mbus_framefmt - frame format on the media bus
21− * @width: frame width
22− * @height: frame height
21+ * @width: image width
22+ * @height: image height
2323 * @code: data format code (from enum v4l2_mbus_pixelcode)
2424 * @field: used interlacing type (from enum v4l2_field)
2525 * @colorspace: colorspace of the data (from enum v4l2_colorspace)
include/uapi/linux/videodev2.h+1−0
@@ -635,6 +635,7 @@ struct v4l2_pix_format { · 634 unmodified lines
635635 #define V4L2_PIX_FMT_VC1_ANNEX_L v4l2_fourcc('V', 'C', '1', 'L') /* SMPTE 421M Annex L compliant stream */
636636 #define V4L2_PIX_FMT_VP8 v4l2_fourcc('V', 'P', '8', '0') /* VP8 */
637637 #define V4L2_PIX_FMT_VP9 v4l2_fourcc('V', 'P', '9', '0') /* VP9 */
638+#define V4L2_PIX_FMT_HEVC v4l2_fourcc('H', 'E', 'V', 'C') /* HEVC aka H.265 */
638639
639640 /* Vendor-specific formats */
640641 #define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */