mirror of
https://github.com/azure-rtos/usbx.git
synced 2025-01-14 06:43:05 +08:00
699 lines
41 KiB
C
699 lines
41 KiB
C
/**************************************************************************/
|
|
/* */
|
|
/* Copyright (c) Microsoft Corporation. All rights reserved. */
|
|
/* */
|
|
/* This software is licensed under the Microsoft Software License */
|
|
/* Terms for Microsoft Azure RTOS. Full text of the license can be */
|
|
/* found in the LICENSE file at https://aka.ms/AzureRTOS_EULA */
|
|
/* and in the root directory of this software. */
|
|
/* */
|
|
/**************************************************************************/
|
|
|
|
|
|
/**************************************************************************/
|
|
/**************************************************************************/
|
|
/** */
|
|
/** USBX Component */
|
|
/** */
|
|
/** Video Class */
|
|
/** */
|
|
/**************************************************************************/
|
|
/**************************************************************************/
|
|
|
|
|
|
/**************************************************************************/
|
|
/* */
|
|
/* COMPONENT DEFINITION RELEASE */
|
|
/* */
|
|
/* ux_host_class_video.h PORTABLE C */
|
|
/* 6.1.8 */
|
|
/* AUTHOR */
|
|
/* */
|
|
/* Chaoqiong Xiao, Microsoft Corporation */
|
|
/* */
|
|
/* DESCRIPTION */
|
|
/* */
|
|
/* This file contains all the header and extern functions used by the */
|
|
/* USBX video class. */
|
|
/* */
|
|
/* RELEASE HISTORY */
|
|
/* */
|
|
/* DATE NAME DESCRIPTION */
|
|
/* */
|
|
/* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */
|
|
/* 09-30-2020 Chaoqiong Xiao Modified comment(s), */
|
|
/* added new definition, field */
|
|
/* and functions for video */
|
|
/* control handling, used UX */
|
|
/* prefix to refer to TX */
|
|
/* symbols instead of using */
|
|
/* them directly, */
|
|
/* resulting in version 6.1 */
|
|
/* 08-02-2021 Wen Wang Modified comment(s), */
|
|
/* added extern "C" keyword */
|
|
/* for compatibility with C++, */
|
|
/* added new definitions */
|
|
/* according to UVC 1.5 Class */
|
|
/* specification, */
|
|
/* resulting in version 6.1.8 */
|
|
/* */
|
|
/**************************************************************************/
|
|
|
|
#ifndef UX_HOST_CLASS_VIDEO_H
|
|
#define UX_HOST_CLASS_VIDEO_H
|
|
|
|
/* Determine if a C++ compiler is being used. If so, ensure that standard
|
|
C is used to process the API information. */
|
|
|
|
#ifdef __cplusplus
|
|
|
|
/* Yes, C++ compiler is present. Use standard C. */
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
/* Define external static data. */
|
|
extern UCHAR _ux_system_class_video_interface_descriptor_structure[];
|
|
extern UCHAR _ux_system_class_video_input_terminal_descriptor_structure[];
|
|
extern UCHAR _ux_system_class_video_input_header_descriptor_structure[];
|
|
extern UCHAR _ux_system_class_video_processing_unit_descriptor_structure[];
|
|
extern UCHAR _ux_system_class_video_streaming_interface_descriptor_structure[];
|
|
extern UCHAR _ux_system_class_video_streaming_endpoint_descriptor_structure[];
|
|
extern UCHAR _ux_system_class_video_frame_descriptor_structure[];
|
|
|
|
extern UCHAR _ux_system_host_class_video_name[];
|
|
|
|
/* Define Video Class IOCTL constants. */
|
|
|
|
#define UX_HOST_CLASS_VIDEO_IOCTL_GET_INPUT_TERMINAL 0x01
|
|
#define UX_HOST_CLASS_VIDEO_IOCTL_GET_FORMAT_NUMBER 0x02
|
|
#define UX_HOST_CLASS_VIDEO_IOCTL_GET_FORMAT_DATA 0x03
|
|
#define UX_HOST_CLASS_VIDEO_IOCTL_GET_FRAME_NUMBER 0x04
|
|
#define UX_HOST_CLASS_VIDEO_IOCTL_GET_FRAME_DATA 0x05
|
|
#define UX_HOST_CLASS_VIDEO_IOCTL_CHANNEL_START 0x06
|
|
#define UX_HOST_CLASS_VIDEO_IOCTL_CHANNEL_STOP 0x07
|
|
#define UX_HOST_CLASS_VIDEO_IOCTL_GET_FRAME_INTERVAL 0x08
|
|
|
|
#define UX_HOST_CLASS_VIDEO_IOCTL_ABORT_IN_PIPE 0x80
|
|
|
|
/* Define Video Class main constants. */
|
|
|
|
#define UX_HOST_CLASS_VIDEO_CLASS_TRANSFER_TIMEOUT 30
|
|
#define UX_HOST_CLASS_VIDEO_CLASS 0x0e
|
|
#define UX_HOST_CLASS_VIDEO_SUBCLASS_UNDEFINED 0
|
|
#define UX_HOST_CLASS_VIDEO_SUBCLASS_CONTROL 1
|
|
#define UX_HOST_CLASS_VIDEO_SUBCLASS_STREAMING 2
|
|
#define UX_HOST_CLASS_VIDEO_SUBCLASS_INTERFACE_COLLECTION 3
|
|
|
|
|
|
/* Define Video Class main descriptor types. */
|
|
|
|
#define UX_HOST_CLASS_VIDEO_CS_UNDEFINED 0x20
|
|
#define UX_HOST_CLASS_VIDEO_CS_DEVICE 0x21
|
|
#define UX_HOST_CLASS_VIDEO_CS_CONFIGURATION 0x22
|
|
#define UX_HOST_CLASS_VIDEO_CS_STRING 0x23
|
|
#define UX_HOST_CLASS_VIDEO_CS_INTERFACE 0x24
|
|
#define UX_HOST_CLASS_VIDEO_CS_ENDPOINT 0x25
|
|
|
|
/* Define Video Class specific VC . */
|
|
|
|
#define UX_HOST_CLASS_VIDEO_VC_DESCRIPTOR_UNDEFINED 0x00
|
|
#define UX_HOST_CLASS_VIDEO_VC_HEADER 0x01
|
|
#define UX_HOST_CLASS_VIDEO_VC_INPUT_TERMINAL 0x02
|
|
#define UX_HOST_CLASS_VIDEO_VC_OUTPUT_TERMINAL 0x03
|
|
#define UX_HOST_CLASS_VIDEO_VC_SELECTOR_UNIT 0x04
|
|
#define UX_HOST_CLASS_VIDEO_VC_PROCESSING_UNIT 0x05
|
|
#define UX_HOST_CLASS_VIDEO_VC_EXTENSION_UNIT 0x06
|
|
#define UX_HOST_CLASS_VIDEO_VC_ENCODING_UNIT 0x07
|
|
|
|
/* Define Video Class specific VS . */
|
|
|
|
#define UX_HOST_CLASS_VIDEO_VS_UNDEFINED 0x00
|
|
#define UX_HOST_CLASS_VIDEO_VS_INPUT_HEADER 0x01
|
|
#define UX_HOST_CLASS_VIDEO_VS_OUTPUT_HEADER 0x02
|
|
#define UX_HOST_CLASS_VIDEO_VS_STILL_IMAGE_FRAME 0x03
|
|
#define UX_HOST_CLASS_VIDEO_VS_FORMAT_UNCOMPRESSED 0x04
|
|
#define UX_HOST_CLASS_VIDEO_VS_FRAME_UNCOMPRESSED 0x05
|
|
#define UX_HOST_CLASS_VIDEO_VS_FORMAT_MJPEG 0x06
|
|
#define UX_HOST_CLASS_VIDEO_VS_FRAME_MJPEG 0x07
|
|
#define UX_HOST_CLASS_VIDEO_VS_FORMAT_MPEG2TS 0x0A
|
|
#define UX_HOST_CLASS_VIDEO_VS_FORMAT_DV 0x0C
|
|
#define UX_HOST_CLASS_VIDEO_VS_COLORFORMAT 0x0D
|
|
#define UX_HOST_CLASS_VIDEO_VS_FORMAT_FRAME_BASED 0x10
|
|
#define UX_HOST_CLASS_VIDEO_VS_FRAME_FRAME_BASED 0x11
|
|
#define UX_HOST_CLASS_VIDEO_VS_FORMAT_STREAM_BASED 0x12
|
|
#define UX_HOST_CLASS_VIDEO_VS_FORMAT_H264 0x13
|
|
#define UX_HOST_CLASS_VIDEO_VS_FRAME_H264 0x14
|
|
#define UX_HOST_CLASS_VIDEO_VS_FORMAT_H264_SIMULCAST 0x15
|
|
#define UX_HOST_CLASS_VIDEO_VS_FORMAT_VP8 0x16
|
|
#define UX_HOST_CLASS_VIDEO_VS_FRAME_VP8 0x17
|
|
#define UX_HOST_CLASS_VIDEO_VS_FORMAT_VP8_SIMULCAST 0x18
|
|
|
|
|
|
/* Define Video Class specific Control Selectors. */
|
|
|
|
#define UX_HOST_CLASS_VIDEO_CT_CONTROL_UNDEFINED 0x00
|
|
#define UX_HOST_CLASS_VIDEO_CT_SCANNING_MODE_CONTROL 0x01
|
|
#define UX_HOST_CLASS_VIDEO_CT_AE_MODE_CONTROL 0x02
|
|
#define UX_HOST_CLASS_VIDEO_CT_AE_PRIORITY_CONTROL 0x03
|
|
#define UX_HOST_CLASS_VIDEO_CT_EXPOSURE_TIME_ABSOLUTE_CONTROL 0x04
|
|
#define UX_HOST_CLASS_VIDEO_CT_EXPOSURE_TIME_RELATIVE_CONTROL 0x05
|
|
#define UX_HOST_CLASS_VIDEO_CT_FOCUS_ABSOLUTE_CONTROL 0x06
|
|
#define UX_HOST_CLASS_VIDEO_CT_FOCUS_RELATIVE_CONTROL 0x07
|
|
#define UX_HOST_CLASS_VIDEO_CT_FOCUS_AUTO_CONTROL 0x08
|
|
#define UX_HOST_CLASS_VIDEO_CT_IRIS_ABSOLUTE_CONTROL 0x09
|
|
#define UX_HOST_CLASS_VIDEO_CT_IRIS_RELATIVE_CONTROL 0x0A
|
|
#define UX_HOST_CLASS_VIDEO_CT_ZOOM_ABSOLUTE_CONTROL 0x0B
|
|
#define UX_HOST_CLASS_VIDEO_CT_ZOOM_RELATIVE_CONTROL 0x0C
|
|
#define UX_HOST_CLASS_VIDEO_CT_PANTILT_ABSOLUTE_CONTROL 0x0D
|
|
#define UX_HOST_CLASS_VIDEO_CT_PANTILT_RELATIVE_CONTROL 0x0E
|
|
#define UX_HOST_CLASS_VIDEO_CT_ROLL_ABSOLUTE_CONTROL 0x0F
|
|
#define UX_HOST_CLASS_VIDEO_CT_ROLL_RELATIVE_CONTROL 0x10
|
|
#define UX_HOST_CLASS_VIDEO_CT_PRIVACY_CONTROL 0x11
|
|
#define UX_HOST_CLASS_VIDEO_CT_FOCUS_SIMPLE_CONTROL 0x12
|
|
#define UX_HOST_CLASS_VIDEO_CT_WINDOW_CONTROL 0x13
|
|
#define UX_HOST_CLASS_VIDEO_CT_REGION_OF_INTEREST_CONTROL 0x14
|
|
|
|
|
|
#define UX_HOST_CLASS_VIDEO_PU_CONTROL_UNDEFINED 0x00
|
|
#define UX_HOST_CLASS_VIDEO_PU_BACKLIGHT_COMPENSATION_CONTROL 0x01
|
|
#define UX_HOST_CLASS_VIDEO_PU_BRIGHTNESS_CONTROL 0x02
|
|
#define UX_HOST_CLASS_VIDEO_PU_CONTRAST_CONTROL 0x03
|
|
#define UX_HOST_CLASS_VIDEO_PU_GAIN_CONTROL 0x04
|
|
#define UX_HOST_CLASS_VIDEO_PU_POWER_LINE_FREQUENCY_CONTROL 0x05
|
|
#define UX_HOST_CLASS_VIDEO_PU_HUE_CONTROL 0x06
|
|
#define UX_HOST_CLASS_VIDEO_PU_SATURATION_CONTROL 0x07
|
|
#define UX_HOST_CLASS_VIDEO_PU_SHARPNESS_CONTROL 0x08
|
|
#define UX_HOST_CLASS_VIDEO_PU_GAMMA_CONTROL 0x09
|
|
#define UX_HOST_CLASS_VIDEO_PU_WHITE_BALANCE_TEMPERATURE_CONTROL 0x0A
|
|
#define UX_HOST_CLASS_VIDEO_PU_WHITE_BALANCE_TEMPERATURE_AUTO_CONTROL 0x0B
|
|
#define UX_HOST_CLASS_VIDEO_PU_WHITE_BALANCE_COMPONENT_CONTROL 0x0C
|
|
#define UX_HOST_CLASS_VIDEO_PU_WHITE_BALANCE_COMPONENT_AUTO_CONTROL 0x0D
|
|
#define UX_HOST_CLASS_VIDEO_PU_DIGITAL_MULTIPLIER_CONTROL 0x0E
|
|
#define UX_HOST_CLASS_VIDEO_PU_DIGITAL_MULTIPLIER_LIMIT_CONTROL 0x0F
|
|
#define UX_HOST_CLASS_VIDEO_PU_HUE_AUTO_CONTROL 0x10
|
|
#define UX_HOST_CLASS_VIDEO_PU_ANALOG_VIDEO_STANDARD_CONTROL 0x11
|
|
#define UX_HOST_CLASS_VIDEO_PU_ANALOG_LOCK_STATUS_CONTROL 0x12
|
|
#define UX_HOST_CLASS_VIDEO_PU_CONTRAST_AUTO_CONTROL 0x13
|
|
|
|
|
|
#define UX_HOST_CLASS_VIDEO_VS_CONTROL_UNDEFINED 0x00
|
|
#define UX_HOST_CLASS_VIDEO_VS_PROBE_CONTROL 0x01
|
|
#define UX_HOST_CLASS_VIDEO_VS_COMMIT_CONTROL 0x02
|
|
#define UX_HOST_CLASS_VIDEO_VS_STILL_PROBE_CONTROL 0x03
|
|
#define UX_HOST_CLASS_VIDEO_VS_STILL_COMMIT_CONTROL 0x04
|
|
#define UX_HOST_CLASS_VIDEO_VS_STILL_IMAGE_TRIGGER_CONTROL 0x05
|
|
#define UX_HOST_CLASS_VIDEO_VS_STREAM_ERROR_CODE_CONTROL 0x06
|
|
#define UX_HOST_CLASS_VIDEO_VS_GENERATE_KEY_FRAME_CONTROL 0x07
|
|
#define UX_HOST_CLASS_VIDEO_VS_UPDATE_FRAME_SEGMENT_CONTROL 0x08
|
|
#define UX_HOST_CLASS_VIDEO_VS_SYNCH_DELAY_CONTROL 0x09
|
|
|
|
|
|
/* Define USB Video Class terminal types. */
|
|
|
|
#define UX_HOST_CLASS_VIDEO_TT_VENDOR_SPECIFIC 0x0100
|
|
#define UX_HOST_CLASS_VIDEO_TT_STREAMING 0x0101
|
|
|
|
#define UX_HOST_CLASS_VIDEO_ITT_VENDOR_SPECIFIC 0x0200
|
|
#define UX_HOST_CLASS_VIDEO_ITT_CAMERA 0x0201
|
|
#define UX_HOST_CLASS_VIDEO_ITT_MEDIA_TRANSPORT_INPUT 0x0202
|
|
|
|
#define UX_HOST_CLASS_VIDEO_OTT_VENDOR_SPECIFIC 0x0300
|
|
#define UX_HOST_CLASS_VIDEO_OTT_CAMERA 0x0301
|
|
#define UX_HOST_CLASS_VIDEO_OTT_MEDIA_TRANSPORT_INPUT 0x0302
|
|
|
|
|
|
/* Define USB Video Class Request Error Code Control. */
|
|
|
|
#define UX_HOST_CLASS_VIDEO_REQUEST_ERROR_CODE_NO_ERROR 0x00
|
|
#define UX_HOST_CLASS_VIDEO_REQUEST_ERROR_CODE_NOT_READY 0x01
|
|
#define UX_HOST_CLASS_VIDEO_REQUEST_ERROR_CODE_WRONG_STATE 0x02
|
|
#define UX_HOST_CLASS_VIDEO_REQUEST_ERROR_CODE_POWER 0x03
|
|
#define UX_HOST_CLASS_VIDEO_REQUEST_ERROR_CODE_OUT_OF_RANGE 0x04
|
|
#define UX_HOST_CLASS_VIDEO_REQUEST_ERROR_CODE_INVALID_INPUT 0x05
|
|
#define UX_HOST_CLASS_VIDEO_REQUEST_ERROR_CODE_INVALID_CONTROL 0x06
|
|
#define UX_HOST_CLASS_VIDEO_REQUEST_ERROR_CODE_INVALID_REQUEST 0x07
|
|
#define UX_HOST_CLASS_VIDEO_REQUEST_ERROR_CODE_INVALID_VALUE_WITHIN_RANGE 0x08
|
|
#define UX_HOST_CLASS_VIDEO_REQUEST_ERROR_CODE_UNKNOWN 0xFF
|
|
|
|
|
|
/* Define Video Class encoding format types. */
|
|
|
|
#define UX_HOST_CLASS_VIDEO_INTERFACE_DESCRIPTOR_ENTRIES 8
|
|
#define UX_HOST_CLASS_VIDEO_INTERFACE_DESCRIPTOR_LENGTH 8
|
|
|
|
#define UX_HOST_CLASS_VIDEO_INPUT_TERMINAL_DESCRIPTOR_ENTRIES 7
|
|
#define UX_HOST_CLASS_VIDEO_INPUT_TERMINAL_DESCRIPTOR_LENGTH 8
|
|
|
|
#define UX_HOST_CLASS_VIDEO_INPUT_HEADER_DESCRIPTOR_ENTRIES 12
|
|
#define UX_HOST_CLASS_VIDEO_INPUT_HEADER_DESCRIPTOR_LENGTH 13
|
|
|
|
#define UX_HOST_CLASS_VIDEO_PROCESSING_UNIT_DESCRIPTOR_ENTRIES 8
|
|
#define UX_HOST_CLASS_VIDEO_PROCESSING_UNIT_DESCRIPTOR_LENGTH 9
|
|
|
|
#define UX_HOST_CLASS_VIDEO_STREAMING_INTERFACE_DESCRIPTOR_ENTRIES 6
|
|
#define UX_HOST_CLASS_VIDEO_STREAMING_INTERFACE_DESCRIPTOR_LENGTH 6
|
|
|
|
#define UX_HOST_CLASS_VIDEO_STREAMING_ENDPOINT_DESCRIPTOR_ENTRIES 6
|
|
#define UX_HOST_CLASS_VIDEO_STREAMING_ENDPOINT_DESCRIPTOR_LENGTH 6
|
|
|
|
#define UX_HOST_CLASS_VIDEO_FRAME_DESCRIPTOR_ENTRIES 12
|
|
#define UX_HOST_CLASS_VIDEO_FRAME_DESCRIPTOR_LENGTH 30
|
|
|
|
|
|
/* Define Video Class specific interface descriptor. */
|
|
|
|
#define UX_HOST_CLASS_VIDEO_MAX_CHANNEL 8
|
|
#define UX_HOST_CLASS_VIDEO_NAME_LENGTH 64
|
|
|
|
/* Define Video Class specific request codes. */
|
|
|
|
#define UX_HOST_CLASS_VIDEO_REQUEST_CODE_UNDEFINED 0x00
|
|
#define UX_HOST_CLASS_VIDEO_SET_CUR 0x01
|
|
#define UX_HOST_CLASS_VIDEO_GET_CUR 0x81
|
|
#define UX_HOST_CLASS_VIDEO_GET_MIN 0x82
|
|
#define UX_HOST_CLASS_VIDEO_GET_MAX 0x83
|
|
#define UX_HOST_CLASS_VIDEO_GET_RES 0x84
|
|
#define UX_HOST_CLASS_VIDEO_GET_INFO 0x86
|
|
#define UX_HOST_CLASS_VIDEO_GET_DEF 0x87
|
|
#define UX_HOST_CLASS_VIDEO_GET_CUR_ALL 0x91
|
|
#define UX_HOST_CLASS_VIDEO_GET_MIN_ALL 0x92
|
|
#define UX_HOST_CLASS_VIDEO_GET_MAX_ALL 0x93
|
|
#define UX_HOST_CLASS_VIDEO_GET_RES_ALL 0x94
|
|
#define UX_HOST_CLASS_VIDEO_GET_GET_DEF_ALL 0x97
|
|
|
|
/* Define Video Class error codes. */
|
|
|
|
#define UX_HOST_CLASS_VIDEO_WRONG_TYPE 0x90
|
|
#define UX_HOST_CLASS_VIDEO_WRONG_INTERFACE 0x91
|
|
#define UX_HOST_CLASS_VIDEO_PARAMETER_ERROR 0x92
|
|
#define UX_HOST_CLASS_VIDEO_DEVICE_NOT_READY 0x93
|
|
|
|
/* Define Video Class Terminal Control Selectors. */
|
|
#define UX_HOST_CLASS_VIDEO_TCS_VC_CONTROL_UNDEFINED 0x00
|
|
#define UX_HOST_CLASS_VIDEO_TCS_VC_VIDEO_POWER_MODE_CONTROL 0x01
|
|
#define UX_HOST_CLASS_VIDEO_TCS_VC_REQUEST_ERROR_CODE_CONTROL 0x02
|
|
|
|
#define UX_HOST_CLASS_VIDEO_TCS_TE_CONTROL_UNDEFINED 0x00
|
|
|
|
#define UX_HOST_CLASS_VIDEO_TCS_SU_CONTROL_UNDEFINED 0x00
|
|
#define UX_HOST_CLASS_VIDEO_TCS_SU_INPUT_SELECT_CONTROL 0x01
|
|
|
|
#define UX_HOST_CLASS_VIDEO_TCS_CT_CONTROL_UNDEFINED 0x00
|
|
#define UX_HOST_CLASS_VIDEO_TCS_CT_SCANNING_MODE_CONTROL 0x01
|
|
#define UX_HOST_CLASS_VIDEO_TCS_CT_AE_MODE_CONTROL 0x02
|
|
#define UX_HOST_CLASS_VIDEO_TCS_CT_AE_PRIORITY_CONTROL 0x03
|
|
#define UX_HOST_CLASS_VIDEO_TCS_CT_EXPOSURE_TIME_ABSOLUTE_CONTROL 0x04
|
|
#define UX_HOST_CLASS_VIDEO_TCS_CT_EXPOSURE_TIME_RELATIVE_CONTROL 0x05
|
|
#define UX_HOST_CLASS_VIDEO_TCS_CT_FOCUS_ABSOLUTE_CONTROL 0x06
|
|
#define UX_HOST_CLASS_VIDEO_TCS_CT_FOCUS_RELATIVE_CONTROL 0x07
|
|
#define UX_HOST_CLASS_VIDEO_TCS_CT_FOCUS_AUTO_CONTROL 0x08
|
|
#define UX_HOST_CLASS_VIDEO_TCS_CT_IRIS_ABSOLUTE_CONTROL 0x09
|
|
#define UX_HOST_CLASS_VIDEO_TCS_CT_IRIS_RELATIVE_CONTROL 0x0A
|
|
#define UX_HOST_CLASS_VIDEO_TCS_CT_ZOOM_ABSOLUTE_CONTROL 0x0B
|
|
#define UX_HOST_CLASS_VIDEO_TCS_CT_ZOOM_RELATIVE_CONTROL 0x0C
|
|
#define UX_HOST_CLASS_VIDEO_TCS_CT_PANTILT_ABSOLUTE_CONTROL 0x0D
|
|
#define UX_HOST_CLASS_VIDEO_TCS_CT_PANTILT_RELATIVE_CONTROL 0x0E
|
|
#define UX_HOST_CLASS_VIDEO_TCS_CT_ROLL_ABSOLUTE_CONTROL 0x0F
|
|
#define UX_HOST_CLASS_VIDEO_TCS_CT_ROLL_RELATIVE_CONTROL 0x10
|
|
#define UX_HOST_CLASS_VIDEO_TCS_CT_PRIVACY_CONTROL 0x11
|
|
|
|
#define UX_HOST_CLASS_VIDEO_TCS_PU_CONTROL_UNDEFINED 0x00
|
|
#define UX_HOST_CLASS_VIDEO_TCS_PU_BACKLIGHT_COMPENSATION_CONTROL 0x01
|
|
#define UX_HOST_CLASS_VIDEO_TCS_PU_BRIGHTNESS_CONTROL 0x02
|
|
#define UX_HOST_CLASS_VIDEO_TCS_PU_CONTRAST_CONTROL 0x03
|
|
#define UX_HOST_CLASS_VIDEO_TCS_PU_GAIN_CONTROL 0x04
|
|
#define UX_HOST_CLASS_VIDEO_TCS_PU_POWER_LINE_FREQUENCY_CONTROL 0x05
|
|
#define UX_HOST_CLASS_VIDEO_TCS_PU_HUE_CONTROL 0x06
|
|
#define UX_HOST_CLASS_VIDEO_TCS_PU_SATURATION_CONTROL 0x07
|
|
#define UX_HOST_CLASS_VIDEO_TCS_PU_SHARPNESS_CONTROL 0x08
|
|
#define UX_HOST_CLASS_VIDEO_TCS_PU_GAMMA_CONTROL 0x09
|
|
#define UX_HOST_CLASS_VIDEO_TCS_PU_WHITE_BALANCE_TEMPERATURE_CONTROL 0x0A
|
|
#define UX_HOST_CLASS_VIDEO_TCS_PU_WHITE_BALANCE_TEMPERATURE_AUTO_CONTROL 0x0B
|
|
#define UX_HOST_CLASS_VIDEO_TCS_PU_WHITE_BALANCE_COMPONENT_CONTROL 0x0C
|
|
|
|
#define UX_HOST_CLASS_VIDEO_TCS_PU_WHITE_BALANCE_COMPONENT_AUTO_CONTROL 0x0D
|
|
#define UX_HOST_CLASS_VIDEO_TCS_PU_DIGITAL_MULTIPLIER_CONTROL 0x0E
|
|
#define UX_HOST_CLASS_VIDEO_TCS_PU_DIGITAL_MULTIPLIER_LIMIT_CONTROL 0x0F
|
|
#define UX_HOST_CLASS_VIDEO_TCS_PU_HUE_AUTO_CONTROL 0x10
|
|
#define UX_HOST_CLASS_VIDEO_TCS_PU_ANALOG_VIDEO_STANDARD_CONTROL 0x11
|
|
#define UX_HOST_CLASS_VIDEO_TCS_PU_ANALOG_LOCK_STATUS_CONTROL 0x12
|
|
#define UX_HOST_CLASS_VIDEO_TCS_PU_CONTRAST_AUTO_CONTROL 0x13
|
|
|
|
#define UX_HOST_CLASS_VIDEO_TCS_XU_CONTROL_UNDEFINED 0x00
|
|
|
|
#define UX_HOST_CLASS_VIDEO_TCS_VS_CONTROL_UNDEFINED 0x00
|
|
#define UX_HOST_CLASS_VIDEO_TCS_VS_PROBE_CONTROL 0x01
|
|
#define UX_HOST_CLASS_VIDEO_TCS_VS_COMMIT_CONTROL 0x02
|
|
#define UX_HOST_CLASS_VIDEO_TCS_VS_STILL_PROBE_CONTROL 0x03
|
|
#define UX_HOST_CLASS_VIDEO_TCS_VS_STILL_COMMIT_CONTROL 0x04
|
|
#define UX_HOST_CLASS_VIDEO_TCS_VS_STILL_IMAGE_TRIGGER_CONTROL 0x05
|
|
#define UX_HOST_CLASS_VIDEO_TCS_VS_STREAM_ERROR_CODE_CONTROL 0x06
|
|
#define UX_HOST_CLASS_VIDEO_TCS_VS_GENERATE_KEY_FRAME_CONTROL 0x07
|
|
#define UX_HOST_CLASS_VIDEO_TCS_VS_UPDATE_FRAME_SEGMENT_CONTROL 0x08
|
|
#define UX_HOST_CLASS_VIDEO_TCS_VS_SYNCH_DELAY_CONTROL 0x09
|
|
|
|
/* Define Video Class Probe and Commit Controls */
|
|
|
|
#define UX_HOST_CLASS_VIDEO_PROBE_COMMIT_LENGTH 34
|
|
#define UX_HOST_CLASS_VIDEO_PROBE_COMMIT_HINT 0
|
|
#define UX_HOST_CLASS_VIDEO_PROBE_COMMIT_FORMAT_INDEX 2
|
|
#define UX_HOST_CLASS_VIDEO_PROBE_COMMIT_FRAME_INDEX 3
|
|
#define UX_HOST_CLASS_VIDEO_PROBE_COMMIT_FRAME_INTERVAL 4
|
|
#define UX_HOST_CLASS_VIDEO_PROBE_COMMIT_KEY_FRAME_RATE 8
|
|
#define UX_HOST_CLASS_VIDEO_PROBE_COMMIT_PFRAME_RAE 10
|
|
#define UX_HOST_CLASS_VIDEO_PROBE_COMMIT_COMP_QUALITY 12
|
|
#define UX_HOST_CLASS_VIDEO_PROBE_COMMIT_COMP_WINDOW_SIZE 14
|
|
#define UX_HOST_CLASS_VIDEO_PROBE_COMMIT_DELAY 16
|
|
#define UX_HOST_CLASS_VIDEO_PROBE_COMMIT_MAX_VIDEO_FRAME_SIZE 18
|
|
#define UX_HOST_CLASS_VIDEO_PROBE_COMMIT_MAX_PAYLOAD_TRANSFER_SIZE 22
|
|
#define UX_HOST_CLASS_VIDEO_PROBE_COMMIT_CLOCK_FREQUENCY 26
|
|
#define UX_HOST_CLASS_VIDEO_PROBE_COMMIT_FRAMING_INFO 30
|
|
#define UX_HOST_CLASS_VIDEO_PROBE_COMMIT_PREFERED_VERSION 31
|
|
#define UX_HOST_CLASS_VIDEO_PROBE_COMMIT_MIN_VERSION 32
|
|
#define UX_HOST_CLASS_VIDEO_PROBE_COMMIT_MAX_VERSION 33
|
|
|
|
#ifndef UX_HOST_CLASS_VIDEO_TRANSFER_REQUEST_COUNT
|
|
#define UX_HOST_CLASS_VIDEO_TRANSFER_REQUEST_COUNT 8
|
|
#endif
|
|
|
|
typedef struct UX_HOST_CLASS_VIDEO_INTERFACE_HEADER_DESCRIPTOR_STRUCT
|
|
{
|
|
|
|
ULONG bLength;
|
|
ULONG bDescriptorType;
|
|
ULONG bDescriptorSubType;
|
|
ULONG bcdUVC;
|
|
ULONG wTotalLength;
|
|
ULONG dwClockFrequency;
|
|
ULONG bInCollection;
|
|
ULONG baInterfaceNr;
|
|
} UX_HOST_CLASS_VIDEO_INTERFACE_HEADER_DESCRIPTOR;
|
|
|
|
/* Define Video Class specific input header interface descriptor. */
|
|
|
|
typedef struct UX_HOST_CLASS_VIDEO_INPUT_TERMINAL_DESCRIPTOR_STRUCT
|
|
{
|
|
|
|
ULONG bLength;
|
|
ULONG bDescriptorType;
|
|
ULONG bDescriptorSubType;
|
|
ULONG bTerminalID;
|
|
ULONG wTerminalType;
|
|
ULONG bAssocTerminal;
|
|
ULONG iTerminal;
|
|
} UX_HOST_CLASS_VIDEO_INPUT_TERMINAL_DESCRIPTOR;
|
|
|
|
/* Define Video Class specific input header interface descriptor. */
|
|
|
|
typedef struct UX_HOST_CLASS_VIDEO_INPUT_HEADER_DESCRIPTOR_STRUCT
|
|
{
|
|
|
|
ULONG bLength;
|
|
ULONG bDescriptorType;
|
|
ULONG bDescriptorSubType;
|
|
ULONG bNumFormats;
|
|
ULONG wTotalLength;
|
|
ULONG bEndpointAddress;
|
|
ULONG bmInfo;
|
|
ULONG bTerminalLink;
|
|
ULONG bStillCaptureMethod;
|
|
ULONG bTriggerSupport;
|
|
ULONG bTriggerUsage;
|
|
ULONG bControlSize;
|
|
ULONG bmaControls;
|
|
} UX_HOST_CLASS_VIDEO_INPUT_HEADER_DESCRIPTOR;
|
|
|
|
/* Define Video Class Selector descriptor. */
|
|
|
|
typedef struct UX_HOST_CLASS_VIDEO_SELECTOR_UNIT_DESCRIPTOR_STRUCT
|
|
{
|
|
|
|
ULONG bLength;
|
|
ULONG bDescriptorType;
|
|
ULONG bDescriptorSubtype;
|
|
ULONG bUnitID;
|
|
ULONG bNrInPins;
|
|
ULONG baSourceID;
|
|
} UX_HOST_CLASS_VIDEO_SELECTOR_UNIT_DESCRIPTOR;
|
|
|
|
/* Define Video Class Camera Terminal descriptor. */
|
|
|
|
typedef struct UX_HOST_CLASS_VIDEO_CAMERA_TERMINAL_DESCRIPTOR_STRUCT
|
|
{
|
|
|
|
ULONG bLength;
|
|
ULONG bDescriptorType;
|
|
ULONG bDescriptorSubtype;
|
|
ULONG bTerminalID;
|
|
ULONG wTerminalType;
|
|
ULONG bAssocTerminal;
|
|
ULONG iTerminal;
|
|
ULONG wObjectiveFocalLengthMin;
|
|
ULONG wObjectiveFocalLengthMax;
|
|
ULONG wOcularFocalLength;
|
|
ULONG bControlSize;
|
|
ULONG bmControls;
|
|
} UX_HOST_CLASS_VIDEO_CAMERA_TERMINAL_DESCRIPTOR;
|
|
|
|
/* Define Video Class Frame descriptor. */
|
|
|
|
typedef struct UX_HOST_CLASS_VIDEO_FRAME_DESCRIPTOR_STRUCT
|
|
{
|
|
|
|
ULONG bLength;
|
|
ULONG bDescriptorType;
|
|
ULONG bDescriptorSubtype;
|
|
ULONG bFrameIndex;
|
|
ULONG bmCapabilities;
|
|
ULONG wWidth;
|
|
ULONG wHeight;
|
|
ULONG dwMinBitRate;
|
|
ULONG dwMaxBitRate;
|
|
ULONG dwMaxVideoFrameBufferSize;
|
|
ULONG dwDefaultFrameInterval;
|
|
ULONG bFrameIntervalType;
|
|
} UX_HOST_CLASS_VIDEO_FRAME_DESCRIPTOR;
|
|
|
|
|
|
|
|
/* Define Video Class Processing Unit descriptor. */
|
|
|
|
typedef struct UX_HOST_CLASS_VIDEO_PROCESSING_UNIT_DESCRIPTOR_STRUCT
|
|
{
|
|
|
|
ULONG bLength;
|
|
ULONG bDescriptorType;
|
|
ULONG bDescriptorSubtype;
|
|
ULONG bUnitID;
|
|
ULONG bSourceID;
|
|
ULONG wMaxMultiplier;
|
|
ULONG bControlSize;
|
|
ULONG bmControls;
|
|
ULONG iProcessing;
|
|
ULONG bmVideoStandards;
|
|
} UX_HOST_CLASS_VIDEO_PROCESSING_UNIT_DESCRIPTOR;
|
|
|
|
|
|
/* Define Video Class instance structure. */
|
|
|
|
typedef struct UX_HOST_CLASS_VIDEO_STRUCT
|
|
{
|
|
|
|
struct UX_HOST_CLASS_VIDEO_STRUCT
|
|
*ux_host_class_video_next_instance;
|
|
UX_HOST_CLASS *ux_host_class_video_class;
|
|
UX_DEVICE *ux_host_class_video_device;
|
|
UX_INTERFACE *ux_host_class_video_streaming_interface;
|
|
ULONG ux_host_class_video_control_interface_number;
|
|
UX_ENDPOINT *ux_host_class_video_isochronous_endpoint;
|
|
UINT ux_host_class_video_state;
|
|
ULONG ux_host_class_video_feature_unit_id;
|
|
ULONG ux_host_class_video_terminal_id;
|
|
ULONG ux_host_class_video_terminal_type;
|
|
UCHAR *ux_host_class_video_configuration_descriptor;
|
|
ULONG ux_host_class_video_configuration_descriptor_length;
|
|
UCHAR ux_host_class_video_name[UX_HOST_CLASS_VIDEO_NAME_LENGTH];
|
|
ULONG ux_host_class_video_number_formats;
|
|
ULONG ux_host_class_video_length_formats;
|
|
UCHAR *ux_host_class_video_format_address;
|
|
UCHAR *ux_host_class_video_current_format_address;
|
|
ULONG ux_host_class_video_current_format;
|
|
ULONG ux_host_class_video_number_frames;
|
|
ULONG ux_host_class_video_current_frame;
|
|
UCHAR *ux_host_class_video_current_frame_address;
|
|
ULONG ux_host_class_video_current_frame_interval;
|
|
ULONG ux_host_class_video_current_max_payload_size;
|
|
UX_TRANSFER ux_host_class_video_transfer_requests[UX_HOST_CLASS_VIDEO_TRANSFER_REQUEST_COUNT];
|
|
ULONG ux_host_class_video_transfer_request_start_index;
|
|
ULONG ux_host_class_video_transfer_request_end_index;
|
|
UX_SEMAPHORE ux_host_class_video_semaphore;
|
|
UX_SEMAPHORE ux_host_class_video_semaphore_control_request;
|
|
VOID (*ux_host_class_video_transfer_completion_function)(UX_TRANSFER*);
|
|
|
|
} UX_HOST_CLASS_VIDEO;
|
|
|
|
|
|
/* Define Video Class isochronous USB transfer request structure. */
|
|
|
|
typedef struct UX_HOST_CLASS_VIDEO_TRANSFER_REQUEST_STRUCT
|
|
{
|
|
|
|
ULONG ux_host_class_video_transfer_request_status;
|
|
UCHAR * ux_host_class_video_transfer_request_data_pointer;
|
|
ULONG ux_host_class_video_transfer_request_requested_length;
|
|
ULONG ux_host_class_video_transfer_request_actual_length;
|
|
VOID (*ux_host_class_video_transfer_request_completion_function) (struct UX_HOST_CLASS_VIDEO_TRANSFER_REQUEST_STRUCT *);
|
|
UX_SEMAPHORE ux_host_class_video_transfer_request_semaphore;
|
|
VOID *ux_host_class_video_transfer_request_class_instance;
|
|
UINT ux_host_class_video_transfer_request_completion_code;
|
|
struct UX_HOST_CLASS_VIDEO_TRANSFER_REQUEST_STRUCT
|
|
*ux_host_class_video_transfer_request_next_video_transfer_request;
|
|
UX_TRANSFER ux_host_class_video_transfer_request;
|
|
} UX_HOST_CLASS_VIDEO_TRANSFER_REQUEST;
|
|
|
|
|
|
/* Define Video Class channel/value control structures. */
|
|
|
|
typedef struct UX_HOST_CLASS_VIDEO_CONTROL_STRUCT
|
|
{
|
|
|
|
ULONG ux_host_class_video_control;
|
|
LONG ux_host_class_video_control_min;
|
|
LONG ux_host_class_video_control_max;
|
|
LONG ux_host_class_video_control_res;
|
|
LONG ux_host_class_video_control_cur;
|
|
} UX_HOST_CLASS_VIDEO_CONTROL;
|
|
|
|
/* Define Video Class input terminal structures. */
|
|
|
|
typedef struct UX_HOST_CLASS_VIDEO_PARAMETER_INPUT_TERMINAL_STRUCT
|
|
{
|
|
|
|
ULONG ux_host_class_video_parameter_input_terminal_id;
|
|
ULONG ux_host_class_video_parameter_input_terminal_type;
|
|
|
|
} UX_HOST_CLASS_VIDEO_PARAMETER_INPUT_TERMINAL;
|
|
|
|
/* Define Video Class format number structure. */
|
|
|
|
typedef struct UX_HOST_CLASS_VIDEO_PARAMETER_NUMBER_FORMATS_STRUCT
|
|
{
|
|
|
|
ULONG ux_host_class_video_parameter_number_formats;
|
|
|
|
} UX_HOST_CLASS_VIDEO_PARAMETER_NUMBER_FORMATS;
|
|
|
|
/* Define Video Class format data structure. */
|
|
|
|
typedef struct UX_HOST_CLASS_VIDEO_PARAMETER_FORMAT_DATA_STRUCT
|
|
{
|
|
|
|
ULONG ux_host_class_video_parameter_format_requested;
|
|
ULONG ux_host_class_video_parameter_format_subtype;
|
|
ULONG ux_host_class_video_parameter_number_frame_descriptors;
|
|
|
|
} UX_HOST_CLASS_VIDEO_PARAMETER_FORMAT_DATA;
|
|
|
|
typedef struct UX_HOST_CLASS_VIDEO_PARAMETER_FRAME_DATA_STRUCT
|
|
{
|
|
|
|
ULONG ux_host_class_video_parameter_frame_requested;
|
|
ULONG ux_host_class_video_parameter_frame_subtype;
|
|
ULONG ux_host_class_video_parameter_frame_width;
|
|
ULONG ux_host_class_video_parameter_frame_height;
|
|
ULONG ux_host_class_video_parameter_default_frame_interval;
|
|
ULONG ux_host_class_video_parameter_frame_interval_type;
|
|
|
|
} UX_HOST_CLASS_VIDEO_PARAMETER_FRAME_DATA;
|
|
|
|
|
|
typedef struct UX_HOST_CLASS_VIDEO_PARAMETER_CHANNEL_STRUCT
|
|
{
|
|
|
|
ULONG ux_host_class_video_parameter_channel_bandwidth_selection;
|
|
ULONG ux_host_class_video_parameter_format_requested;
|
|
ULONG ux_host_class_video_parameter_frame_requested;
|
|
ULONG ux_host_class_video_parameter_frame_interval_requested;
|
|
|
|
} UX_HOST_CLASS_VIDEO_PARAMETER_CHANNEL;
|
|
|
|
typedef struct UX_HOST_CLASS_VIDEO_PARAMETER_FRAME_INTERVAL_STRUCT
|
|
{
|
|
|
|
ULONG ux_host_class_video_parameter_frame_requested;
|
|
ULONG *ux_host_class_video_parameter_frame_interval_buffer;
|
|
ULONG ux_host_class_video_parameter_frame_interval_buffer_length;
|
|
ULONG ux_host_class_video_parameter_frame_interval_buffer_length_written;
|
|
|
|
} UX_HOST_CLASS_VIDEO_PARAMETER_FRAME_INTERVAL;
|
|
|
|
/* Define Video Class function prototypes. */
|
|
|
|
UINT _ux_host_class_video_activate(UX_HOST_CLASS_COMMAND *command);
|
|
UINT _ux_host_class_video_configure(UX_HOST_CLASS_VIDEO *video);
|
|
UINT _ux_host_class_video_control_get(UX_HOST_CLASS_VIDEO *video, UX_HOST_CLASS_VIDEO_CONTROL *video_control);
|
|
UINT _ux_host_class_video_control_value_get(UX_HOST_CLASS_VIDEO *video, UX_HOST_CLASS_VIDEO_CONTROL *video_control);
|
|
UINT _ux_host_class_video_control_value_set(UX_HOST_CLASS_VIDEO *video, UX_HOST_CLASS_VIDEO_CONTROL *video_control);
|
|
UINT _ux_host_class_video_deactivate(UX_HOST_CLASS_COMMAND *command);
|
|
UINT _ux_host_class_video_descriptor_get(UX_HOST_CLASS_VIDEO *video);
|
|
UINT _ux_host_class_video_endpoints_get(UX_HOST_CLASS_VIDEO *video);
|
|
UINT _ux_host_class_video_entry(UX_HOST_CLASS_COMMAND *command);
|
|
UINT _ux_host_class_video_read(UX_HOST_CLASS_VIDEO *video, UX_HOST_CLASS_VIDEO_TRANSFER_REQUEST *video_transfer_request);
|
|
UINT _ux_host_class_video_transfer_request(UX_HOST_CLASS_VIDEO *video, UX_HOST_CLASS_VIDEO_TRANSFER_REQUEST *video_transfer_request);
|
|
VOID _ux_host_class_video_transfer_request_completed(UX_TRANSFER *transfer_request);
|
|
VOID _ux_host_class_video_transfer_request_callback(UX_TRANSFER *transfer_request);
|
|
UINT _ux_host_class_video_control_list_get(UX_HOST_CLASS_VIDEO *video);
|
|
UINT _ux_host_class_video_input_format_get(UX_HOST_CLASS_VIDEO *video);
|
|
UINT _ux_host_class_video_input_terminal_get(UX_HOST_CLASS_VIDEO *video);
|
|
UINT _ux_host_class_video_alternate_setting_locate(UX_HOST_CLASS_VIDEO *video, UINT max_payload_size, UINT *alternate_setting);
|
|
UINT _ux_host_class_video_ioctl(UX_HOST_CLASS_VIDEO *video, ULONG ioctl_function, VOID *parameter);
|
|
UINT _ux_host_class_video_format_data_get(UX_HOST_CLASS_VIDEO *video, UX_HOST_CLASS_VIDEO_PARAMETER_FORMAT_DATA *format_parameter);
|
|
UINT _ux_host_class_video_frame_data_get(UX_HOST_CLASS_VIDEO *video, UX_HOST_CLASS_VIDEO_PARAMETER_FRAME_DATA *frame_parameter);
|
|
UINT _ux_host_class_video_frame_interval_get(UX_HOST_CLASS_VIDEO *video, UX_HOST_CLASS_VIDEO_PARAMETER_FRAME_INTERVAL *interval_parameter);
|
|
UINT _ux_host_class_video_channel_start(UX_HOST_CLASS_VIDEO *video, UX_HOST_CLASS_VIDEO_PARAMETER_CHANNEL *video_parameter);
|
|
UINT _ux_host_class_video_stop(UX_HOST_CLASS_VIDEO *video);
|
|
UINT _ux_host_class_video_start(UX_HOST_CLASS_VIDEO *video);
|
|
UINT _ux_host_class_video_frame_parameters_set(UX_HOST_CLASS_VIDEO *video, ULONG frame_format, ULONG width, ULONG height, ULONG frame_interval);
|
|
ULONG _ux_host_class_video_max_payload_get(UX_HOST_CLASS_VIDEO *video);
|
|
UINT _ux_host_class_video_transfer_buffer_add(UX_HOST_CLASS_VIDEO *video, UCHAR* buffer);
|
|
UINT _ux_host_class_video_transfer_buffers_add(UX_HOST_CLASS_VIDEO *video, UCHAR** buffers, ULONG num_buffers);
|
|
VOID _ux_host_class_video_transfer_callback_set(UX_HOST_CLASS_VIDEO *video, VOID (*callback_function)(UX_TRANSFER*));
|
|
UINT _ux_host_class_video_entities_parse(UX_HOST_CLASS_VIDEO *video,
|
|
UINT(*parse_function)(VOID *arg,
|
|
UCHAR *packed_interface_descriptor,
|
|
UCHAR *packed_entity_descriptor),
|
|
VOID* arg);
|
|
UINT _ux_host_class_video_control_request(UX_HOST_CLASS_VIDEO *video,
|
|
UINT request, UCHAR interface_index,
|
|
UINT entity_id, UINT control_selector,
|
|
UCHAR *parameter, UINT parameter_size);
|
|
|
|
/* Define Video Class API prototypes. */
|
|
|
|
#define ux_host_class_video_entry _ux_host_class_video_entry
|
|
#define ux_host_class_video_control_get _ux_host_class_video_control_get
|
|
#define ux_host_class_video_control_value_get _ux_host_class_video_control_value_get
|
|
#define ux_host_class_video_control_value_set _ux_host_class_video_control_value_set
|
|
#define ux_host_class_video_read _ux_host_class_video_read
|
|
#define ux_host_class_video_ioctl _ux_host_class_video_ioctl
|
|
#define ux_host_class_video_start _ux_host_class_video_start
|
|
#define ux_host_class_video_stop _ux_host_class_video_stop
|
|
#define ux_host_class_video_frame_parameters_set _ux_host_class_video_frame_parameters_set
|
|
#define ux_host_class_video_max_payload_get _ux_host_class_video_max_payload_get
|
|
#define ux_host_class_video_transfer_buffer_add _ux_host_class_video_transfer_buffer_add
|
|
#define ux_host_class_video_transfer_buffers_add _ux_host_class_video_transfer_buffers_add
|
|
#define ux_host_class_video_transfer_callback_set _ux_host_class_video_transfer_callback_set
|
|
#define ux_host_class_video_entities_parse _ux_host_class_video_entities_parse
|
|
#define ux_host_class_video_control_request _ux_host_class_video_control_request
|
|
|
|
/* Determine if a C++ compiler is being used. If so, complete the standard
|
|
C conditional started above. */
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|