/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* v4l2 uvc internal API header
*
* Some commonly needed functions for uvc drivers
*/
#ifndef __LINUX_V4L2_UVC_H
#define __LINUX_V4L2_UVC_H
/* ------------------------------------------------------------------------
* GUIDs
*/
#define UVC_GUID_UVC_CAMERA \
{0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, \
0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x01}
#define UVC_GUID_UVC_OUTPUT \
{0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, \
0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x02}
#define UVC_GUID_UVC_MEDIA_TRANSPORT_INPUT \
{0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, \
0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x03}
#define UVC_GUID_UVC_PROCESSING \
{0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, \
0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x01, 0 x01}
#define UVC_GUID_UVC_SELECTOR \
{0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, \
0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x01, 0 x02}
#define UVC_GUID_EXT_GPIO_CONTROLLER \
{0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, \
0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x01, 0 x03}
#define UVC_GUID_MSXU_1_5 \
{0 xdc, 0 x95, 0 x3f, 0 x0f, 0 x32, 0 x26, 0 x4e, 0 x4c, \
0 x92, 0 xc9, 0 xa0, 0 x47, 0 x82, 0 xf4, 0 x3b, 0 xc8}
#define UVC_GUID_FORMAT_MJPEG \
{ 'M' , 'J' , 'P' , 'G' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_YUY2 \
{ 'Y' , 'U' , 'Y' , '2' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_YUY2_ISIGHT \
{ 'Y' , 'U' , 'Y' , '2' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 x00, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_NV12 \
{ 'N' , 'V' , '1' , '2' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_YV12 \
{ 'Y' , 'V' , '1' , '2' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_I420 \
{ 'I' , '4' , '2' , '0' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_UYVY \
{ 'U' , 'Y' , 'V' , 'Y' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_Y800 \
{ 'Y' , '8' , '0' , '0' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_Y8 \
{ 'Y' , '8' , ' ' , ' ' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_Y10 \
{ 'Y' , '1' , '0' , ' ' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_Y12 \
{ 'Y' , '1' , '2' , ' ' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_Y16 \
{ 'Y' , '1' , '6' , ' ' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_BY8 \
{ 'B' , 'Y' , '8' , ' ' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_BA81 \
{ 'B' , 'A' , '8' , '1' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_GBRG \
{ 'G' , 'B' , 'R' , 'G' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_GRBG \
{ 'G' , 'R' , 'B' , 'G' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_RGGB \
{ 'R' , 'G' , 'G' , 'B' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_BG16 \
{ 'B' , 'G' , '1' , '6' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_GB16 \
{ 'G' , 'B' , '1' , '6' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_RG16 \
{ 'R' , 'G' , '1' , '6' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_GR16 \
{ 'G' , 'R' , '1' , '6' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_RGBP \
{ 'R' , 'G' , 'B' , 'P' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_BGR3 \
{ 0 x7d, 0 xeb, 0 x36, 0 xe4, 0 x4f, 0 x52, 0 xce, 0 x11, \
0 x9f, 0 x53, 0 x00, 0 x20, 0 xaf, 0 x0b, 0 xa7, 0 x70}
#define UVC_GUID_FORMAT_BGR4 \
{ 0 x7e, 0 xeb, 0 x36, 0 xe4, 0 x4f, 0 x52, 0 xce, 0 x11, \
0 x9f, 0 x53, 0 x00, 0 x20, 0 xaf, 0 x0b, 0 xa7, 0 x70}
#define UVC_GUID_FORMAT_M420 \
{ 'M' , '4' , '2' , '0' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_H264 \
{ 'H' , '2' , '6' , '4' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_H265 \
{ 'H' , '2' , '6' , '5' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_Y8I \
{ 'Y' , '8' , 'I' , ' ' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_Y12I \
{ 'Y' , '1' , '2' , 'I' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_Y16I \
{ 'Y' , '1' , '6' , 'I' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_Z16 \
{ 'Z' , '1' , '6' , ' ' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_RW10 \
{ 'R' , 'W' , '1' , '0' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_INVZ \
{ 'I' , 'N' , 'V' , 'Z' , 0 x90, 0 x2d, 0 x58, 0 x4a, \
0 x92, 0 x0b, 0 x77, 0 x3f, 0 x1f, 0 x2c, 0 x55, 0 x6b}
#define UVC_GUID_FORMAT_INZI \
{ 'I' , 'N' , 'Z' , 'I' , 0 x66, 0 x1a, 0 x42, 0 xa2, \
0 x90, 0 x65, 0 xd0, 0 x18, 0 x14, 0 xa8, 0 xef, 0 x8a}
#define UVC_GUID_FORMAT_INVI \
{ 'I' , 'N' , 'V' , 'I' , 0 xdb, 0 x57, 0 x49, 0 x5e, \
0 x8e, 0 x3f, 0 xf4, 0 x79, 0 x53, 0 x2b, 0 x94, 0 x6f}
#define UVC_GUID_FORMAT_CNF4 \
{ 'C' , ' ' , ' ' , ' ' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_D3DFMT_L8 \
{0 x32, 0 x00, 0 x00, 0 x00, 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_D3DFMT_R5G6B5 \
{0 x7b, 0 xeb, 0 x36, 0 xe4, 0 x4f, 0 x52, 0 xce, 0 x11, \
0 x9f, 0 x53, 0 x00, 0 x20, 0 xaf, 0 x0b, 0 xa7, 0 x70}
#define UVC_GUID_FORMAT_KSMEDIA_L8_IR \
{0 x32, 0 x00, 0 x00, 0 x00, 0 x02, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
#define UVC_GUID_FORMAT_HEVC \
{ 'H' , 'E' , 'V' , 'C' , 0 x00, 0 x00, 0 x10, 0 x00, \
0 x80, 0 x00, 0 x00, 0 xaa, 0 x00, 0 x38, 0 x9b, 0 x71}
struct uvc_format_desc {
u8 guid[16 ];
u32 fcc;
};
const struct uvc_format_desc *uvc_format_by_guid(const u8 guid[16 ]);
#endif /* __LINUX_V4L2_UVC_H */
Messung V0.5 in Prozent C=95 H=96 G=95