brintos

brintos / linux-shallow public Read only

0
0
Text · 3.3 KiB · c54c226 Raw
185 lines · c
1// SPDX-License-Identifier: GPL-2.0-or-later2 3#include <linux/kernel.h>4#include <linux/module.h>5#include <linux/string.h>6#include <linux/types.h>7#include <linux/usb/uvc.h>8#include <linux/videodev2.h>9 10/* ------------------------------------------------------------------------11 * Video formats12 */13 14static const struct uvc_format_desc uvc_fmts[] = {15	{16		.guid		= UVC_GUID_FORMAT_YUY2,17		.fcc		= V4L2_PIX_FMT_YUYV,18	},19	{20		.guid		= UVC_GUID_FORMAT_YUY2_ISIGHT,21		.fcc		= V4L2_PIX_FMT_YUYV,22	},23	{24		.guid		= UVC_GUID_FORMAT_NV12,25		.fcc		= V4L2_PIX_FMT_NV12,26	},27	{28		.guid		= UVC_GUID_FORMAT_MJPEG,29		.fcc		= V4L2_PIX_FMT_MJPEG,30	},31	{32		.guid		= UVC_GUID_FORMAT_YV12,33		.fcc		= V4L2_PIX_FMT_YVU420,34	},35	{36		.guid		= UVC_GUID_FORMAT_I420,37		.fcc		= V4L2_PIX_FMT_YUV420,38	},39	{40		.guid		= UVC_GUID_FORMAT_M420,41		.fcc		= V4L2_PIX_FMT_M420,42	},43	{44		.guid		= UVC_GUID_FORMAT_UYVY,45		.fcc		= V4L2_PIX_FMT_UYVY,46	},47	{48		.guid		= UVC_GUID_FORMAT_Y800,49		.fcc		= V4L2_PIX_FMT_GREY,50	},51	{52		.guid		= UVC_GUID_FORMAT_Y8,53		.fcc		= V4L2_PIX_FMT_GREY,54	},55	{56		.guid		= UVC_GUID_FORMAT_D3DFMT_L8,57		.fcc		= V4L2_PIX_FMT_GREY,58	},59	{60		.guid		= UVC_GUID_FORMAT_KSMEDIA_L8_IR,61		.fcc		= V4L2_PIX_FMT_GREY,62	},63	{64		.guid		= UVC_GUID_FORMAT_Y10,65		.fcc		= V4L2_PIX_FMT_Y10,66	},67	{68		.guid		= UVC_GUID_FORMAT_Y12,69		.fcc		= V4L2_PIX_FMT_Y12,70	},71	{72		.guid		= UVC_GUID_FORMAT_Y16,73		.fcc		= V4L2_PIX_FMT_Y16,74	},75	{76		.guid		= UVC_GUID_FORMAT_BY8,77		.fcc		= V4L2_PIX_FMT_SBGGR8,78	},79	{80		.guid		= UVC_GUID_FORMAT_BA81,81		.fcc		= V4L2_PIX_FMT_SBGGR8,82	},83	{84		.guid		= UVC_GUID_FORMAT_GBRG,85		.fcc		= V4L2_PIX_FMT_SGBRG8,86	},87	{88		.guid		= UVC_GUID_FORMAT_GRBG,89		.fcc		= V4L2_PIX_FMT_SGRBG8,90	},91	{92		.guid		= UVC_GUID_FORMAT_RGGB,93		.fcc		= V4L2_PIX_FMT_SRGGB8,94	},95	{96		.guid		= UVC_GUID_FORMAT_RGBP,97		.fcc		= V4L2_PIX_FMT_RGB565,98	},99	{100		.guid		= UVC_GUID_FORMAT_BGR3,101		.fcc		= V4L2_PIX_FMT_BGR24,102	},103	{104		.guid		= UVC_GUID_FORMAT_BGR4,105		.fcc		= V4L2_PIX_FMT_XBGR32,106	},107	{108		.guid		= UVC_GUID_FORMAT_H264,109		.fcc		= V4L2_PIX_FMT_H264,110	},111	{112		.guid		= UVC_GUID_FORMAT_H265,113		.fcc		= V4L2_PIX_FMT_HEVC,114	},115	{116		.guid		= UVC_GUID_FORMAT_Y8I,117		.fcc		= V4L2_PIX_FMT_Y8I,118	},119	{120		.guid		= UVC_GUID_FORMAT_Y12I,121		.fcc		= V4L2_PIX_FMT_Y12I,122	},123	{124		.guid		= UVC_GUID_FORMAT_Z16,125		.fcc		= V4L2_PIX_FMT_Z16,126	},127	{128		.guid		= UVC_GUID_FORMAT_RW10,129		.fcc		= V4L2_PIX_FMT_SRGGB10P,130	},131	{132		.guid		= UVC_GUID_FORMAT_BG16,133		.fcc		= V4L2_PIX_FMT_SBGGR16,134	},135	{136		.guid		= UVC_GUID_FORMAT_GB16,137		.fcc		= V4L2_PIX_FMT_SGBRG16,138	},139	{140		.guid		= UVC_GUID_FORMAT_RG16,141		.fcc		= V4L2_PIX_FMT_SRGGB16,142	},143	{144		.guid		= UVC_GUID_FORMAT_GR16,145		.fcc		= V4L2_PIX_FMT_SGRBG16,146	},147	{148		.guid		= UVC_GUID_FORMAT_INVZ,149		.fcc		= V4L2_PIX_FMT_Z16,150	},151	{152		.guid		= UVC_GUID_FORMAT_INVI,153		.fcc		= V4L2_PIX_FMT_Y10,154	},155	{156		.guid		= UVC_GUID_FORMAT_INZI,157		.fcc		= V4L2_PIX_FMT_INZI,158	},159	{160		.guid		= UVC_GUID_FORMAT_CNF4,161		.fcc		= V4L2_PIX_FMT_CNF4,162	},163	{164		.guid		= UVC_GUID_FORMAT_HEVC,165		.fcc		= V4L2_PIX_FMT_HEVC,166	},167};168 169const struct uvc_format_desc *uvc_format_by_guid(const u8 guid[16])170{171	unsigned int len = ARRAY_SIZE(uvc_fmts);172	unsigned int i;173 174	for (i = 0; i < len; ++i) {175		if (memcmp(guid, uvc_fmts[i].guid, 16) == 0)176			return &uvc_fmts[i];177	}178 179	return NULL;180}181EXPORT_SYMBOL_GPL(uvc_format_by_guid);182 183MODULE_DESCRIPTION("USB Video Class common code");184MODULE_LICENSE("GPL");185