media updates for v3.19-rc1
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJUhxhbAAoJEAhfPr2O5OEV4JwP/2I7D2KGz5tdNGDAh1H8+swR hoj3tX7HLhwBmF6XIUlMYbk5L/ClDace6kcjT6OjwJ9SktrrKks6ZSsYsBjCIyOC yS7xNQArUKzWk4vV+uJVAvtF8V57LLFul8dhHk0JJwAxrkWnPvDdfJNs4PhUAkgn 1i0PPshNo5Ow/+4YMiOjEDR+q9TMSUUzaq5zkPF7AFCnykuJ1wUJwUE0qjTfGi+4 gl1yMye0TEawTYSM8h/+Lh7wosNFZYcXg85r04A6a8h6GLgg0h6KSOJjyPITmQ+j hLdtyiYs8a6XT+Y8o416zxpbSozo7KXCUTtet/N5g+lgQMqZqSd9WxE52SOY+kfd UVeob0VfWR0xdDzaJp5rLQ/MQ16RTHaHppgUidFxxGe9D5f9JM/88I0OfwNzl4uO cv2cyeNktHH6bcjfOGqxSVmZWgAm6q6qU7MN07PoN+5TcUlYTAOi1WLE5K+7HGgw CxzOZ61oxi/OO1FapaVoipq6ycjltTql2kbcARvmrRrbge0ocAqHxHqFyUbDDhNw Wn/O6VzLfpW0vGTacC6+xcUSpIhwajJ80UJAOqJP8sw0Xtmian5Lcs6gVzxwkOdU 36Po4RRGFqsG6Sq3HR+toNwKt/nHNEFkJwYcNFHdvBiXTEYYkMe6MccUxxb3i/iI KxB1s51zVy9t3PqjP+3J =i7gx -----END PGP SIGNATURE----- Merge tag 'media/v3.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media Pull media updates from Mauro Carvalho Chehab: - Two new dvb frontend drivers: mn88472 and mn88473 - A new driver for some PCIe DVBSky cards - A new remote controller driver: meson-ir - One LIRC staging driver got rewritten and promoted to mainstream: igorplugusb - A new tuner driver (m88rs6000t) - The old omap2 media driver got removed from staging. This driver uses an old DMA API and it is likely broken on recent kernels. Nobody cared enough to fix it - Media bus format moved to a separate header, as DRM will also use the definitions there - mem2mem_testdev were renamed to vim2m, in order to use the same naming convention taken by the other virtual test driver (vivid) - Added a new driver for coda SoC (coda-jpeg) - The cx88 driver got converted to use videobuf2 core - Make DMABUF export buffer to work with DMA Scatter/Gather and Vmalloc cores - Lots of other fixes, improvements and cleanups on the drivers. * tag 'media/v3.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (384 commits) [media] mn88473: One function call less in mn88473_init() after error [media] mn88473: Remove uneeded check before release_firmware() [media] lirc_zilog: Deletion of unnecessary checks before vfree() [media] MAINTAINERS: Add myself as img-ir maintainer [media] img-ir: Don't set driver's module owner [media] img-ir: Depend on METAG or MIPS or COMPILE_TEST [media] img-ir/hw: Drop [un]register_decoder declarations [media] img-ir/hw: Fix potential deadlock stopping timer [media] img-ir/hw: Always read data to clear buffer [media] redrat3: ensure dma is setup properly [media] ddbridge: remove unneeded check before dvb_unregister_device() [media] si2157: One function call less in si2157_init() after error [media] tuners: remove uneeded checks before release_firmware() [media] arm: omap2: rx51-peripherals: fix build warning [media] stv090x: add an extra protetion against buffer overflow [media] stv090x: Remove an unreachable code [media] stv090x: Some whitespace cleanups [media] em28xx: checkpatch cleanup: whitespaces/new lines cleanups [media] si2168: add support for firmware files in new format [media] si2168: debug printout for firmware version ...
This commit is contained in:
commit
2183a58803
416 changed files with 16725 additions and 13447 deletions
|
@ -243,6 +243,7 @@ header-y += map_to_7segment.h
|
|||
header-y += matroxfb.h
|
||||
header-y += mdio.h
|
||||
header-y += media.h
|
||||
header-y += media-bus-format.h
|
||||
header-y += mei.h
|
||||
header-y += memfd.h
|
||||
header-y += mempolicy.h
|
||||
|
|
125
include/uapi/linux/media-bus-format.h
Normal file
125
include/uapi/linux/media-bus-format.h
Normal file
|
@ -0,0 +1,125 @@
|
|||
/*
|
||||
* Media Bus API header
|
||||
*
|
||||
* Copyright (C) 2009, Guennadi Liakhovetski <g.liakhovetski@gmx.de>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_MEDIA_BUS_FORMAT_H
|
||||
#define __LINUX_MEDIA_BUS_FORMAT_H
|
||||
|
||||
/*
|
||||
* These bus formats uniquely identify data formats on the data bus. Format 0
|
||||
* is reserved, MEDIA_BUS_FMT_FIXED shall be used by host-client pairs, where
|
||||
* the data format is fixed. Additionally, "2X8" means that one pixel is
|
||||
* transferred in two 8-bit samples, "BE" or "LE" specify in which order those
|
||||
* samples are transferred over the bus: "LE" means that the least significant
|
||||
* bits are transferred first, "BE" means that the most significant bits are
|
||||
* transferred first, and "PADHI" and "PADLO" define which bits - low or high,
|
||||
* in the incomplete high byte, are filled with padding bits.
|
||||
*
|
||||
* The bus formats are grouped by type, bus_width, bits per component, samples
|
||||
* per pixel and order of subsamples. Numerical values are sorted using generic
|
||||
* numerical sort order (8 thus comes before 10).
|
||||
*
|
||||
* As their value can't change when a new bus format is inserted in the
|
||||
* enumeration, the bus formats are explicitly given a numerical value. The next
|
||||
* free values for each category are listed below, update them when inserting
|
||||
* new pixel codes.
|
||||
*/
|
||||
|
||||
#define MEDIA_BUS_FMT_FIXED 0x0001
|
||||
|
||||
/* RGB - next is 0x100e */
|
||||
#define MEDIA_BUS_FMT_RGB444_2X8_PADHI_BE 0x1001
|
||||
#define MEDIA_BUS_FMT_RGB444_2X8_PADHI_LE 0x1002
|
||||
#define MEDIA_BUS_FMT_RGB555_2X8_PADHI_BE 0x1003
|
||||
#define MEDIA_BUS_FMT_RGB555_2X8_PADHI_LE 0x1004
|
||||
#define MEDIA_BUS_FMT_BGR565_2X8_BE 0x1005
|
||||
#define MEDIA_BUS_FMT_BGR565_2X8_LE 0x1006
|
||||
#define MEDIA_BUS_FMT_RGB565_2X8_BE 0x1007
|
||||
#define MEDIA_BUS_FMT_RGB565_2X8_LE 0x1008
|
||||
#define MEDIA_BUS_FMT_RGB666_1X18 0x1009
|
||||
#define MEDIA_BUS_FMT_RGB888_1X24 0x100a
|
||||
#define MEDIA_BUS_FMT_RGB888_2X12_BE 0x100b
|
||||
#define MEDIA_BUS_FMT_RGB888_2X12_LE 0x100c
|
||||
#define MEDIA_BUS_FMT_ARGB8888_1X32 0x100d
|
||||
|
||||
/* YUV (including grey) - next is 0x2024 */
|
||||
#define MEDIA_BUS_FMT_Y8_1X8 0x2001
|
||||
#define MEDIA_BUS_FMT_UV8_1X8 0x2015
|
||||
#define MEDIA_BUS_FMT_UYVY8_1_5X8 0x2002
|
||||
#define MEDIA_BUS_FMT_VYUY8_1_5X8 0x2003
|
||||
#define MEDIA_BUS_FMT_YUYV8_1_5X8 0x2004
|
||||
#define MEDIA_BUS_FMT_YVYU8_1_5X8 0x2005
|
||||
#define MEDIA_BUS_FMT_UYVY8_2X8 0x2006
|
||||
#define MEDIA_BUS_FMT_VYUY8_2X8 0x2007
|
||||
#define MEDIA_BUS_FMT_YUYV8_2X8 0x2008
|
||||
#define MEDIA_BUS_FMT_YVYU8_2X8 0x2009
|
||||
#define MEDIA_BUS_FMT_Y10_1X10 0x200a
|
||||
#define MEDIA_BUS_FMT_UYVY10_2X10 0x2018
|
||||
#define MEDIA_BUS_FMT_VYUY10_2X10 0x2019
|
||||
#define MEDIA_BUS_FMT_YUYV10_2X10 0x200b
|
||||
#define MEDIA_BUS_FMT_YVYU10_2X10 0x200c
|
||||
#define MEDIA_BUS_FMT_Y12_1X12 0x2013
|
||||
#define MEDIA_BUS_FMT_UYVY8_1X16 0x200f
|
||||
#define MEDIA_BUS_FMT_VYUY8_1X16 0x2010
|
||||
#define MEDIA_BUS_FMT_YUYV8_1X16 0x2011
|
||||
#define MEDIA_BUS_FMT_YVYU8_1X16 0x2012
|
||||
#define MEDIA_BUS_FMT_YDYUYDYV8_1X16 0x2014
|
||||
#define MEDIA_BUS_FMT_UYVY10_1X20 0x201a
|
||||
#define MEDIA_BUS_FMT_VYUY10_1X20 0x201b
|
||||
#define MEDIA_BUS_FMT_YUYV10_1X20 0x200d
|
||||
#define MEDIA_BUS_FMT_YVYU10_1X20 0x200e
|
||||
#define MEDIA_BUS_FMT_YUV10_1X30 0x2016
|
||||
#define MEDIA_BUS_FMT_AYUV8_1X32 0x2017
|
||||
#define MEDIA_BUS_FMT_UYVY12_2X12 0x201c
|
||||
#define MEDIA_BUS_FMT_VYUY12_2X12 0x201d
|
||||
#define MEDIA_BUS_FMT_YUYV12_2X12 0x201e
|
||||
#define MEDIA_BUS_FMT_YVYU12_2X12 0x201f
|
||||
#define MEDIA_BUS_FMT_UYVY12_1X24 0x2020
|
||||
#define MEDIA_BUS_FMT_VYUY12_1X24 0x2021
|
||||
#define MEDIA_BUS_FMT_YUYV12_1X24 0x2022
|
||||
#define MEDIA_BUS_FMT_YVYU12_1X24 0x2023
|
||||
|
||||
/* Bayer - next is 0x3019 */
|
||||
#define MEDIA_BUS_FMT_SBGGR8_1X8 0x3001
|
||||
#define MEDIA_BUS_FMT_SGBRG8_1X8 0x3013
|
||||
#define MEDIA_BUS_FMT_SGRBG8_1X8 0x3002
|
||||
#define MEDIA_BUS_FMT_SRGGB8_1X8 0x3014
|
||||
#define MEDIA_BUS_FMT_SBGGR10_ALAW8_1X8 0x3015
|
||||
#define MEDIA_BUS_FMT_SGBRG10_ALAW8_1X8 0x3016
|
||||
#define MEDIA_BUS_FMT_SGRBG10_ALAW8_1X8 0x3017
|
||||
#define MEDIA_BUS_FMT_SRGGB10_ALAW8_1X8 0x3018
|
||||
#define MEDIA_BUS_FMT_SBGGR10_DPCM8_1X8 0x300b
|
||||
#define MEDIA_BUS_FMT_SGBRG10_DPCM8_1X8 0x300c
|
||||
#define MEDIA_BUS_FMT_SGRBG10_DPCM8_1X8 0x3009
|
||||
#define MEDIA_BUS_FMT_SRGGB10_DPCM8_1X8 0x300d
|
||||
#define MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_BE 0x3003
|
||||
#define MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_LE 0x3004
|
||||
#define MEDIA_BUS_FMT_SBGGR10_2X8_PADLO_BE 0x3005
|
||||
#define MEDIA_BUS_FMT_SBGGR10_2X8_PADLO_LE 0x3006
|
||||
#define MEDIA_BUS_FMT_SBGGR10_1X10 0x3007
|
||||
#define MEDIA_BUS_FMT_SGBRG10_1X10 0x300e
|
||||
#define MEDIA_BUS_FMT_SGRBG10_1X10 0x300a
|
||||
#define MEDIA_BUS_FMT_SRGGB10_1X10 0x300f
|
||||
#define MEDIA_BUS_FMT_SBGGR12_1X12 0x3008
|
||||
#define MEDIA_BUS_FMT_SGBRG12_1X12 0x3010
|
||||
#define MEDIA_BUS_FMT_SGRBG12_1X12 0x3011
|
||||
#define MEDIA_BUS_FMT_SRGGB12_1X12 0x3012
|
||||
|
||||
/* JPEG compressed formats - next is 0x4002 */
|
||||
#define MEDIA_BUS_FMT_JPEG_1X8 0x4001
|
||||
|
||||
/* Vendor specific formats - next is 0x5002 */
|
||||
|
||||
/* S5C73M3 sensor specific interleaved UYVY and JPEG */
|
||||
#define MEDIA_BUS_FMT_S5C_UYVY_JPEG_1X8 0x5001
|
||||
|
||||
/* HSV - next is 0x6002 */
|
||||
#define MEDIA_BUS_FMT_AHSV8888_1X32 0x6001
|
||||
|
||||
#endif /* __LINUX_MEDIA_BUS_FORMAT_H */
|
|
@ -43,6 +43,8 @@
|
|||
#define V4L2_SEL_TGT_CROP_DEFAULT 0x0001
|
||||
/* Cropping bounds */
|
||||
#define V4L2_SEL_TGT_CROP_BOUNDS 0x0002
|
||||
/* Native frame size */
|
||||
#define V4L2_SEL_TGT_NATIVE_SIZE 0x0003
|
||||
/* Current composing area */
|
||||
#define V4L2_SEL_TGT_COMPOSE 0x0100
|
||||
/* Default composing area */
|
||||
|
|
|
@ -11,122 +11,10 @@
|
|||
#ifndef __LINUX_V4L2_MEDIABUS_H
|
||||
#define __LINUX_V4L2_MEDIABUS_H
|
||||
|
||||
#include <linux/media-bus-format.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/videodev2.h>
|
||||
|
||||
/*
|
||||
* These pixel codes uniquely identify data formats on the media bus. Mostly
|
||||
* they correspond to similarly named V4L2_PIX_FMT_* formats, format 0 is
|
||||
* reserved, V4L2_MBUS_FMT_FIXED shall be used by host-client pairs, where the
|
||||
* data format is fixed. Additionally, "2X8" means that one pixel is transferred
|
||||
* in two 8-bit samples, "BE" or "LE" specify in which order those samples are
|
||||
* transferred over the bus: "LE" means that the least significant bits are
|
||||
* transferred first, "BE" means that the most significant bits are transferred
|
||||
* first, and "PADHI" and "PADLO" define which bits - low or high, in the
|
||||
* incomplete high byte, are filled with padding bits.
|
||||
*
|
||||
* The pixel codes are grouped by type, bus_width, bits per component, samples
|
||||
* per pixel and order of subsamples. Numerical values are sorted using generic
|
||||
* numerical sort order (8 thus comes before 10).
|
||||
*
|
||||
* As their value can't change when a new pixel code is inserted in the
|
||||
* enumeration, the pixel codes are explicitly given a numerical value. The next
|
||||
* free values for each category are listed below, update them when inserting
|
||||
* new pixel codes.
|
||||
*/
|
||||
enum v4l2_mbus_pixelcode {
|
||||
V4L2_MBUS_FMT_FIXED = 0x0001,
|
||||
|
||||
/* RGB - next is 0x100e */
|
||||
V4L2_MBUS_FMT_RGB444_2X8_PADHI_BE = 0x1001,
|
||||
V4L2_MBUS_FMT_RGB444_2X8_PADHI_LE = 0x1002,
|
||||
V4L2_MBUS_FMT_RGB555_2X8_PADHI_BE = 0x1003,
|
||||
V4L2_MBUS_FMT_RGB555_2X8_PADHI_LE = 0x1004,
|
||||
V4L2_MBUS_FMT_BGR565_2X8_BE = 0x1005,
|
||||
V4L2_MBUS_FMT_BGR565_2X8_LE = 0x1006,
|
||||
V4L2_MBUS_FMT_RGB565_2X8_BE = 0x1007,
|
||||
V4L2_MBUS_FMT_RGB565_2X8_LE = 0x1008,
|
||||
V4L2_MBUS_FMT_RGB666_1X18 = 0x1009,
|
||||
V4L2_MBUS_FMT_RGB888_1X24 = 0x100a,
|
||||
V4L2_MBUS_FMT_RGB888_2X12_BE = 0x100b,
|
||||
V4L2_MBUS_FMT_RGB888_2X12_LE = 0x100c,
|
||||
V4L2_MBUS_FMT_ARGB8888_1X32 = 0x100d,
|
||||
|
||||
/* YUV (including grey) - next is 0x2024 */
|
||||
V4L2_MBUS_FMT_Y8_1X8 = 0x2001,
|
||||
V4L2_MBUS_FMT_UV8_1X8 = 0x2015,
|
||||
V4L2_MBUS_FMT_UYVY8_1_5X8 = 0x2002,
|
||||
V4L2_MBUS_FMT_VYUY8_1_5X8 = 0x2003,
|
||||
V4L2_MBUS_FMT_YUYV8_1_5X8 = 0x2004,
|
||||
V4L2_MBUS_FMT_YVYU8_1_5X8 = 0x2005,
|
||||
V4L2_MBUS_FMT_UYVY8_2X8 = 0x2006,
|
||||
V4L2_MBUS_FMT_VYUY8_2X8 = 0x2007,
|
||||
V4L2_MBUS_FMT_YUYV8_2X8 = 0x2008,
|
||||
V4L2_MBUS_FMT_YVYU8_2X8 = 0x2009,
|
||||
V4L2_MBUS_FMT_Y10_1X10 = 0x200a,
|
||||
V4L2_MBUS_FMT_UYVY10_2X10 = 0x2018,
|
||||
V4L2_MBUS_FMT_VYUY10_2X10 = 0x2019,
|
||||
V4L2_MBUS_FMT_YUYV10_2X10 = 0x200b,
|
||||
V4L2_MBUS_FMT_YVYU10_2X10 = 0x200c,
|
||||
V4L2_MBUS_FMT_Y12_1X12 = 0x2013,
|
||||
V4L2_MBUS_FMT_UYVY8_1X16 = 0x200f,
|
||||
V4L2_MBUS_FMT_VYUY8_1X16 = 0x2010,
|
||||
V4L2_MBUS_FMT_YUYV8_1X16 = 0x2011,
|
||||
V4L2_MBUS_FMT_YVYU8_1X16 = 0x2012,
|
||||
V4L2_MBUS_FMT_YDYUYDYV8_1X16 = 0x2014,
|
||||
V4L2_MBUS_FMT_UYVY10_1X20 = 0x201a,
|
||||
V4L2_MBUS_FMT_VYUY10_1X20 = 0x201b,
|
||||
V4L2_MBUS_FMT_YUYV10_1X20 = 0x200d,
|
||||
V4L2_MBUS_FMT_YVYU10_1X20 = 0x200e,
|
||||
V4L2_MBUS_FMT_YUV10_1X30 = 0x2016,
|
||||
V4L2_MBUS_FMT_AYUV8_1X32 = 0x2017,
|
||||
V4L2_MBUS_FMT_UYVY12_2X12 = 0x201c,
|
||||
V4L2_MBUS_FMT_VYUY12_2X12 = 0x201d,
|
||||
V4L2_MBUS_FMT_YUYV12_2X12 = 0x201e,
|
||||
V4L2_MBUS_FMT_YVYU12_2X12 = 0x201f,
|
||||
V4L2_MBUS_FMT_UYVY12_1X24 = 0x2020,
|
||||
V4L2_MBUS_FMT_VYUY12_1X24 = 0x2021,
|
||||
V4L2_MBUS_FMT_YUYV12_1X24 = 0x2022,
|
||||
V4L2_MBUS_FMT_YVYU12_1X24 = 0x2023,
|
||||
|
||||
/* Bayer - next is 0x3019 */
|
||||
V4L2_MBUS_FMT_SBGGR8_1X8 = 0x3001,
|
||||
V4L2_MBUS_FMT_SGBRG8_1X8 = 0x3013,
|
||||
V4L2_MBUS_FMT_SGRBG8_1X8 = 0x3002,
|
||||
V4L2_MBUS_FMT_SRGGB8_1X8 = 0x3014,
|
||||
V4L2_MBUS_FMT_SBGGR10_ALAW8_1X8 = 0x3015,
|
||||
V4L2_MBUS_FMT_SGBRG10_ALAW8_1X8 = 0x3016,
|
||||
V4L2_MBUS_FMT_SGRBG10_ALAW8_1X8 = 0x3017,
|
||||
V4L2_MBUS_FMT_SRGGB10_ALAW8_1X8 = 0x3018,
|
||||
V4L2_MBUS_FMT_SBGGR10_DPCM8_1X8 = 0x300b,
|
||||
V4L2_MBUS_FMT_SGBRG10_DPCM8_1X8 = 0x300c,
|
||||
V4L2_MBUS_FMT_SGRBG10_DPCM8_1X8 = 0x3009,
|
||||
V4L2_MBUS_FMT_SRGGB10_DPCM8_1X8 = 0x300d,
|
||||
V4L2_MBUS_FMT_SBGGR10_2X8_PADHI_BE = 0x3003,
|
||||
V4L2_MBUS_FMT_SBGGR10_2X8_PADHI_LE = 0x3004,
|
||||
V4L2_MBUS_FMT_SBGGR10_2X8_PADLO_BE = 0x3005,
|
||||
V4L2_MBUS_FMT_SBGGR10_2X8_PADLO_LE = 0x3006,
|
||||
V4L2_MBUS_FMT_SBGGR10_1X10 = 0x3007,
|
||||
V4L2_MBUS_FMT_SGBRG10_1X10 = 0x300e,
|
||||
V4L2_MBUS_FMT_SGRBG10_1X10 = 0x300a,
|
||||
V4L2_MBUS_FMT_SRGGB10_1X10 = 0x300f,
|
||||
V4L2_MBUS_FMT_SBGGR12_1X12 = 0x3008,
|
||||
V4L2_MBUS_FMT_SGBRG12_1X12 = 0x3010,
|
||||
V4L2_MBUS_FMT_SGRBG12_1X12 = 0x3011,
|
||||
V4L2_MBUS_FMT_SRGGB12_1X12 = 0x3012,
|
||||
|
||||
/* JPEG compressed formats - next is 0x4002 */
|
||||
V4L2_MBUS_FMT_JPEG_1X8 = 0x4001,
|
||||
|
||||
/* Vendor specific formats - next is 0x5002 */
|
||||
|
||||
/* S5C73M3 sensor specific interleaved UYVY and JPEG */
|
||||
V4L2_MBUS_FMT_S5C_UYVY_JPEG_1X8 = 0x5001,
|
||||
|
||||
/* HSV - next is 0x6002 */
|
||||
V4L2_MBUS_FMT_AHSV8888_1X32 = 0x6001,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct v4l2_mbus_framefmt - frame format on the media bus
|
||||
* @width: frame width
|
||||
|
@ -134,6 +22,8 @@ enum v4l2_mbus_pixelcode {
|
|||
* @code: data format code (from enum v4l2_mbus_pixelcode)
|
||||
* @field: used interlacing type (from enum v4l2_field)
|
||||
* @colorspace: colorspace of the data (from enum v4l2_colorspace)
|
||||
* @ycbcr_enc: YCbCr encoding of the data (from enum v4l2_ycbcr_encoding)
|
||||
* @quantization: quantization of the data (from enum v4l2_quantization)
|
||||
*/
|
||||
struct v4l2_mbus_framefmt {
|
||||
__u32 width;
|
||||
|
@ -141,7 +31,108 @@ struct v4l2_mbus_framefmt {
|
|||
__u32 code;
|
||||
__u32 field;
|
||||
__u32 colorspace;
|
||||
__u32 reserved[7];
|
||||
__u32 ycbcr_enc;
|
||||
__u32 quantization;
|
||||
__u32 reserved[5];
|
||||
};
|
||||
|
||||
#ifndef __KERNEL__
|
||||
/*
|
||||
* enum v4l2_mbus_pixelcode and its definitions are now deprecated, and
|
||||
* MEDIA_BUS_FMT_ definitions (defined in media-bus-format.h) should be
|
||||
* used instead.
|
||||
*
|
||||
* New defines should only be added to media-bus-format.h. The
|
||||
* v4l2_mbus_pixelcode enum is frozen.
|
||||
*/
|
||||
|
||||
#define V4L2_MBUS_FROM_MEDIA_BUS_FMT(name) \
|
||||
V4L2_MBUS_FMT_ ## name = MEDIA_BUS_FMT_ ## name
|
||||
|
||||
enum v4l2_mbus_pixelcode {
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(FIXED),
|
||||
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB444_2X8_PADHI_BE),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB444_2X8_PADHI_LE),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB555_2X8_PADHI_BE),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB555_2X8_PADHI_LE),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(BGR565_2X8_BE),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(BGR565_2X8_LE),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB565_2X8_BE),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB565_2X8_LE),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB666_1X18),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB888_1X24),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB888_2X12_BE),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB888_2X12_LE),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(ARGB8888_1X32),
|
||||
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(Y8_1X8),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(UV8_1X8),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY8_1_5X8),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY8_1_5X8),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV8_1_5X8),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU8_1_5X8),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY8_2X8),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY8_2X8),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV8_2X8),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU8_2X8),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(Y10_1X10),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY10_2X10),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY10_2X10),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV10_2X10),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU10_2X10),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(Y12_1X12),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY8_1X16),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY8_1X16),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV8_1X16),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU8_1X16),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(YDYUYDYV8_1X16),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY10_1X20),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY10_1X20),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV10_1X20),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU10_1X20),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUV10_1X30),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(AYUV8_1X32),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY12_2X12),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY12_2X12),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV12_2X12),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU12_2X12),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY12_1X24),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY12_1X24),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV12_1X24),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU12_1X24),
|
||||
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR8_1X8),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG8_1X8),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG8_1X8),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB8_1X8),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_ALAW8_1X8),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG10_ALAW8_1X8),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG10_ALAW8_1X8),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB10_ALAW8_1X8),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_DPCM8_1X8),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG10_DPCM8_1X8),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG10_DPCM8_1X8),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB10_DPCM8_1X8),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_2X8_PADHI_BE),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_2X8_PADHI_LE),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_2X8_PADLO_BE),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_2X8_PADLO_LE),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_1X10),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG10_1X10),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG10_1X10),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB10_1X10),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR12_1X12),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG12_1X12),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG12_1X12),
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB12_1X12),
|
||||
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(JPEG_1X8),
|
||||
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(S5C_UYVY_JPEG_1X8),
|
||||
|
||||
V4L2_MBUS_FROM_MEDIA_BUS_FMT(AHSV8888_1X32),
|
||||
};
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif
|
||||
|
|
|
@ -68,7 +68,7 @@ struct v4l2_subdev_crop {
|
|||
* struct v4l2_subdev_mbus_code_enum - Media bus format enumeration
|
||||
* @pad: pad number, as reported by the media API
|
||||
* @index: format index during enumeration
|
||||
* @code: format code (from enum v4l2_mbus_pixelcode)
|
||||
* @code: format code (MEDIA_BUS_FMT_ definitions)
|
||||
*/
|
||||
struct v4l2_subdev_mbus_code_enum {
|
||||
__u32 pad;
|
||||
|
@ -81,7 +81,7 @@ struct v4l2_subdev_mbus_code_enum {
|
|||
* struct v4l2_subdev_frame_size_enum - Media bus format enumeration
|
||||
* @pad: pad number, as reported by the media API
|
||||
* @index: format index during enumeration
|
||||
* @code: format code (from enum v4l2_mbus_pixelcode)
|
||||
* @code: format code (MEDIA_BUS_FMT_ definitions)
|
||||
*/
|
||||
struct v4l2_subdev_frame_size_enum {
|
||||
__u32 index;
|
||||
|
@ -109,7 +109,7 @@ struct v4l2_subdev_frame_interval {
|
|||
* struct v4l2_subdev_frame_interval_enum - Frame interval enumeration
|
||||
* @pad: pad number, as reported by the media API
|
||||
* @index: frame interval index during enumeration
|
||||
* @code: format code (from enum v4l2_mbus_pixelcode)
|
||||
* @code: format code (MEDIA_BUS_FMT_ definitions)
|
||||
* @width: frame width in pixels
|
||||
* @height: frame height in pixels
|
||||
* @interval: frame interval in seconds
|
||||
|
|
|
@ -178,30 +178,103 @@ enum v4l2_memory {
|
|||
|
||||
/* see also http://vektor.theorem.ca/graphics/ycbcr/ */
|
||||
enum v4l2_colorspace {
|
||||
/* ITU-R 601 -- broadcast NTSC/PAL */
|
||||
/* SMPTE 170M: used for broadcast NTSC/PAL SDTV */
|
||||
V4L2_COLORSPACE_SMPTE170M = 1,
|
||||
|
||||
/* 1125-Line (US) HDTV */
|
||||
/* Obsolete pre-1998 SMPTE 240M HDTV standard, superseded by Rec 709 */
|
||||
V4L2_COLORSPACE_SMPTE240M = 2,
|
||||
|
||||
/* HD and modern captures. */
|
||||
/* Rec.709: used for HDTV */
|
||||
V4L2_COLORSPACE_REC709 = 3,
|
||||
|
||||
/* broken BT878 extents (601, luma range 16-253 instead of 16-235) */
|
||||
/*
|
||||
* Deprecated, do not use. No driver will ever return this. This was
|
||||
* based on a misunderstanding of the bt878 datasheet.
|
||||
*/
|
||||
V4L2_COLORSPACE_BT878 = 4,
|
||||
|
||||
/* These should be useful. Assume 601 extents. */
|
||||
/*
|
||||
* NTSC 1953 colorspace. This only makes sense when dealing with
|
||||
* really, really old NTSC recordings. Superseded by SMPTE 170M.
|
||||
*/
|
||||
V4L2_COLORSPACE_470_SYSTEM_M = 5,
|
||||
|
||||
/*
|
||||
* EBU Tech 3213 PAL/SECAM colorspace. This only makes sense when
|
||||
* dealing with really old PAL/SECAM recordings. Superseded by
|
||||
* SMPTE 170M.
|
||||
*/
|
||||
V4L2_COLORSPACE_470_SYSTEM_BG = 6,
|
||||
|
||||
/* I know there will be cameras that send this. So, this is
|
||||
* unspecified chromaticities and full 0-255 on each of the
|
||||
* Y'CbCr components
|
||||
/*
|
||||
* Effectively shorthand for V4L2_COLORSPACE_SRGB, V4L2_YCBCR_ENC_601
|
||||
* and V4L2_QUANTIZATION_FULL_RANGE. To be used for (Motion-)JPEG.
|
||||
*/
|
||||
V4L2_COLORSPACE_JPEG = 7,
|
||||
|
||||
/* For RGB colourspaces, this is probably a good start. */
|
||||
/* For RGB colorspaces such as produces by most webcams. */
|
||||
V4L2_COLORSPACE_SRGB = 8,
|
||||
|
||||
/* AdobeRGB colorspace */
|
||||
V4L2_COLORSPACE_ADOBERGB = 9,
|
||||
|
||||
/* BT.2020 colorspace, used for UHDTV. */
|
||||
V4L2_COLORSPACE_BT2020 = 10,
|
||||
};
|
||||
|
||||
enum v4l2_ycbcr_encoding {
|
||||
/*
|
||||
* Mapping of V4L2_YCBCR_ENC_DEFAULT to actual encodings for the
|
||||
* various colorspaces:
|
||||
*
|
||||
* V4L2_COLORSPACE_SMPTE170M, V4L2_COLORSPACE_470_SYSTEM_M,
|
||||
* V4L2_COLORSPACE_470_SYSTEM_BG, V4L2_COLORSPACE_ADOBERGB and
|
||||
* V4L2_COLORSPACE_JPEG: V4L2_YCBCR_ENC_601
|
||||
*
|
||||
* V4L2_COLORSPACE_REC709: V4L2_YCBCR_ENC_709
|
||||
*
|
||||
* V4L2_COLORSPACE_SRGB: V4L2_YCBCR_ENC_SYCC
|
||||
*
|
||||
* V4L2_COLORSPACE_BT2020: V4L2_YCBCR_ENC_BT2020
|
||||
*
|
||||
* V4L2_COLORSPACE_SMPTE240M: V4L2_YCBCR_ENC_SMPTE240M
|
||||
*/
|
||||
V4L2_YCBCR_ENC_DEFAULT = 0,
|
||||
|
||||
/* ITU-R 601 -- SDTV */
|
||||
V4L2_YCBCR_ENC_601 = 1,
|
||||
|
||||
/* Rec. 709 -- HDTV */
|
||||
V4L2_YCBCR_ENC_709 = 2,
|
||||
|
||||
/* ITU-R 601/EN 61966-2-4 Extended Gamut -- SDTV */
|
||||
V4L2_YCBCR_ENC_XV601 = 3,
|
||||
|
||||
/* Rec. 709/EN 61966-2-4 Extended Gamut -- HDTV */
|
||||
V4L2_YCBCR_ENC_XV709 = 4,
|
||||
|
||||
/* sYCC (Y'CbCr encoding of sRGB) */
|
||||
V4L2_YCBCR_ENC_SYCC = 5,
|
||||
|
||||
/* BT.2020 Non-constant Luminance Y'CbCr */
|
||||
V4L2_YCBCR_ENC_BT2020 = 6,
|
||||
|
||||
/* BT.2020 Constant Luminance Y'CbcCrc */
|
||||
V4L2_YCBCR_ENC_BT2020_CONST_LUM = 7,
|
||||
|
||||
/* SMPTE 240M -- Obsolete HDTV */
|
||||
V4L2_YCBCR_ENC_SMPTE240M = 8,
|
||||
};
|
||||
|
||||
enum v4l2_quantization {
|
||||
/*
|
||||
* The default for R'G'B' quantization is always full range. For
|
||||
* Y'CbCr the quantization is always limited range, except for
|
||||
* SYCC, XV601, XV709 or JPEG: those are full range.
|
||||
*/
|
||||
V4L2_QUANTIZATION_DEFAULT = 0,
|
||||
V4L2_QUANTIZATION_FULL_RANGE = 1,
|
||||
V4L2_QUANTIZATION_LIM_RANGE = 2,
|
||||
};
|
||||
|
||||
enum v4l2_priority {
|
||||
|
@ -294,6 +367,8 @@ struct v4l2_pix_format {
|
|||
__u32 colorspace; /* enum v4l2_colorspace */
|
||||
__u32 priv; /* private data, depends on pixelformat */
|
||||
__u32 flags; /* format flags (V4L2_PIX_FMT_FLAG_*) */
|
||||
__u32 ycbcr_enc; /* enum v4l2_ycbcr_encoding */
|
||||
__u32 quantization; /* enum v4l2_quantization */
|
||||
};
|
||||
|
||||
/* Pixel format FOURCC depth Description */
|
||||
|
@ -1249,6 +1324,7 @@ struct v4l2_input {
|
|||
#define V4L2_IN_CAP_DV_TIMINGS 0x00000002 /* Supports S_DV_TIMINGS */
|
||||
#define V4L2_IN_CAP_CUSTOM_TIMINGS V4L2_IN_CAP_DV_TIMINGS /* For compatibility */
|
||||
#define V4L2_IN_CAP_STD 0x00000004 /* Supports S_STD */
|
||||
#define V4L2_IN_CAP_NATIVE_SIZE 0x00000008 /* Supports setting native size */
|
||||
|
||||
/*
|
||||
* V I D E O O U T P U T S
|
||||
|
@ -1272,6 +1348,7 @@ struct v4l2_output {
|
|||
#define V4L2_OUT_CAP_DV_TIMINGS 0x00000002 /* Supports S_DV_TIMINGS */
|
||||
#define V4L2_OUT_CAP_CUSTOM_TIMINGS V4L2_OUT_CAP_DV_TIMINGS /* For compatibility */
|
||||
#define V4L2_OUT_CAP_STD 0x00000004 /* Supports S_STD */
|
||||
#define V4L2_OUT_CAP_NATIVE_SIZE 0x00000008 /* Supports setting native size */
|
||||
|
||||
/*
|
||||
* C O N T R O L S
|
||||
|
@ -1777,6 +1854,8 @@ struct v4l2_plane_pix_format {
|
|||
* @plane_fmt: per-plane information
|
||||
* @num_planes: number of planes for this format
|
||||
* @flags: format flags (V4L2_PIX_FMT_FLAG_*)
|
||||
* @ycbcr_enc: enum v4l2_ycbcr_encoding, Y'CbCr encoding
|
||||
* @quantization: enum v4l2_quantization, colorspace quantization
|
||||
*/
|
||||
struct v4l2_pix_format_mplane {
|
||||
__u32 width;
|
||||
|
@ -1788,7 +1867,9 @@ struct v4l2_pix_format_mplane {
|
|||
struct v4l2_plane_pix_format plane_fmt[VIDEO_MAX_PLANES];
|
||||
__u8 num_planes;
|
||||
__u8 flags;
|
||||
__u8 reserved[10];
|
||||
__u8 ycbcr_enc;
|
||||
__u8 quantization;
|
||||
__u8 reserved[8];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue