LibMWCapture  3.3.1
LibMWCapture Documentation
MWUSBCaptureExtension.h
Go to the documentation of this file.
1 // CONFIDENTIAL and PROPRIETARY software of Magewell Electronics Co., Ltd.
3 // Copyright (c) 2011-2014 Magewell Electronics Co., Ltd. (Nanjing)
4 // All rights reserved.
5 // This copyright notice MUST be reproduced on all authorized copies.
7 #ifndef _MWUSB_CAPTURE_EXTENSION_H_
8 #define _MWUSB_CAPTURE_EXTENSION_H_
9 
10 #include <stdlib.h>
11 #include <stdint.h>
12 #include "MWCaptureExtension.h"
13 
14 #ifdef __cplusplus
15 extern "C" {
16 #endif
17 
18 #pragma pack(push,1)
19 
20 typedef int8_t bool_t;
21 typedef void* HUSBCHANNEL;
22 
24  // Product informations (General)
25  MWCAP_HID_CHANNEL_INFO = 1, // G, Data: uint8_t, MWCAP_CHANNEL_INFO
26  MWCAP_HID_FAMILY_INFO, // G, Data: uint8_t, MWCAP_USB_CAPTURE_INFO
27 
28  MWCAP_HID_VIDEO_CAPS, // G, Data: uint8_t, MWCAP_VIDEO_CAPS
29  MWCAP_HID_AUDIO_CAPS, // G, Data: uint8_t, MWCAP_AUDIO_CAPS
30 
31  // Device controls (General)
32  MWCAP_HID_LED_MODE, // S, Data: uint8_t, uint32_t
33  MWCAP_HID_POST_RECONFIG, // S, Data: uint8_t, uint32_t
34 
35  // Notification (General)
36  MWCAP_HID_NOTIFY_ENABLE, // S, Data: uint8_t, MWCAP_NOTIFY_ENABLE
37  MWCAP_HID_NOITFY_STATUS, // G, Data: uint8_t, uint64_t
38 
39  // Input source (General)
40  MWCAP_HID_VIDEO_INPUT_SOURCE_ARRAY, // G, Data: uint8_t, MWCAP_INPUT_SOURCE_ARRAY
41  MWCAP_HID_AUDIO_INPUT_SOURCE_ARRAY, // G, Data: uint8_t, MWCAP_INPUT_SOURCE_ARRAY
42 
43  MWCAP_HID_INPUT_SOURCE_SCAN, // G/S, Data: uint8_t, bool_t
44  MWCAP_HID_INPUT_SOURCE_SCAN_STATE, // G, Data: uint8_t, bool_t
45  MWCAP_HID_AV_INPUT_SOURCE_LINK, // G/S, Data: uint8_t, bool_t
46  MWCAP_HID_VIDEO_INPUT_SOURCE, // G/S, Data: uint8_t, uint32_t
47  MWCAP_HID_AUDIO_INPUT_SOURCE, // G/S, Data: uint8_t, uint32_t
48 
49  // Signal status (General)
50  MWCAP_HID_INPUT_SPECIFIC_STATUS, // G, Data: uint8_t, MWCAP_INPUT_SPECIFIC_STATUS
51  MWCAP_HID_VIDEO_SIGNAL_STATUS, // G, Data: uint8_t, MWCAP_VIDEO_SIGNAL_STATUS
52  MWCAP_HID_AUDIO_SIGNAL_STATUS, // G, Data: uint8_t, MWCAP_AUDIO_SIGNAL_STATUS
53 
54  // Video processing (General)
55  MWCAP_HID_VIDEO_INPUT_ASPECT_RATIO, // G/S, Data: uint8_t, MWCAP_VIDEO_ASPECT_RATIO
56  MWCAP_HID_VIDEO_INPUT_COLOR_FORMAT, // G/S, Data: uint8_t, uint8_t
57  MWCAP_HID_VIDEO_INPUT_QUANTIZATION_RANGE, // G/S, Data: uint8_t, uint8_t
58 
59  MWCAP_HID_VIDEO_CAPTURE_CONNECTION_FORMAT, // G, Data: uint8_t, MWCAP_VIDEO_CONNECTION_FORMAT
60  MWCAP_HID_VIDEO_CAPTURE_PROCESS_SETTINGS, // G/S, Data: uint8_t, MWCAP_VIDEO_PROCESS_SETTINGS
61 
62  // Video output formats (General)
63  MWCAP_HID_VIDEO_OUTPUT_FOURCC, // G/S, Data: uint8_t, MWCAP_VIDEO_OUTPUT_FOURCC
64  MWCAP_HID_VIDEO_OUTPUT_FRAME_SIZE, // G/S, Data: uint8_t, MWCAP_VIDEO_OUTPUT_FRAME_SIZE
65  MWCAP_HID_VIDEO_OUTPUT_FRAME_INTERVAL, // G/S, Data: uint8_t, MWCAP_VIDEO_OUTPUT_FRAME_INTERVAL
66 
67  // VGA/Component timings (Timing) (0x90 - 0x99)
68  MWCAP_HID_VIDEO_AUTO_H_ALIGN = 0x90, // G/S, Data: uint8_t, bool_t
69  MWCAP_HID_VIDEO_SAMPLING_PHASE, // G/S, Data: uint8_t, uint8_t (0-31, 255 triger auto adjust once)
70  MWCAP_HID_VIDEO_SAMPLING_PHASE_AUTO, // G/S, Data: uint8_t, bool_t
71  MWCAP_HID_VIDEO_TIMING, // S, Data: uint8_t, MWCAP_VIDEO_TIMING
72  MWCAP_HID_VIDEO_PREFERRED_TIMING_ARRAY, // G, Data: uint8_t, MWCAP_VIDEO_TIMING_ARRAY
73  MWCAP_HID_VIDEO_CUSTOM_TIMING, // S, Data: uint8_t, MWCAP_VIDEO_CUSTOM_TIMING
74  MWCAP_HID_VIDEO_CUSTOM_TIMING_ARRAY, // G/S, Data: uint8_t, MWCAP_VIDEO_CUSTOM_TIMING_ARRAY
75  MWCAP_HID_VIDEO_CUSTOM_RESOLUTION_ARRAY, // G/S, Data: uint8_t, MWCAP_VIDEO_CUSTOM_RESOLUTION_ARRAY
76 
77  // HDMI related (HDMI) (0x9A - 0x9F)
78  MWCAP_HID_EDID, // G/S, Data: uint8_t, uint8_t[256]
79  MWCAP_HID_EDID_LOOP_THROUGH, // G, Data: uint8_t, uint8_t[256]
80  MWCAP_HID_EDID_MODE, // G/S, Data: uint8_t, uint8_t
81 
82  MWCAP_HID_LOOP_THROUGH, // G, Data: uint8_t, bool_t
83 
84  // HDMI status (HDMI) (0xA0 - 0xB0)
85  MWCAP_HID_HDMI_INFOFRAME_VALID = 0xA0, // G, Data: uint8_t, uint32_t
86  MWCAP_HID_HDMI_INFOFRAME_AVI, // G, Data: uint8_t, HDMI_INFOFRAME_PACKET
87  MWCAP_HID_HDMI_INFOFRAME_AUDIO, // G, Data: uint8_t, HDMI_INFOFRAME_PACKET
88  MWCAP_HID_HDMI_INFOFRAME_SPD, // G, Data: uint8_t, HDMI_INFOFRAME_PACKET
89  MWCAP_HID_HDMI_INFOFRAME_MS, // G, Data: uint8_t, HDMI_INFOFRAME_PACKET
90  MWCAP_HID_HDMI_INFOFRAME_VS, // G, Data: uint8_t, HDMI_INFOFRAME_PACKET
91  MWCAP_HID_HDMI_INFOFRAME_ACP, // G, Data: uint8_t, HDMI_INFOFRAME_PACKET
92  MWCAP_HID_HDMI_INFOFRAME_ISRC1, // G, Data: uint8_t, HDMI_INFOFRAME_PACKET
93  MWCAP_HID_HDMI_INFOFRAME_ISRC2, // G, Data: uint8_t, HDMI_INFOFRAME_PACKET
94  MWCAP_HID_HDMI_INFOFRAME_GAMUT, // G, Data: uint8_t, HDMI_INFOFRAME_PACKET
95 
96  // Audio volumes (Volume) (0xB0 - 0xC0)
97  MWCAP_HID_AUDIO_VOLUME_MICROPHONE = 0xB0, // G/S, Data: uint8_t, MWCAP_AUDIO_VOLUME
98  MWCAP_HID_AUDIO_VOLUME_HEADPHONE, // G/S, Data: uint8_t, MWCAP_AUDIO_VOLUME
99  MWCAP_HID_AUDIO_VOLUME_LINE_IN, // G/S, Data: uint8_t, MWCAP_AUDIO_VOLUME
100  MWCAP_HID_AUDIO_VOLUME_LINE_OUT, // G/S, Data: uint8_t, MWCAP_AUDIO_VOLUME
101  MWCAP_HID_AUDIO_VOLUME_EMBEDDED_CAPTURE, // G/S, Data: uint8_t, MWCAP_AUDIO_VOLUME
102  MWCAP_HID_AUDIO_VOLUME_EMBEDDED_PLAYBACK, // G/S, Data: uint8_t, MWCAP_AUDIO_VOLUME
103  MWCAP_HID_AUDIO_VOLUME_USB_CAPTURE, // G/S, Data: uint8_t, MWCAP_AUDIO_VOLUME
104  MWCAP_HID_AUDIO_VOLUME_USB_PLAYBACK, // G/S, Data: uint8_t, MWCAP_AUDIO_VOLUME
105 
106  // Reserved (0xC0 - 0xD0)
107 
108  // Reserved for future (0xD0 - 0xE0)
109 
110  // Firmware upgrade (General)
111  MWCAP_HID_FIRMWARE_STORAGE = 0xF0, // G, Data: uint8_t, MWCAP_FIRMWARE_STORAGE
112  MWCAP_HID_FIRMWARE_ERASE, // S, Data: uint8_t, MWCAP_FIRMWARE_ERASE
113  MWCAP_HID_FIRMWARE_READ_ADDRESS, // G/S, Data: uint8_t, uint32_t
114  MWCAP_HID_FIRMWARE_DATA, // G/S, Data: uint8_t, MWCAP_FIRMWARE_DATA
115  MWCAP_HID_FIRMWARE_WIP, // G, Data: uint8_t, bool_t
116 
117  // Options
118  MWCAP_HID_STATUS_IMAGE_MODE = 0xFC, // G/S, Data: uint8_t, uint8_t
119  MWCAP_HID_DEVICE_NAME_MODE = 0xFD, // G/S, Data: uint8_t, uint8_t
120  MWCAP_HID_OPTIONS_CONTROL = 0xFE, // S, Data: uint8_t, uint8_t
121 
122  // Extension sets supported (General)
123  MWCAP_HID_EXTENSION_SUPPORTED = 0xFF // G, Data: uint8_t, uint32_t
124 };
125 
126 typedef enum _MWUSBHOT_PLUG_EVETN {
130 
131 typedef void(*LPFN_HOT_PLUG_CALLBACK)(MWUSBHOT_PLUG_EVETN event, const char *pszDevicePath, void* pParam);
132 
133 #define MW_SERIAL_NO_LEN 16
134 #define MW_FAMILY_NAME_LEN 64
135 #define MW_PRODUCT_NAME_LEN 64
136 #define MW_FIRMWARE_NAME_LEN 64
137 
138 typedef struct _MWUSBCAP_CAPTURE_INFO {
139  uint8_t byUSBSpeed;
140  uint8_t byBoardIndex;
144 
147  uint32_t adwInputSources[16];
149 
150 typedef enum _MWCAP_EDID_MODE {
156 
157 #define MWCAP_MAX_NUM_AUDIO_CHANNEL 16
158 
159 typedef struct _MWCAP_AUDIO_VOLUME {
160  uint8_t byChannels;
161  uint8_t byReserved;
162  int16_t sVolumeMin;
163  int16_t sVolumeMax;
164  int16_t sVolumeStep;
165 
169 
170 typedef enum _MWCAP_USB_AUDIO_NODE {
180 
181 typedef struct _MWRECT {
182  int16_t left;
183  int16_t top;
184  int16_t right;
185  int16_t bottom;
186 } MWRECT;
187 
188 #define MWCAP_MAX_NUM_VIDEO_OUTPUT_FOURCC 3
189 #define MWCAP_MAX_NUM_VIDEO_OUTPUT_FRAME_SIZE 24
190 #define MWCAP_MAX_NUM_VIDEO_OUTPUT_FRAME_INTERVAL 8
191 
193  uint8_t byCount;
196 
197 typedef struct _MWSIZE {
198  int16_t cx;
199  int16_t cy;
200 } MWSIZE;
201 
203  uint8_t byCount;
204  uint8_t byDefault;
207 
209  uint8_t byCount;
210  uint8_t byDefault;
213 
219 
224 
226  MWCAP_OPTIONS_RESET, // Reset options to default value
227  MWCAP_OPTIONS_LOAD, // Load from flash/eeprom storage
228  MWCAP_OPTIONS_SAVE // Save to flash/eeprom storage
230 
232  uint8_t byNumTimings;
235 
240 
245 
246 // USB additional capabilities
247 #define MWCAP_USB_VIDEO_CAP_HDMI_LOOP_THROUGH 0x00000001
248 #define MWCAP_USB_VIDEO_CAP_SDI_LOOP_THROUGH 0x00000002
249 #define MWCAP_USB_VIDEO_CAP_PLANAR_FORMAT 0x00000004
250 
251 #define MWCAP_USB_AUDIO_CAP_MICROPHONE (1 << MWCAP_USB_AUDIO_MICROPHONE)
252 #define MWCAP_USB_AUDIO_CAP_HEADPHONE (1 << MWCAP_USB_AUDIO_HEADPHONE)
253 #define MWCAP_USB_AUDIO_CAP_LINE_IN (1 << MWCAP_USB_AUDIO_LINE_IN)
254 #define MWCAP_USB_AUDIO_CAP_LINE_OUT (1 << MWCAP_USB_AUDIO_LINE_OUT)
255 #define MWCAP_USB_AUDIO_CAP_EMBEDDED_CAPTURE (1 << MWCAP_USB_AUDIO_EMBEDDED_CAPTURE)
256 #define MWCAP_USB_AUDIO_CAP_EMBEDDED_PLAYBACK (1 << MWCAP_USB_AUDIO_EMBEDDED_PLAYBACK)
257 #define MWCAP_USB_AUDIO_CAP_USB_CAPTURE (1 << MWCAP_USB_AUDIO_USB_CAPTURE)
258 #define MWCAP_USB_AUDIO_CAP_USB_PLAYBACK (1 << MWCAP_USB_AUDIO_USB_PLAYBACK)
259 
260 #define MWCAP_NOTIFY_VOLUME_MICROPHONE (1ULL << (48 + MWCAP_USB_AUDIO_MICROPHONE))
261 #define MWCAP_NOTIFY_VOLUME_HEADPHONE (1ULL << (48 + MWCAP_USB_AUDIO_HEADPHONE))
262 #define MWCAP_NOTIFY_VOLUME_LINE_IN (1ULL << (48 + MWCAP_USB_AUDIO_LINE_IN))
263 #define MWCAP_NOTIFY_VOLUME_LINE_OUT (1ULL << (48 + MWCAP_USB_AUDIO_LINE_OUT))
264 #define MWCAP_NOTIFY_VOLUME_EMBEDDED_CAPTURE (1ULL << (48 + MWCAP_USB_AUDIO_EMBEDDED_CAPTURE))
265 #define MWCAP_NOTIFY_VOLUME_EMBEDDED_PLAYBACK (1ULL << (48 + MWCAP_USB_AUDIO_EMBEDDED_PLAYBACK))
266 #define MWCAP_NOTIFY_VOLUME_USB_CAPTURE (1ULL << (48 + MWCAP_USB_AUDIO_USB_CAPTURE))
267 #define MWCAP_NOTIFY_VOLUME_USB_PLAYBACK (1ULL << (48 + MWCAP_USB_AUDIO_USB_PLAYBACK))
268 
274 };
275 
276 // MWCAP_HID_EXTENSION_SET
277 #define MWCAP_HID_EXTENSION_HDMI 0x00000001
278 #define MWCAP_HID_EXTENSION_TIMING 0x00000002
279 #define MWCAP_HID_EXTENSION_VOLUME 0x00000004
280 
281 #define MWCAP_MAX_NUM_AUDIO_CHANNEL 16
282 
283 #define MWCAP_MAX_NUM_VIDEO_OUTPUT_FOURCC 3
284 #define MWCAP_MAX_NUM_VIDEO_OUTPUT_FRAME_SIZE 24
285 #define MWCAP_MAX_NUM_VIDEO_OUTPUT_FRAME_INTERVAL 8
286 
287 #pragma pack(pop)
288 
289 #ifdef __cplusplus
290 }
291 #endif
292 
293 
294 #endif //_MWUSB_CAPTURE_EXTENSION_H_
uint32_t adwFOURCCs[MWCAP_MAX_NUM_VIDEO_OUTPUT_FOURCC]
struct _MWUSBCAP_CAPTURE_INFO MWUSBCAP_CAPTURE_INFO
#define MWCAP_MAX_NUM_VIDEO_OUTPUT_FOURCC
struct _MWSIZE MWSIZE
enum _MWCAP_EDID_MODE MWCAP_EDID_MODE
#define MWCAP_MAX_NUM_AUDIO_CHANNEL
_MWCAP_OPTIONS_CONTROL
#define MWCAP_MAX_NUM_VIDEO_OUTPUT_FRAME_SIZE
#define MWCAP_MAX_NUM_VIDEO_OUTPUT_FRAME_INTERVAL
_MWUSBHOT_PLUG_EVETN
enum _MWCAP_DEVICE_NAME_MODE MWCAP_DEVICE_NAME_MODE
void * HUSBCHANNEL
struct _MWRECT MWRECT
enum _MWCAP_OPTIONS_CONTROL MWCAP_OPTIONS_CONTROL
_MWCAP_DEVICE_NAME_MODE
MWCAP_VIDEO_CUSTOM_TIMING aCustomTimings[8]
struct _MWCAP_AUDIO_VOLUME MWCAP_AUDIO_VOLUME
struct _MWCAP_VIDEO_TIMING_ARRAY MWCAP_VIDEO_TIMING_ARRAY
uint32_t adwIntervals[MWCAP_MAX_NUM_VIDEO_OUTPUT_FRAME_INTERVAL]
struct _MWCAP_VIDEO_OUTPUT_FOURCC MWCAP_VIDEO_OUTPUT_FOURCC
MWSIZE aSizes[MWCAP_MAX_NUM_VIDEO_OUTPUT_FRAME_SIZE]
_MWCAP_USB_SPEED_TYPE
struct _MWCAP_VIDEO_CUSTOM_TIMING_ARRAY MWCAP_VIDEO_CUSTOM_TIMING_ARRAY
enum _MWCAP_USB_AUDIO_NODE MWCAP_USB_AUDIO_NODE
enum _MWUSBHOT_PLUG_EVETN MWUSBHOT_PLUG_EVETN
int16_t asVolume[MWCAP_MAX_NUM_AUDIO_CHANNEL]
struct _MWCAP_VIDEO_OUTPUT_FRAME_SIZE MWCAP_VIDEO_OUTPUT_FRAME_SIZE
enum _MWCAP_STATUS_IMAGE_MODE MWCAP_STATUS_IMAGE_MODE
int8_t bool_t
bool_t abMute[MWCAP_MAX_NUM_AUDIO_CHANNEL]
struct _MWCAP_USB_INPUT_SOURCE_ARRAY MWCAP_USB_INPUT_SOURCE_ARRAY
struct _MWCAP_VIDEO_OUTPUT_FRAME_INTERVAL MWCAP_VIDEO_OUTPUT_FRAME_INTERVAL
void(* LPFN_HOT_PLUG_CALLBACK)(MWUSBHOT_PLUG_EVETN event, const char *pszDevicePath, void *pParam)
struct _MWCAP_VIDEO_CUSTOM_RESOLUTION_ARRAY MWCAP_VIDEO_CUSTOM_RESOLUTION_ARRAY
_MWCAP_HID_EXTENSION
_MWCAP_USB_AUDIO_NODE
_MWCAP_STATUS_IMAGE_MODE
MWCAP_VIDEO_TIMING aTimings[8]