1 /**
2  * This file has no copyright assigned and is placed in the Public Domain.
3  * This file is part of the mingw-w64 runtime package.
4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5  */
6 #ifndef __VCR_H__
7 #define __VCR_H__
8 
9 #define MCI_VCR_OFFSET 1280
10 
11 #define MCI_LIST 0x0878
12 #define MCI_SETAUDIO 0x0873
13 #define MCI_SETVIDEO 0x0876
14 #define MCI_SIGNAL 0x0875
15 
16 #define MCI_MARK (MCI_USER_MESSAGES + 0)
17 #define MCI_INDEX (MCI_USER_MESSAGES + 1)
18 #define MCI_SETTUNER (MCI_USER_MESSAGES + 2)
19 #define MCI_SETVCR (MCI_USER_MESSAGES + 3)
20 #define MCI_SETTIMECODE (MCI_USER_MESSAGES + 4)
21 
22 #define MCI_TEST __MSABI_LONG(0x00000020)
23 
24 #define MCI_VCR_GETDEVCAPS_CAN_DETECT_LENGTH __MSABI_LONG(0x00004001)
25 #define MCI_VCR_GETDEVCAPS_SEEK_ACCURACY __MSABI_LONG(0x00004002)
26 #define MCI_VCR_GETDEVCAPS_HAS_CLOCK __MSABI_LONG(0x00004003)
27 #define MCI_VCR_GETDEVCAPS_CAN_REVERSE __MSABI_LONG(0x00004004)
28 #define MCI_VCR_GETDEVCAPS_NUMBER_OF_MARKS __MSABI_LONG(0x00004005)
29 #define MCI_VCR_GETDEVCAPS_CAN_TEST __MSABI_LONG(0x00004006)
30 #define MCI_VCR_GETDEVCAPS_CAN_PREROLL __MSABI_LONG(0x00004007)
31 #define MCI_VCR_GETDEVCAPS_CAN_PREVIEW __MSABI_LONG(0x00004008)
32 #define MCI_VCR_GETDEVCAPS_CAN_MONITOR_SOURCES __MSABI_LONG(0x00004009)
33 #define MCI_VCR_GETDEVCAPS_HAS_TIMECODE __MSABI_LONG(0x0000400A)
34 #define MCI_VCR_GETDEVCAPS_CAN_FREEZE __MSABI_LONG(0x0000401B)
35 #define MCI_VCR_GETDEVCAPS_CLOCK_INCREMENT_RATE __MSABI_LONG(0x0000401C)
36 
37 #define MCI_VCR_INFO_VERSION __MSABI_LONG(0x00010000)
38 
39 #define MCI_VCR_PLAY_REVERSE __MSABI_LONG(0x00010000)
40 #define MCI_VCR_PLAY_AT __MSABI_LONG(0x00020000)
41 #define MCI_VCR_PLAY_SCAN __MSABI_LONG(0x00040000)
42 
43 #define MCI_VCR_RECORD_INITIALIZE __MSABI_LONG(0x00010000)
44 #define MCI_VCR_RECORD_AT __MSABI_LONG(0x00020000)
45 #define MCI_VCR_RECORD_PREVIEW __MSABI_LONG(0x00040000)
46 
47 #define MCI_VCR_CUE_INPUT __MSABI_LONG(0x00010000)
48 #define MCI_VCR_CUE_OUTPUT __MSABI_LONG(0x00020000)
49 #define MCI_VCR_CUE_PREROLL __MSABI_LONG(0x00040000)
50 #define MCI_VCR_CUE_REVERSE __MSABI_LONG(0x00080000)
51 
52 #define MCI_VCR_SEEK_REVERSE __MSABI_LONG(0x00010000)
53 #define MCI_VCR_SEEK_MARK __MSABI_LONG(0x00020000)
54 #define MCI_VCR_SEEK_AT __MSABI_LONG(0x00040000)
55 
56 #define MCI_VCR_SETTUNER_CHANNEL __MSABI_LONG(0x00010000)
57 #define MCI_VCR_SETTUNER_CHANNEL_UP __MSABI_LONG(0x00020000)
58 #define MCI_VCR_SETTUNER_CHANNEL_DOWN __MSABI_LONG(0x00040000)
59 #define MCI_VCR_SETTUNER_CHANNEL_SEEK_UP __MSABI_LONG(0x00080000)
60 #define MCI_VCR_SETTUNER_CHANNEL_SEEK_DOWN __MSABI_LONG(0x00100000)
61 #define MCI_VCR_SETTUNER_NUMBER __MSABI_LONG(0x00200000)
62 
63 #define MCI_VCR_SET_TIME_MODE __MSABI_LONG(0x00010000)
64 #define MCI_VCR_SET_POWER __MSABI_LONG(0x00020000)
65 #define MCI_VCR_SET_RECORD_FORMAT __MSABI_LONG(0x00040000)
66 #define MCI_VCR_SET_COUNTER_FORMAT __MSABI_LONG(0x00080000)
67 #define MCI_VCR_SET_INDEX __MSABI_LONG(0x00100000)
68 #define MCI_VCR_SET_ASSEMBLE_RECORD __MSABI_LONG(0x00200000)
69 #define MCI_VCR_SET_TRACKING __MSABI_LONG(0x00400000)
70 #define MCI_VCR_SET_SPEED __MSABI_LONG(0x00800000)
71 #define MCI_VCR_SET_TAPE_LENGTH __MSABI_LONG(0x01000000)
72 #define MCI_VCR_SET_COUNTER_VALUE __MSABI_LONG(0x02000000)
73 #define MCI_VCR_SET_CLOCK __MSABI_LONG(0x04000000)
74 #define MCI_VCR_SET_PAUSE_TIMEOUT __MSABI_LONG(0x08000000)
75 #define MCI_VCR_SET_PREROLL_DURATION __MSABI_LONG(0x10000000)
76 #define MCI_VCR_SET_POSTROLL_DURATION __MSABI_LONG(0x20000000)
77 
78 #define MCI_VCR_SETTIMECODE_RECORD __MSABI_LONG(0x00010000)
79 
80 #define MCI_VCR_STATUS_FRAME_RATE __MSABI_LONG(0x00004001)
81 #define MCI_VCR_STATUS_SPEED __MSABI_LONG(0x00004002)
82 #define MCI_VCR_STATUS_MEDIA_TYPE __MSABI_LONG(0x00004003)
83 #define MCI_VCR_STATUS_RECORD_FORMAT __MSABI_LONG(0x00004004)
84 #define MCI_VCR_STATUS_PLAY_FORMAT __MSABI_LONG(0x00004005)
85 #define MCI_VCR_STATUS_AUDIO_SOURCE __MSABI_LONG(0x00004006)
86 #define MCI_VCR_STATUS_AUDIO_SOURCE_NUMBER __MSABI_LONG(0x00004007)
87 #define MCI_VCR_STATUS_VIDEO_SOURCE __MSABI_LONG(0x00004008)
88 #define MCI_VCR_STATUS_VIDEO_SOURCE_NUMBER __MSABI_LONG(0x00004009)
89 #define MCI_VCR_STATUS_AUDIO_MONITOR __MSABI_LONG(0x0000400A)
90 #define MCI_VCR_STATUS_AUDIO_MONITOR_NUMBER __MSABI_LONG(0x0000400B)
91 #define MCI_VCR_STATUS_VIDEO_MONITOR __MSABI_LONG(0x0000400C)
92 #define MCI_VCR_STATUS_VIDEO_MONITOR_NUMBER __MSABI_LONG(0x0000400D)
93 #define MCI_VCR_STATUS_INDEX_ON __MSABI_LONG(0x0000400E)
94 #define MCI_VCR_STATUS_INDEX __MSABI_LONG(0x0000400F)
95 #define MCI_VCR_STATUS_COUNTER_FORMAT __MSABI_LONG(0x00004010)
96 #define MCI_VCR_STATUS_COUNTER_RESOLUTION __MSABI_LONG(0x00004011)
97 #define MCI_VCR_STATUS_TIMECODE_TYPE __MSABI_LONG(0x00004012)
98 #define MCI_VCR_STATUS_COUNTER_VALUE __MSABI_LONG(0x00004013)
99 #define MCI_VCR_STATUS_TUNER_CHANNEL __MSABI_LONG(0x00004014)
100 #define MCI_VCR_STATUS_WRITE_PROTECTED __MSABI_LONG(0x00004015)
101 #define MCI_VCR_STATUS_TIMECODE_RECORD __MSABI_LONG(0x00004016)
102 #define MCI_VCR_STATUS_VIDEO_RECORD __MSABI_LONG(0x00004017)
103 #define MCI_VCR_STATUS_AUDIO_RECORD __MSABI_LONG(0x00004018)
104 #define MCI_VCR_STATUS_TIME_TYPE __MSABI_LONG(0x00004019)
105 #define MCI_VCR_STATUS_TIME_MODE __MSABI_LONG(0x0000401A)
106 #define MCI_VCR_STATUS_POWER_ON __MSABI_LONG(0x0000401B)
107 #define MCI_VCR_STATUS_CLOCK __MSABI_LONG(0x0000401C)
108 #define MCI_VCR_STATUS_ASSEMBLE_RECORD __MSABI_LONG(0x0000401D)
109 #define MCI_VCR_STATUS_TIMECODE_PRESENT __MSABI_LONG(0x0000401E)
110 #define MCI_VCR_STATUS_NUMBER_OF_VIDEO_TRACKS __MSABI_LONG(0x0000401F)
111 #define MCI_VCR_STATUS_NUMBER_OF_AUDIO_TRACKS __MSABI_LONG(0x00004020)
112 #define MCI_VCR_STATUS_CLOCK_ID __MSABI_LONG(0x00004021)
113 #define MCI_VCR_STATUS_PAUSE_TIMEOUT __MSABI_LONG(0x00004022)
114 #define MCI_VCR_STATUS_PREROLL_DURATION __MSABI_LONG(0x00004023)
115 #define MCI_VCR_STATUS_POSTROLL_DURATION __MSABI_LONG(0x00004024)
116 #define MCI_VCR_STATUS_VIDEO __MSABI_LONG(0x00004025)
117 #define MCI_VCR_STATUS_AUDIO __MSABI_LONG(0x00004026)
118 
119 #define MCI_VCR_STATUS_NUMBER __MSABI_LONG(0x00080000)
120 
121 #define MCI_VCR_ESCAPE_STRING __MSABI_LONG(0x00000100)
122 
123 #define MCI_VCR_LIST_VIDEO_SOURCE __MSABI_LONG(0x00010000)
124 #define MCI_VCR_LIST_AUDIO_SOURCE __MSABI_LONG(0x00020000)
125 #define MCI_VCR_LIST_COUNT __MSABI_LONG(0x00040000)
126 #define MCI_VCR_LIST_NUMBER __MSABI_LONG(0x00080000)
127 
128 #define MCI_VCR_MARK_WRITE __MSABI_LONG(0x00010000)
129 #define MCI_VCR_MARK_ERASE __MSABI_LONG(0x00020000)
130 
131 #define MCI_VCR_SETAUDIO_RECORD __MSABI_LONG(0x00010000)
132 #define MCI_VCR_SETAUDIO_SOURCE __MSABI_LONG(0x00020000)
133 #define MCI_VCR_SETAUDIO_MONITOR __MSABI_LONG(0x00040000)
134 #define MCI_VCR_SETAUDIO_TO __MSABI_LONG(0x00200000)
135 #define MCI_VCR_SETAUDIO_NUMBER __MSABI_LONG(0x00400000)
136 
137 #define MCI_VCR_SETVIDEO_RECORD __MSABI_LONG(0x00010000)
138 #define MCI_VCR_SETVIDEO_SOURCE __MSABI_LONG(0x00020000)
139 #define MCI_VCR_SETVIDEO_MONITOR __MSABI_LONG(0x00040000)
140 #define MCI_VCR_SETVIDEO_TO __MSABI_LONG(0x00100000)
141 #define MCI_VCR_SETVIDEO_NUMBER __MSABI_LONG(0x00200000)
142 
143 #define SEND_VCRSIGNAL(dwFlags,dwCallback,hDriver,wDeviceID,dwUser,dwPos) DriverCallback((dwCallback),DCB_WINDOW,(HANDLE)(wDeviceID),MM_MCISIGNAL,hDriver,((dwFlags) & MCI_VCR_SIGNAL_POSITION) ? (dwPos):(dwUser),((dwFlags) & MCI_VCR_SIGNAL_POSITION) ? (dwUser):(dwPos))
144 
145 #define MM_MCISIGNAL 0x3CB
146 
147 #define MCI_VCR_SIGNAL_AT __MSABI_LONG(0x00010000)
148 #define MCI_VCR_SIGNAL_EVERY __MSABI_LONG(0x00020000)
149 #define MCI_VCR_SIGNAL_USERVAL __MSABI_LONG(0x00040000)
150 #define MCI_VCR_SIGNAL_CANCEL __MSABI_LONG(0x00080000)
151 #define MCI_VCR_SIGNAL_POSITION __MSABI_LONG(0x00100000)
152 
153 #define MCI_VCR_STEP_FRAMES __MSABI_LONG(0x00010000)
154 #define MCI_VCR_STEP_REVERSE __MSABI_LONG(0x00020000)
155 
156 #define MCI_VCR_FREEZE_INPUT __MSABI_LONG(0x00010000)
157 #define MCI_VCR_FREEZE_OUTPUT __MSABI_LONG(0x00020000)
158 #define MCI_VCR_FREEZE_FIELD __MSABI_LONG(0x00040000)
159 #define MCI_VCR_FREEZE_FRAME __MSABI_LONG(0x00080000)
160 
161 #define MCI_VCR_UNFREEZE_INPUT __MSABI_LONG(0x00010000)
162 #define MCI_VCR_UNFREEZE_OUTPUT __MSABI_LONG(0x00020000)
163 
164 #define MCI_VCR_MEDIA_8MM (MCI_VCR_OFFSET + 1)
165 #define MCI_VCR_MEDIA_HI8 (MCI_VCR_OFFSET + 2)
166 #define MCI_VCR_MEDIA_VHS (MCI_VCR_OFFSET + 3)
167 #define MCI_VCR_MEDIA_SVHS (MCI_VCR_OFFSET + 4)
168 #define MCI_VCR_MEDIA_BETA (MCI_VCR_OFFSET + 5)
169 #define MCI_VCR_MEDIA_EDBETA (MCI_VCR_OFFSET + 6)
170 #define MCI_VCR_MEDIA_OTHER (MCI_VCR_OFFSET + 7)
171 
172 #define MCI_VCR_FORMAT_SP (MCI_VCR_OFFSET + 8)
173 #define MCI_VCR_FORMAT_LP (MCI_VCR_OFFSET + 9)
174 #define MCI_VCR_FORMAT_EP (MCI_VCR_OFFSET + 10)
175 #define MCI_VCR_FORMAT_OTHER (MCI_VCR_OFFSET + 11)
176 
177 #define MCI_VCR_TIME_TIMECODE (MCI_VCR_OFFSET + 12)
178 #define MCI_VCR_TIME_COUNTER (MCI_VCR_OFFSET + 13)
179 #define MCI_VCR_TIME_DETECT (MCI_VCR_OFFSET + 14)
180 
181 #define MCI_VCR_SRC_TYPE_TUNER (MCI_VCR_OFFSET + 15)
182 #define MCI_VCR_SRC_TYPE_LINE (MCI_VCR_OFFSET + 16)
183 #define MCI_VCR_SRC_TYPE_SVIDEO (MCI_VCR_OFFSET + 17)
184 #define MCI_VCR_SRC_TYPE_RGB (MCI_VCR_OFFSET + 18)
185 #define MCI_VCR_SRC_TYPE_AUX (MCI_VCR_OFFSET + 19)
186 #define MCI_VCR_SRC_TYPE_GENERIC (MCI_VCR_OFFSET + 20)
187 #define MCI_VCR_SRC_TYPE_MUTE (MCI_VCR_OFFSET + 21)
188 #define MCI_VCR_SRC_TYPE_OUTPUT (MCI_VCR_OFFSET + 22)
189 
190 #define MCI_VCR_INDEX_TIMECODE (MCI_VCR_OFFSET + 23)
191 #define MCI_VCR_INDEX_COUNTER (MCI_VCR_OFFSET + 24)
192 #define MCI_VCR_INDEX_DATE (MCI_VCR_OFFSET + 25)
193 #define MCI_VCR_INDEX_TIME (MCI_VCR_OFFSET + 26)
194 
195 #define MCI_VCR_COUNTER_RES_SECONDS (MCI_VCR_OFFSET + 27)
196 #define MCI_VCR_COUNTER_RES_FRAMES (MCI_VCR_OFFSET + 28)
197 
198 #define MCI_VCR_TIMECODE_TYPE_SMPTE (MCI_VCR_OFFSET + 29)
199 #define MCI_VCR_TIMECODE_TYPE_SMPTE_DROP (MCI_VCR_OFFSET + 30)
200 #define MCI_VCR_TIMECODE_TYPE_OTHER (MCI_VCR_OFFSET + 31)
201 #define MCI_VCR_TIMECODE_TYPE_NONE (MCI_VCR_OFFSET + 32)
202 
203 #define MCI_VCR_PLUS (MCI_VCR_OFFSET + 33)
204 #define MCI_VCR_MINUS (MCI_VCR_OFFSET + 34)
205 #define MCI_VCR_RESET (MCI_VCR_OFFSET + 35)
206 
207 #ifndef RC_INVOKED
208 
209 typedef struct tagMCI_VCR_SEEK_PARMS {
210   DWORD dwCallback;
211   DWORD dwTo;
212   DWORD dwMark;
213   DWORD dwAt;
214 } MCI_VCR_SEEK_PARMS;
215 typedef MCI_VCR_SEEK_PARMS *LPMCI_VCR_SEEK_PARMS;
216 
217 typedef struct tagMCI_VCR_SET_PARMS {
218   DWORD dwCallback;
219   DWORD dwTimeFormat;
220   DWORD dwAudio;
221   DWORD dwTimeMode;
222   DWORD dwRecordFormat;
223   DWORD dwCounterFormat;
224   DWORD dwIndex;
225   DWORD dwTracking;
226   DWORD dwSpeed;
227   DWORD dwLength;
228   DWORD dwCounter;
229   DWORD dwClock;
230   DWORD dwPauseTimeout;
231   DWORD dwPrerollDuration;
232   DWORD dwPostrollDuration;
233 } MCI_VCR_SET_PARMS;
234 typedef MCI_VCR_SET_PARMS *LPMCI_VCR_SET_PARMS;
235 
236 typedef struct tagMCI_VCR_SETTUNER_PARMS {
237   DWORD dwCallback;
238   DWORD dwChannel;
239   DWORD dwNumber;
240 } MCI_VCR_SETTUNER_PARMS;
241 typedef MCI_VCR_SETTUNER_PARMS *LPMCI_VCR_SETTUNER_PARMS;
242 
243 typedef struct tagMCI_VCR_ESCAPE_PARMS {
244   DWORD dwCallback;
245   LPCSTR lpstrCommand;
246 } MCI_VCR_ESCAPE_PARMS;
247 typedef MCI_VCR_ESCAPE_PARMS *LPMCI_VCR_ESCAPE_PARMS;
248 
249 typedef struct tagMCI_VCR_LIST_PARMS {
250   DWORD dwCallback;
251   DWORD dwReturn;
252   DWORD dwNumber;
253 } MCI_VCR_LIST_PARMS;
254 typedef MCI_VCR_LIST_PARMS *LPMCI_VCR_LIST_PARMS;
255 
256 typedef struct tagMCI_VCR_RECORD_PARMS {
257   DWORD dwCallback;
258   DWORD dwFrom;
259   DWORD dwTo;
260   DWORD dwAt;
261 } MCI_VCR_RECORD_PARMS;
262 typedef MCI_VCR_RECORD_PARMS *LPMCI_VCR_RECORD_PARMS;
263 
264 typedef struct tagMCI_VCR_PLAY_PARMS {
265   DWORD dwCallback;
266   DWORD dwFrom;
267   DWORD dwTo;
268   DWORD dwAt;
269 } MCI_VCR_PLAY_PARMS;
270 typedef MCI_VCR_PLAY_PARMS *LPMCI_VCR_PLAY_PARMS;
271 
272 typedef struct tagMCI_VCR_SETAUDIO_PARMS {
273   DWORD dwCallback;
274   DWORD dwTrack;
275   DWORD dwTo;
276   DWORD dwNumber;
277 } MCI_VCR_SETAUDIO_PARMS;
278 typedef MCI_VCR_SETAUDIO_PARMS *LPMCI_VCR_SETAUDIO_PARMS;
279 
280 typedef struct tagMCI_VCR_SIGNAL_PARMS {
281   DWORD dwCallback;
282   DWORD dwPosition;
283   DWORD dwPeriod;
284   DWORD dwUserParm;
285 } MCI_VCR_SIGNAL_PARMS;
286 typedef MCI_VCR_SIGNAL_PARMS *LPMCI_VCR_SIGNAL_PARMS;
287 
288 typedef struct tagMCI_VCR_STATUS_PARMS {
289   DWORD dwCallback;
290   DWORD dwReturn;
291   DWORD dwItem;
292   DWORD dwTrack;
293   DWORD dwNumber;
294 } MCI_VCR_STATUS_PARMS;
295 typedef MCI_VCR_STATUS_PARMS *LPMCI_VCR_STATUS_PARMS;
296 
297 typedef struct tagMCI_VCR_SETVIDEO_PARMS {
298   DWORD dwCallback;
299   DWORD dwTrack;
300   DWORD dwTo;
301   DWORD dwNumber;
302 } MCI_VCR_SETVIDEO_PARMS;
303 typedef MCI_VCR_SETVIDEO_PARMS *LPMCI_VCR_SETVIDEO_PARMS;
304 
305 typedef struct tagMCI_VCR_STEP_PARMS {
306   DWORD dwCallback;
307   DWORD dwFrames;
308 } MCI_VCR_STEP_PARMS;
309 typedef MCI_VCR_STEP_PARMS *LPMCI_VCR_STEP_PARMS;
310 
311 typedef struct tagMCI_VCR_CUE_PARMS {
312   DWORD dwCallback;
313   DWORD dwFrom;
314   DWORD dwTo;
315 } MCI_VCR_CUE_PARMS;
316 typedef MCI_VCR_CUE_PARMS *LPMCI_VCR_CUE_PARMS;
317 #endif
318 
319 #define MCIERR_VCR_CANNOT_OPEN_COMM (MCIERR_CUSTOM_DRIVER_BASE + 1)
320 #define MCIERR_VCR_CANNOT_WRITE_COMM (MCIERR_CUSTOM_DRIVER_BASE + 2)
321 #define MCIERR_VCR_READ_TIMEOUT (MCIERR_CUSTOM_DRIVER_BASE + 3)
322 #define MCIERR_VCR_COMMAND_BUFFER_FULL (MCIERR_CUSTOM_DRIVER_BASE + 4)
323 #define MCIERR_VCR_COMMAND_CANCELLED (MCIERR_CUSTOM_DRIVER_BASE + 5)
324 #define MCIERR_VCR_POWER_OFF (MCIERR_CUSTOM_DRIVER_BASE + 6)
325 #define MCIERR_VCR_COMMAND_FAILED (MCIERR_CUSTOM_DRIVER_BASE + 7)
326 #define MCIERR_VCR_SEARCH (MCIERR_CUSTOM_DRIVER_BASE + 8)
327 #define MCIERR_VCR_CONDITION (MCIERR_CUSTOM_DRIVER_BASE + 9)
328 #define MCIERR_VCR_CAMERA_MODE (MCIERR_CUSTOM_DRIVER_BASE + 10)
329 #define MCIERR_VCR_VCR_MODE (MCIERR_CUSTOM_DRIVER_BASE + 11)
330 #define MCIERR_VCR_COUNTER_TYPE (MCIERR_CUSTOM_DRIVER_BASE + 12)
331 #define MCIERR_VCR_TUNER (MCIERR_CUSTOM_DRIVER_BASE + 13)
332 #define MCIERR_VCR_EMERGENCY_STOP (MCIERR_CUSTOM_DRIVER_BASE + 14)
333 #define MCIERR_VCR_MEDIA_UNMOUNTED (MCIERR_CUSTOM_DRIVER_BASE + 15)
334 #define MCIERR_VCR_REGISTER (MCIERR_CUSTOM_DRIVER_BASE + 16)
335 #define MCIERR_VCR_TRACK_FAILURE (MCIERR_CUSTOM_DRIVER_BASE + 17)
336 #define MCIERR_VCR_CUE_FAILED_FLAGS (MCIERR_CUSTOM_DRIVER_BASE + 18)
337 #define MCIERR_VCR_ISWRITEPROTECTED (MCIERR_CUSTOM_DRIVER_BASE + 19)
338 #endif
339