Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  video.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
 * USB Video Class definitions.
 *
 * Copyright (C) 2009 Laurent Pinchart <laurent.pinchart@skynet.be>
 *
 * This file holds USB constants and structures defined by the USB Device
 * Class Definition for Video Devices. Unless otherwise stated, comments
 * below reference relevant sections of the USB Video Class 1.1 specification
 * available at
 *
 * http://www.usb.org/developers/devclass_docs/USB_Video_Class_1_1.zip
 */


#ifndef __LINUX_USB_VIDEO_H
#define __LINUX_USB_VIDEO_H

#include <linux/types.h>

/* --------------------------------------------------------------------------
 * UVC constants
 */


/* A.2. Video Interface Subclass Codes */
#define UVC_SC_UNDEFINED    0x00
#define UVC_SC_VIDEOCONTROL    0x01
#define UVC_SC_VIDEOSTREAMING    0x02
#define UVC_SC_VIDEO_INTERFACE_COLLECTION  0x03

/* A.3. Video Interface Protocol Codes */
#define UVC_PC_PROTOCOL_UNDEFINED   0x00
#define UVC_PC_PROTOCOL_15    0x01

/* A.5. Video Class-Specific VC Interface Descriptor Subtypes */
#define UVC_VC_DESCRIPTOR_UNDEFINED   0x00
#define UVC_VC_HEADER     0x01
#define UVC_VC_INPUT_TERMINAL    0x02
#define UVC_VC_OUTPUT_TERMINAL    0x03
#define UVC_VC_SELECTOR_UNIT    0x04
#define UVC_VC_PROCESSING_UNIT    0x05
#define UVC_VC_EXTENSION_UNIT    0x06

/* A.6. Video Class-Specific VS Interface Descriptor Subtypes */
#define UVC_VS_UNDEFINED    0x00
#define UVC_VS_INPUT_HEADER    0x01
#define UVC_VS_OUTPUT_HEADER    0x02
#define UVC_VS_STILL_IMAGE_FRAME   0x03
#define UVC_VS_FORMAT_UNCOMPRESSED   0x04
#define UVC_VS_FRAME_UNCOMPRESSED   0x05
#define UVC_VS_FORMAT_MJPEG    0x06
#define UVC_VS_FRAME_MJPEG    0x07
#define UVC_VS_FORMAT_MPEG2TS    0x0a
#define UVC_VS_FORMAT_DV    0x0c
#define UVC_VS_COLORFORMAT    0x0d
#define UVC_VS_FORMAT_FRAME_BASED   0x10
#define UVC_VS_FRAME_FRAME_BASED   0x11
#define UVC_VS_FORMAT_STREAM_BASED   0x12

/* A.7. Video Class-Specific Endpoint Descriptor Subtypes */
#define UVC_EP_UNDEFINED    0x00
#define UVC_EP_GENERAL     0x01
#define UVC_EP_ENDPOINT     0x02
#define UVC_EP_INTERRUPT    0x03

/* A.8. Video Class-Specific Request Codes */
#define UVC_RC_UNDEFINED    0x00
#define UVC_SET_CUR     0x01
#define UVC_GET_CUR     0x81
#define UVC_GET_MIN     0x82
#define UVC_GET_MAX     0x83
#define UVC_GET_RES     0x84
#define UVC_GET_LEN     0x85
#define UVC_GET_INFO     0x86
#define UVC_GET_DEF     0x87

/* A.9.1. VideoControl Interface Control Selectors */
#define UVC_VC_CONTROL_UNDEFINED   0x00
#define UVC_VC_VIDEO_POWER_MODE_CONTROL   0x01
#define UVC_VC_REQUEST_ERROR_CODE_CONTROL  0x02

/* A.9.2. Terminal Control Selectors */
#define UVC_TE_CONTROL_UNDEFINED   0x00

/* A.9.3. Selector Unit Control Selectors */
#define UVC_SU_CONTROL_UNDEFINED   0x00
#define UVC_SU_INPUT_SELECT_CONTROL   0x01

/* A.9.4. Camera Terminal Control Selectors */
#define UVC_CT_CONTROL_UNDEFINED   0x00
#define UVC_CT_SCANNING_MODE_CONTROL   0x01
#define UVC_CT_AE_MODE_CONTROL    0x02
#define UVC_CT_AE_PRIORITY_CONTROL   0x03
#define UVC_CT_EXPOSURE_TIME_ABSOLUTE_CONTROL  0x04
#define UVC_CT_EXPOSURE_TIME_RELATIVE_CONTROL  0x05
#define UVC_CT_FOCUS_ABSOLUTE_CONTROL   0x06
#define UVC_CT_FOCUS_RELATIVE_CONTROL   0x07
#define UVC_CT_FOCUS_AUTO_CONTROL   0x08
#define UVC_CT_IRIS_ABSOLUTE_CONTROL   0x09
#define UVC_CT_IRIS_RELATIVE_CONTROL   0x0a
#define UVC_CT_ZOOM_ABSOLUTE_CONTROL   0x0b
#define UVC_CT_ZOOM_RELATIVE_CONTROL   0x0c
#define UVC_CT_PANTILT_ABSOLUTE_CONTROL   0x0d
#define UVC_CT_PANTILT_RELATIVE_CONTROL   0x0e
#define UVC_CT_ROLL_ABSOLUTE_CONTROL   0x0f
#define UVC_CT_ROLL_RELATIVE_CONTROL   0x10
#define UVC_CT_PRIVACY_CONTROL    0x11
#define UVC_CT_REGION_OF_INTEREST_CONTROL  0x14

/* A.9.5. Processing Unit Control Selectors */
#define UVC_PU_CONTROL_UNDEFINED   0x00
#define UVC_PU_BACKLIGHT_COMPENSATION_CONTROL  0x01
#define UVC_PU_BRIGHTNESS_CONTROL   0x02
#define UVC_PU_CONTRAST_CONTROL    0x03
#define UVC_PU_GAIN_CONTROL    0x04
#define UVC_PU_POWER_LINE_FREQUENCY_CONTROL  0x05
#define UVC_PU_HUE_CONTROL    0x06
#define UVC_PU_SATURATION_CONTROL   0x07
#define UVC_PU_SHARPNESS_CONTROL   0x08
#define UVC_PU_GAMMA_CONTROL    0x09
#define UVC_PU_WHITE_BALANCE_TEMPERATURE_CONTROL 0x0a
#define UVC_PU_WHITE_BALANCE_TEMPERATURE_AUTO_CONTROL 0x0b
#define UVC_PU_WHITE_BALANCE_COMPONENT_CONTROL  0x0c
#define UVC_PU_WHITE_BALANCE_COMPONENT_AUTO_CONTROL 0x0d
#define UVC_PU_DIGITAL_MULTIPLIER_CONTROL  0x0e
#define UVC_PU_DIGITAL_MULTIPLIER_LIMIT_CONTROL  0x0f
#define UVC_PU_HUE_AUTO_CONTROL    0x10
#define UVC_PU_ANALOG_VIDEO_STANDARD_CONTROL  0x11
#define UVC_PU_ANALOG_LOCK_STATUS_CONTROL  0x12

/* A.9.7. VideoStreaming Interface Control Selectors */
#define UVC_VS_CONTROL_UNDEFINED   0x00
#define UVC_VS_PROBE_CONTROL    0x01
#define UVC_VS_COMMIT_CONTROL    0x02
#define UVC_VS_STILL_PROBE_CONTROL   0x03
#define UVC_VS_STILL_COMMIT_CONTROL   0x04
#define UVC_VS_STILL_IMAGE_TRIGGER_CONTROL  0x05
#define UVC_VS_STREAM_ERROR_CODE_CONTROL  0x06
#define UVC_VS_GENERATE_KEY_FRAME_CONTROL  0x07
#define UVC_VS_UPDATE_FRAME_SEGMENT_CONTROL  0x08
#define UVC_VS_SYNC_DELAY_CONTROL   0x09

/* B.1. USB Terminal Types */
#define UVC_TT_VENDOR_SPECIFIC    0x0100
#define UVC_TT_STREAMING    0x0101

/* B.2. Input Terminal Types */
#define UVC_ITT_VENDOR_SPECIFIC    0x0200
#define UVC_ITT_CAMERA     0x0201
#define UVC_ITT_MEDIA_TRANSPORT_INPUT   0x0202

/* B.3. Output Terminal Types */
#define UVC_OTT_VENDOR_SPECIFIC    0x0300
#define UVC_OTT_DISPLAY     0x0301
#define UVC_OTT_MEDIA_TRANSPORT_OUTPUT   0x0302

/* B.4. External Terminal Types */
#define UVC_EXTERNAL_VENDOR_SPECIFIC   0x0400
#define UVC_COMPOSITE_CONNECTOR    0x0401
#define UVC_SVIDEO_CONNECTOR    0x0402
#define UVC_COMPONENT_CONNECTOR    0x0403

/* 2.4.2.2. Status Packet Type */
#define UVC_STATUS_TYPE_CONTROL    1
#define UVC_STATUS_TYPE_STREAMING   2

/* 2.4.3.3. Payload Header Information */
#define UVC_STREAM_EOH     (1 << 7)
#define UVC_STREAM_ERR     (1 << 6)
#define UVC_STREAM_STI     (1 << 5)
#define UVC_STREAM_RES     (1 << 4)
#define UVC_STREAM_SCR     (1 << 3)
#define UVC_STREAM_PTS     (1 << 2)
#define UVC_STREAM_EOF     (1 << 1)
#define UVC_STREAM_FID     (1 << 0)

/* 4.1.2. Control Capabilities */
#define UVC_CONTROL_CAP_GET    (1 << 0)
#define UVC_CONTROL_CAP_SET    (1 << 1)
#define UVC_CONTROL_CAP_DISABLED   (1 << 2)
#define UVC_CONTROL_CAP_AUTOUPDATE   (1 << 3)
#define UVC_CONTROL_CAP_ASYNCHRONOUS   (1 << 4)

/* 3.9.2.6 Color Matching Descriptor Values */
enum uvc_color_primaries_values {
 UVC_COLOR_PRIMARIES_UNSPECIFIED,
 UVC_COLOR_PRIMARIES_BT_709_SRGB,
 UVC_COLOR_PRIMARIES_BT_470_2_M,
 UVC_COLOR_PRIMARIES_BT_470_2_B_G,
 UVC_COLOR_PRIMARIES_SMPTE_170M,
 UVC_COLOR_PRIMARIES_SMPTE_240M,
};

enum uvc_transfer_characteristics_values {
 UVC_TRANSFER_CHARACTERISTICS_UNSPECIFIED,
 UVC_TRANSFER_CHARACTERISTICS_BT_709,
 UVC_TRANSFER_CHARACTERISTICS_BT_470_2_M,
 UVC_TRANSFER_CHARACTERISTICS_BT_470_2_B_G,
 UVC_TRANSFER_CHARACTERISTICS_SMPTE_170M,
 UVC_TRANSFER_CHARACTERISTICS_SMPTE_240M,
 UVC_TRANSFER_CHARACTERISTICS_LINEAR,
 UVC_TRANSFER_CHARACTERISTICS_SRGB,
};

enum uvc_matrix_coefficients {
 UVC_MATRIX_COEFFICIENTS_UNSPECIFIED,
 UVC_MATRIX_COEFFICIENTS_BT_709,
 UVC_MATRIX_COEFFICIENTS_FCC,
 UVC_MATRIX_COEFFICIENTS_BT_470_2_B_G,
 UVC_MATRIX_COEFFICIENTS_SMPTE_170M,
 UVC_MATRIX_COEFFICIENTS_SMPTE_240M,
};

/* ------------------------------------------------------------------------
 * UVC structures
 */


/* All UVC descriptors have these 3 fields at the beginning */
struct uvc_descriptor_header {
 __u8  bLength;
 __u8  bDescriptorType;
 __u8  bDescriptorSubType;
} __attribute__((packed));

/* 3.7.2. Video Control Interface Header Descriptor */
struct uvc_header_descriptor {
 __u8   bLength;
 __u8   bDescriptorType;
 __u8   bDescriptorSubType;
 __le16 bcdUVC;
 __le16 wTotalLength;
 __le32 dwClockFrequency;
 __u8   bInCollection;
 __u8   baInterfaceNr[];
} __attribute__((__packed__));

#define UVC_DT_HEADER_SIZE(n)    (12+(n))

#define UVC_HEADER_DESCRIPTOR(n) \
 uvc_header_descriptor_##n

#define DECLARE_UVC_HEADER_DESCRIPTOR(n)  \
struct UVC_HEADER_DESCRIPTOR(n) {   \
 __u8   bLength;     \
 __u8   bDescriptorType;    \
 __u8   bDescriptorSubType;   \
 __le16 bcdUVC;     \
 __le16 wTotalLength;    \
 __le32 dwClockFrequency;   \
 __u8   bInCollection;    \
 __u8   baInterfaceNr[n];   \
} __attribute__ ((packed))

/* 3.7.2.1. Input Terminal Descriptor */
struct uvc_input_terminal_descriptor {
 __u8   bLength;
 __u8   bDescriptorType;
 __u8   bDescriptorSubType;
 __u8   bTerminalID;
 __le16 wTerminalType;
 __u8   bAssocTerminal;
 __u8   iTerminal;
} __attribute__((__packed__));

#define UVC_DT_INPUT_TERMINAL_SIZE   8

/* 3.7.2.2. Output Terminal Descriptor */
struct uvc_output_terminal_descriptor {
 __u8   bLength;
 __u8   bDescriptorType;
 __u8   bDescriptorSubType;
 __u8   bTerminalID;
 __le16 wTerminalType;
 __u8   bAssocTerminal;
 __u8   bSourceID;
 __u8   iTerminal;
} __attribute__((__packed__));

#define UVC_DT_OUTPUT_TERMINAL_SIZE   9

/* 3.7.2.3. Camera Terminal Descriptor */
struct uvc_camera_terminal_descriptor {
 __u8   bLength;
 __u8   bDescriptorType;
 __u8   bDescriptorSubType;
 __u8   bTerminalID;
 __le16 wTerminalType;
 __u8   bAssocTerminal;
 __u8   iTerminal;
 __le16 wObjectiveFocalLengthMin;
 __le16 wObjectiveFocalLengthMax;
 __le16 wOcularFocalLength;
 __u8   bControlSize;
 __u8   bmControls[3];
} __attribute__((__packed__));

#define UVC_DT_CAMERA_TERMINAL_SIZE(n)   (15+(n))

/* 3.7.2.4. Selector Unit Descriptor */
struct uvc_selector_unit_descriptor {
 __u8  bLength;
 __u8  bDescriptorType;
 __u8  bDescriptorSubType;
 __u8  bUnitID;
 __u8  bNrInPins;
 __u8  baSourceID[0];
 __u8  iSelector;
} __attribute__((__packed__));

#define UVC_DT_SELECTOR_UNIT_SIZE(n)   (6+(n))

#define UVC_SELECTOR_UNIT_DESCRIPTOR(n) \
 uvc_selector_unit_descriptor_##n

#define DECLARE_UVC_SELECTOR_UNIT_DESCRIPTOR(n) \
struct UVC_SELECTOR_UNIT_DESCRIPTOR(n) {  \
 __u8  bLength;     \
 __u8  bDescriptorType;    \
 __u8  bDescriptorSubType;   \
 __u8  bUnitID;     \
 __u8  bNrInPins;    \
 __u8  baSourceID[n];    \
 __u8  iSelector;    \
} __attribute__ ((packed))

/* 3.7.2.5. Processing Unit Descriptor */
struct uvc_processing_unit_descriptor {
 __u8   bLength;
 __u8   bDescriptorType;
 __u8   bDescriptorSubType;
 __u8   bUnitID;
 __u8   bSourceID;
 __le16 wMaxMultiplier;
 __u8   bControlSize;
 __u8   bmControls[2];
 __u8   iProcessing;
 __u8   bmVideoStandards;
} __attribute__((__packed__));

#define UVC_DT_PROCESSING_UNIT_SIZE(n)   (10+(n))

/* 3.7.2.6. Extension Unit Descriptor */
struct uvc_extension_unit_descriptor {
 __u8  bLength;
 __u8  bDescriptorType;
 __u8  bDescriptorSubType;
 __u8  bUnitID;
 __u8  guidExtensionCode[16];
 __u8  bNumControls;
 __u8  bNrInPins;
 __u8  baSourceID[0];
 __u8  bControlSize;
 __u8  bmControls[0];
 __u8  iExtension;
} __attribute__((__packed__));

#define UVC_DT_EXTENSION_UNIT_SIZE(p, n)  (24+(p)+(n))

#define UVC_EXTENSION_UNIT_DESCRIPTOR(p, n) \
 uvc_extension_unit_descriptor_##p_##n

#define DECLARE_UVC_EXTENSION_UNIT_DESCRIPTOR(p, n) \
struct UVC_EXTENSION_UNIT_DESCRIPTOR(p, n) {  \
 __u8  bLength;     \
 __u8  bDescriptorType;    \
 __u8  bDescriptorSubType;   \
 __u8  bUnitID;     \
 __u8  guidExtensionCode[16];   \
 __u8  bNumControls;    \
 __u8  bNrInPins;    \
 __u8  baSourceID[p];    \
 __u8  bControlSize;    \
 __u8  bmControls[n];    \
 __u8  iExtension;    \
} __attribute__ ((packed))

/* 3.8.2.2. Video Control Interrupt Endpoint Descriptor */
struct uvc_control_endpoint_descriptor {
 __u8   bLength;
 __u8   bDescriptorType;
 __u8   bDescriptorSubType;
 __le16 wMaxTransferSize;
} __attribute__((__packed__));

#define UVC_DT_CONTROL_ENDPOINT_SIZE   5

/* 3.9.2.1. Input Header Descriptor */
struct uvc_input_header_descriptor {
 __u8   bLength;
 __u8   bDescriptorType;
 __u8   bDescriptorSubType;
 __u8   bNumFormats;
 __le16 wTotalLength;
 __u8   bEndpointAddress;
 __u8   bmInfo;
 __u8   bTerminalLink;
 __u8   bStillCaptureMethod;
 __u8   bTriggerSupport;
 __u8   bTriggerUsage;
 __u8   bControlSize;
 __u8   bmaControls[];
} __attribute__((__packed__));

#define UVC_DT_INPUT_HEADER_SIZE(n, p)   (13+(n*p))

#define UVC_INPUT_HEADER_DESCRIPTOR(n, p) \
 uvc_input_header_descriptor_##n_##p

#define DECLARE_UVC_INPUT_HEADER_DESCRIPTOR(n, p) \
struct UVC_INPUT_HEADER_DESCRIPTOR(n, p) {  \
 __u8   bLength;     \
 __u8   bDescriptorType;    \
 __u8   bDescriptorSubType;   \
 __u8   bNumFormats;    \
 __le16 wTotalLength;    \
 __u8   bEndpointAddress;   \
 __u8   bmInfo;     \
 __u8   bTerminalLink;    \
 __u8   bStillCaptureMethod;   \
 __u8   bTriggerSupport;    \
 __u8   bTriggerUsage;    \
 __u8   bControlSize;    \
 __u8   bmaControls[p][n];   \
} __attribute__ ((packed))

/* 3.9.2.2. Output Header Descriptor */
struct uvc_output_header_descriptor {
 __u8   bLength;
 __u8   bDescriptorType;
 __u8   bDescriptorSubType;
 __u8   bNumFormats;
 __le16 wTotalLength;
 __u8   bEndpointAddress;
 __u8   bTerminalLink;
 __u8   bControlSize;
 __u8   bmaControls[];
} __attribute__((__packed__));

#define UVC_DT_OUTPUT_HEADER_SIZE(n, p)   (9+(n*p))

#define UVC_OUTPUT_HEADER_DESCRIPTOR(n, p) \
 uvc_output_header_descriptor_##n_##p

#define DECLARE_UVC_OUTPUT_HEADER_DESCRIPTOR(n, p) \
struct UVC_OUTPUT_HEADER_DESCRIPTOR(n, p) {  \
 __u8   bLength;     \
 __u8   bDescriptorType;    \
 __u8   bDescriptorSubType;   \
 __u8   bNumFormats;    \
 __le16 wTotalLength;    \
 __u8   bEndpointAddress;   \
 __u8   bTerminalLink;    \
 __u8   bControlSize;    \
 __u8   bmaControls[p][n];   \
} __attribute__ ((packed))

/* 3.9.2.6. Color matching descriptor */
struct uvc_color_matching_descriptor {
 __u8  bLength;
 __u8  bDescriptorType;
 __u8  bDescriptorSubType;
 __u8  bColorPrimaries;
 __u8  bTransferCharacteristics;
 __u8  bMatrixCoefficients;
} __attribute__((__packed__));

#define UVC_DT_COLOR_MATCHING_SIZE   6

/* 4.3.1.1. Video Probe and Commit Controls */
struct uvc_streaming_control {
 __u16 bmHint;
 __u8  bFormatIndex;
 __u8  bFrameIndex;
 __u32 dwFrameInterval;
 __u16 wKeyFrameRate;
 __u16 wPFrameRate;
 __u16 wCompQuality;
 __u16 wCompWindowSize;
 __u16 wDelay;
 __u32 dwMaxVideoFrameSize;
 __u32 dwMaxPayloadTransferSize;
 __u32 dwClockFrequency;
 __u8  bmFramingInfo;
 __u8  bPreferedVersion;
 __u8  bMinVersion;
 __u8  bMaxVersion;
} __attribute__((__packed__));

/* Uncompressed Payload - 3.1.1. Uncompressed Video Format Descriptor */
struct uvc_format_uncompressed {
 __u8  bLength;
 __u8  bDescriptorType;
 __u8  bDescriptorSubType;
 __u8  bFormatIndex;
 __u8  bNumFrameDescriptors;
 __u8  guidFormat[16];
 __u8  bBitsPerPixel;
 __u8  bDefaultFrameIndex;
 __u8  bAspectRatioX;
 __u8  bAspectRatioY;
 __u8  bmInterlaceFlags;
 __u8  bCopyProtect;
} __attribute__((__packed__));

#define UVC_DT_FORMAT_UNCOMPRESSED_SIZE   27

/* Uncompressed Payload - 3.1.2. Uncompressed Video Frame Descriptor */
struct uvc_frame_uncompressed {
 __u8   bLength;
 __u8   bDescriptorType;
 __u8   bDescriptorSubType;
 __u8   bFrameIndex;
 __u8   bmCapabilities;
 __le16 wWidth;
 __le16 wHeight;
 __le32 dwMinBitRate;
 __le32 dwMaxBitRate;
 __le32 dwMaxVideoFrameBufferSize;
 __le32 dwDefaultFrameInterval;
 __u8   bFrameIntervalType;
 __le32 dwFrameInterval[];
} __attribute__((__packed__));

#define UVC_DT_FRAME_UNCOMPRESSED_SIZE(n)  (26+4*(n))

#define UVC_FRAME_UNCOMPRESSED(n) \
 uvc_frame_uncompressed_##n

#define DECLARE_UVC_FRAME_UNCOMPRESSED(n)  \
struct UVC_FRAME_UNCOMPRESSED(n) {   \
 __u8   bLength;     \
 __u8   bDescriptorType;    \
 __u8   bDescriptorSubType;   \
 __u8   bFrameIndex;    \
 __u8   bmCapabilities;    \
 __le16 wWidth;     \
 __le16 wHeight;     \
 __le32 dwMinBitRate;    \
 __le32 dwMaxBitRate;    \
 __le32 dwMaxVideoFrameBufferSize;  \
 __le32 dwDefaultFrameInterval;   \
 __u8   bFrameIntervalType;   \
 __le32 dwFrameInterval[n];   \
} __attribute__ ((packed))

/* MJPEG Payload - 3.1.1. MJPEG Video Format Descriptor */
struct uvc_format_mjpeg {
 __u8  bLength;
 __u8  bDescriptorType;
 __u8  bDescriptorSubType;
 __u8  bFormatIndex;
 __u8  bNumFrameDescriptors;
 __u8  bmFlags;
 __u8  bDefaultFrameIndex;
 __u8  bAspectRatioX;
 __u8  bAspectRatioY;
 __u8  bmInterlaceFlags;
 __u8  bCopyProtect;
} __attribute__((__packed__));

#define UVC_DT_FORMAT_MJPEG_SIZE   11

/* MJPEG Payload - 3.1.2. MJPEG Video Frame Descriptor */
struct uvc_frame_mjpeg {
 __u8   bLength;
 __u8   bDescriptorType;
 __u8   bDescriptorSubType;
 __u8   bFrameIndex;
 __u8   bmCapabilities;
 __le16 wWidth;
 __le16 wHeight;
 __le32 dwMinBitRate;
 __le32 dwMaxBitRate;
 __le32 dwMaxVideoFrameBufferSize;
 __le32 dwDefaultFrameInterval;
 __u8   bFrameIntervalType;
 __le32 dwFrameInterval[];
} __attribute__((__packed__));

#define UVC_DT_FRAME_MJPEG_SIZE(n)   (26+4*(n))

#define UVC_FRAME_MJPEG(n) \
 uvc_frame_mjpeg_##n

#define DECLARE_UVC_FRAME_MJPEG(n)   \
struct UVC_FRAME_MJPEG(n) {    \
 __u8   bLength;     \
 __u8   bDescriptorType;    \
 __u8   bDescriptorSubType;   \
 __u8   bFrameIndex;    \
 __u8   bmCapabilities;    \
 __le16 wWidth;     \
 __le16 wHeight;     \
 __le32 dwMinBitRate;    \
 __le32 dwMaxBitRate;    \
 __le32 dwMaxVideoFrameBufferSize;  \
 __le32 dwDefaultFrameInterval;   \
 __u8   bFrameIntervalType;   \
 __le32 dwFrameInterval[n];   \
} __attribute__ ((packed))

/* Frame Based Payload - 3.1.1. Frame Based Video Format Descriptor */
struct uvc_format_framebased {
 __u8  bLength;
 __u8  bDescriptorType;
 __u8  bDescriptorSubType;
 __u8  bFormatIndex;
 __u8  bNumFrameDescriptors;
 __u8  guidFormat[16];
 __u8  bBitsPerPixel;
 __u8  bDefaultFrameIndex;
 __u8  bAspectRatioX;
 __u8  bAspectRatioY;
 __u8  bmInterfaceFlags;
 __u8  bCopyProtect;
 __u8  bVariableSize;
} __attribute__((__packed__));

#define UVC_DT_FORMAT_FRAMEBASED_SIZE                  28

/* Frame Based Payload - 3.1.2. Frame Based Video Frame Descriptor */
struct uvc_frame_framebased {
 __u8  bLength;
 __u8  bDescriptorType;
 __u8  bDescriptorSubType;
 __u8  bFrameIndex;
 __u8  bmCapabilities;
 __u16 wWidth;
 __u16 wHeight;
 __u32 dwMinBitRate;
 __u32 dwMaxBitRate;
 __u32 dwDefaultFrameInterval;
 __u8  bFrameIntervalType;
 __u32 dwBytesPerLine;
 __u32 dwFrameInterval[];
} __attribute__((__packed__));

#define UVC_DT_FRAME_FRAMEBASED_SIZE(n)                        (26+4*(n))

#define UVC_FRAME_FRAMEBASED(n) \
 uvc_frame_framebased_##n

#define DECLARE_UVC_FRAME_FRAMEBASED(n)   \
struct UVC_FRAME_FRAMEBASED(n) {   \
 __u8  bLength;     \
 __u8  bDescriptorType;    \
 __u8  bDescriptorSubType;                       \
 __u8  bFrameIndex;                              \
 __u8  bmCapabilities;                           \
 __u16 wWidth;                                   \
 __u16 wHeight;                                  \
 __u32 dwMinBitRate;                             \
 __u32 dwMaxBitRate;                             \
 __u32 dwDefaultFrameInterval;                   \
 __u8  bFrameIntervalType;                       \
 __u32 dwBytesPerLine;                           \
 __u32 dwFrameInterval[n];                       \
} __attribute__ ((packed))

#endif /* __LINUX_USB_VIDEO_H */


Messung V0.5
C=94 H=97 G=95

¤ Dauer der Verarbeitung: 0.6 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge