| // SPDX-License-Identifier: GPL-2.0-or-later | |
| #include <linux/kernel.h> | |
| #include <linux/module.h> | |
| #include <linux/string.h> | |
| #include <linux/types.h> | |
| #include <linux/usb/uvc.h> | |
| #include <linux/videodev2.h> | |
| /* ------------------------------------------------------------------------ | |
| * Video formats | |
| */ | |
| static const struct uvc_format_desc uvc_fmts[] = { | |
| { | |
| .guid = UVC_GUID_FORMAT_YUY2, | |
| .fcc = V4L2_PIX_FMT_YUYV, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_YUY2_ISIGHT, | |
| .fcc = V4L2_PIX_FMT_YUYV, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_NV12, | |
| .fcc = V4L2_PIX_FMT_NV12, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_MJPEG, | |
| .fcc = V4L2_PIX_FMT_MJPEG, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_YV12, | |
| .fcc = V4L2_PIX_FMT_YVU420, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_I420, | |
| .fcc = V4L2_PIX_FMT_YUV420, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_M420, | |
| .fcc = V4L2_PIX_FMT_M420, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_P010, | |
| .fcc = V4L2_PIX_FMT_P010, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_UYVY, | |
| .fcc = V4L2_PIX_FMT_UYVY, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_Y800, | |
| .fcc = V4L2_PIX_FMT_GREY, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_Y8, | |
| .fcc = V4L2_PIX_FMT_GREY, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_D3DFMT_L8, | |
| .fcc = V4L2_PIX_FMT_GREY, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_KSMEDIA_L8_IR, | |
| .fcc = V4L2_PIX_FMT_GREY, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_Y10, | |
| .fcc = V4L2_PIX_FMT_Y10, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_Y12, | |
| .fcc = V4L2_PIX_FMT_Y12, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_Y16, | |
| .fcc = V4L2_PIX_FMT_Y16, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_BY8, | |
| .fcc = V4L2_PIX_FMT_SBGGR8, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_BA81, | |
| .fcc = V4L2_PIX_FMT_SBGGR8, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_GBRG, | |
| .fcc = V4L2_PIX_FMT_SGBRG8, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_GRBG, | |
| .fcc = V4L2_PIX_FMT_SGRBG8, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_RGGB, | |
| .fcc = V4L2_PIX_FMT_SRGGB8, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_RGBP, | |
| .fcc = V4L2_PIX_FMT_RGB565, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_D3DFMT_R5G6B5, | |
| .fcc = V4L2_PIX_FMT_RGB565, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_BGR3, | |
| .fcc = V4L2_PIX_FMT_BGR24, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_BGR4, | |
| .fcc = V4L2_PIX_FMT_XBGR32, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_H264, | |
| .fcc = V4L2_PIX_FMT_H264, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_H265, | |
| .fcc = V4L2_PIX_FMT_HEVC, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_Y8I, | |
| .fcc = V4L2_PIX_FMT_Y8I, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_Y12I, | |
| .fcc = V4L2_PIX_FMT_Y12I, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_Y16I, | |
| .fcc = V4L2_PIX_FMT_Y16I, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_Z16, | |
| .fcc = V4L2_PIX_FMT_Z16, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_RW10, | |
| .fcc = V4L2_PIX_FMT_SRGGB10P, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_BG16, | |
| .fcc = V4L2_PIX_FMT_SBGGR16, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_GB16, | |
| .fcc = V4L2_PIX_FMT_SGBRG16, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_RG16, | |
| .fcc = V4L2_PIX_FMT_SRGGB16, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_GR16, | |
| .fcc = V4L2_PIX_FMT_SGRBG16, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_INVZ, | |
| .fcc = V4L2_PIX_FMT_Z16, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_INVI, | |
| .fcc = V4L2_PIX_FMT_Y10, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_INZI, | |
| .fcc = V4L2_PIX_FMT_INZI, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_CNF4, | |
| .fcc = V4L2_PIX_FMT_CNF4, | |
| }, | |
| { | |
| .guid = UVC_GUID_FORMAT_HEVC, | |
| .fcc = V4L2_PIX_FMT_HEVC, | |
| }, | |
| }; | |
| const struct uvc_format_desc *uvc_format_by_guid(const u8 guid[16]) | |
| { | |
| unsigned int len = ARRAY_SIZE(uvc_fmts); | |
| unsigned int i; | |
| for (i = 0; i < len; ++i) { | |
| if (memcmp(guid, uvc_fmts[i].guid, 16) == 0) | |
| return &uvc_fmts[i]; | |
| } | |
| return NULL; | |
| } | |
| EXPORT_SYMBOL_GPL(uvc_format_by_guid); | |
| MODULE_DESCRIPTION("USB Video Class common code"); | |
| MODULE_LICENSE("GPL"); |