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
209typedef struct tagMCI_VCR_SEEK_PARMS {
210  DWORD dwCallback;
211  DWORD dwTo;
212  DWORD dwMark;
213  DWORD dwAt;
214} MCI_VCR_SEEK_PARMS;
215typedef MCI_VCR_SEEK_PARMS *LPMCI_VCR_SEEK_PARMS;
216
217typedef 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;
234typedef MCI_VCR_SET_PARMS *LPMCI_VCR_SET_PARMS;
235
236typedef struct tagMCI_VCR_SETTUNER_PARMS {
237  DWORD dwCallback;
238  DWORD dwChannel;
239  DWORD dwNumber;
240} MCI_VCR_SETTUNER_PARMS;
241typedef MCI_VCR_SETTUNER_PARMS *LPMCI_VCR_SETTUNER_PARMS;
242
243typedef struct tagMCI_VCR_ESCAPE_PARMS {
244  DWORD dwCallback;
245  LPCSTR lpstrCommand;
246} MCI_VCR_ESCAPE_PARMS;
247typedef MCI_VCR_ESCAPE_PARMS *LPMCI_VCR_ESCAPE_PARMS;
248
249typedef struct tagMCI_VCR_LIST_PARMS {
250  DWORD dwCallback;
251  DWORD dwReturn;
252  DWORD dwNumber;
253} MCI_VCR_LIST_PARMS;
254typedef MCI_VCR_LIST_PARMS *LPMCI_VCR_LIST_PARMS;
255
256typedef struct tagMCI_VCR_RECORD_PARMS {
257  DWORD dwCallback;
258  DWORD dwFrom;
259  DWORD dwTo;
260  DWORD dwAt;
261} MCI_VCR_RECORD_PARMS;
262typedef MCI_VCR_RECORD_PARMS *LPMCI_VCR_RECORD_PARMS;
263
264typedef struct tagMCI_VCR_PLAY_PARMS {
265  DWORD dwCallback;
266  DWORD dwFrom;
267  DWORD dwTo;
268  DWORD dwAt;
269} MCI_VCR_PLAY_PARMS;
270typedef MCI_VCR_PLAY_PARMS *LPMCI_VCR_PLAY_PARMS;
271
272typedef struct tagMCI_VCR_SETAUDIO_PARMS {
273  DWORD dwCallback;
274  DWORD dwTrack;
275  DWORD dwTo;
276  DWORD dwNumber;
277} MCI_VCR_SETAUDIO_PARMS;
278typedef MCI_VCR_SETAUDIO_PARMS *LPMCI_VCR_SETAUDIO_PARMS;
279
280typedef struct tagMCI_VCR_SIGNAL_PARMS {
281  DWORD dwCallback;
282  DWORD dwPosition;
283  DWORD dwPeriod;
284  DWORD dwUserParm;
285} MCI_VCR_SIGNAL_PARMS;
286typedef MCI_VCR_SIGNAL_PARMS *LPMCI_VCR_SIGNAL_PARMS;
287
288typedef 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;
295typedef MCI_VCR_STATUS_PARMS *LPMCI_VCR_STATUS_PARMS;
296
297typedef struct tagMCI_VCR_SETVIDEO_PARMS {
298  DWORD dwCallback;
299  DWORD dwTrack;
300  DWORD dwTo;
301  DWORD dwNumber;
302} MCI_VCR_SETVIDEO_PARMS;
303typedef MCI_VCR_SETVIDEO_PARMS *LPMCI_VCR_SETVIDEO_PARMS;
304
305typedef struct tagMCI_VCR_STEP_PARMS {
306  DWORD dwCallback;
307  DWORD dwFrames;
308} MCI_VCR_STEP_PARMS;
309typedef MCI_VCR_STEP_PARMS *LPMCI_VCR_STEP_PARMS;
310
311typedef struct tagMCI_VCR_CUE_PARMS {
312  DWORD dwCallback;
313  DWORD dwFrom;
314  DWORD dwTo;
315} MCI_VCR_CUE_PARMS;
316typedef 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