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