From efba9f8079def360b552aec7257e91173a95c699 Mon Sep 17 00:00:00 2001
From: Eric Pouech <Eric.Pouech@wanadoo.fr>
Date: Mon, 15 Mar 1999 15:40:27 +0000
Subject: [PATCH] Make use of digitalv.h file.

---
 include/digitalv.h  | 1002 +++++++++++++++++++++++++++++++++++++++++++
 multimedia/mciavi.c |  791 +++++++++++++++++++++++++++++++---
 2 files changed, 1741 insertions(+), 52 deletions(-)
 create mode 100644 include/digitalv.h

diff --git a/include/digitalv.h b/include/digitalv.h
new file mode 100644
index 00000000000..fb22bc8681f
--- /dev/null
+++ b/include/digitalv.h
@@ -0,0 +1,1002 @@
+/* -*- tab-width: 8; c-basic-offset: 4 -*- */
+
+/*
+ * Wine Digital Video extensions
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define MCI_TEST                            0x00000020L
+
+/* Message values */
+
+#define MCI_CAPTURE                         0x0870
+#define MCI_MONITOR                         0x0871
+#define MCI_RESERVE                         0x0872
+#define MCI_SETAUDIO                        0x0873
+#define MCI_SIGNAL                          0x0875
+#define MCI_SETVIDEO                        0x0876
+#define MCI_QUALITY                         0x0877
+#define MCI_LIST                            0x0878
+#define MCI_UNDO                            0x0879
+#define MCI_CONFIGURE                       0x087A
+#define MCI_RESTORE                         0x087B
+
+/* Return and string constant values */
+
+#define MCI_ON   1
+#define MCI_OFF  0
+
+#define MCI_DGV_FILE_MODE_SAVING            0x0001
+#define MCI_DGV_FILE_MODE_LOADING           0x0002
+#define MCI_DGV_FILE_MODE_EDITING           0x0003
+#define MCI_DGV_FILE_MODE_IDLE              0x0004
+
+/* These identifiers are used only by device drivers */
+
+#define MCI_ON_S                            0x00008000L
+#define MCI_OFF_S                           0x00008001L
+#define MCI_DGV_FILE_S                      0x00008002L
+#define MCI_DGV_INPUT_S                     0x00008003L
+
+#define MCI_DGV_FILE_MODE_SAVING_S          0x00008004L
+#define MCI_DGV_FILE_MODE_LOADING_S         0x00008005L
+#define MCI_DGV_FILE_MODE_EDITING_S         0x00008006L
+#define MCI_DGV_FILE_MODE_IDLE_S            0x00008007L
+
+#define MCI_DGV_SETVIDEO_SRC_NTSC_S         0x00008010L
+#define MCI_DGV_SETVIDEO_SRC_RGB_S          0x00008011L
+#define MCI_DGV_SETVIDEO_SRC_SVIDEO_S       0x00008012L
+#define MCI_DGV_SETVIDEO_SRC_PAL_S          0x00008013L
+#define MCI_DGV_SETVIDEO_SRC_SECAM_S        0x00008014L
+#define MCI_DGV_SETVIDEO_SRC_GENERIC_S      0x00008015L
+
+#define MCI_DGV_SETAUDIO_SRC_LEFT_S         0x00008020L
+#define MCI_DGV_SETAUDIO_SRC_RIGHT_S        0x00008021L
+#define MCI_DGV_SETAUDIO_SRC_AVERAGE_S      0x00008022L
+#define MCI_DGV_SETAUDIO_SRC_STEREO_S       0x00008023L
+
+/* Window message for signal notification */
+
+#ifndef MM_MCISIGNAL
+#define MM_MCISIGNAL                        0x3CB
+#endif
+
+/* error values */
+
+#define MCIERR_DGV_DEVICE_LIMIT             (MCIERR_CUSTOM_DRIVER_BASE+0)
+#define MCIERR_DGV_IOERR                    (MCIERR_CUSTOM_DRIVER_BASE+1)
+#define MCIERR_DGV_WORKSPACE_EMPTY          (MCIERR_CUSTOM_DRIVER_BASE+2)
+#define MCIERR_DGV_DISK_FULL                (MCIERR_CUSTOM_DRIVER_BASE+3)
+#define MCIERR_DGV_DEVICE_MEMORY_FULL       (MCIERR_CUSTOM_DRIVER_BASE+4)
+#define MCIERR_DGV_BAD_CLIPBOARD_RANGE      (MCIERR_CUSTOM_DRIVER_BASE+5)
+
+/* defines for monitor methods */
+
+#define MCI_DGV_METHOD_PRE                  0x0000a000L
+#define MCI_DGV_METHOD_POST                 0x0000a001L
+#define MCI_DGV_METHOD_DIRECT               0x0000a002L
+
+/* defines for known file formats */
+
+#define MCI_DGV_FF_AVSS                     0x00004000L
+#define MCI_DGV_FF_AVI                      0x00004001L
+#define MCI_DGV_FF_DIB                      0x00004002L
+#define MCI_DGV_FF_RDIB                     0x00004003L
+#define MCI_DGV_FF_JPEG                     0x00004004L
+#define MCI_DGV_FF_RJPEG                    0x00004005L
+#define MCI_DGV_FF_JFIF                     0x00004006L
+#define MCI_DGV_FF_MPEG                     0x00004007L
+
+/* values for dwItem field of MCI_CAPABILITY_PARMS structure */
+
+#define MCI_DGV_GETDEVCAPS_CAN_LOCK         0x00004000L
+#define MCI_DGV_GETDEVCAPS_CAN_STRETCH      0x00004001L
+#define MCI_DGV_GETDEVCAPS_CAN_FREEZE       0x00004002L
+#define MCI_DGV_GETDEVCAPS_MAX_WINDOWS      0x00004003L
+#define MCI_DGV_GETDEVCAPS_CAN_REVERSE      0x00004004L
+#define MCI_DGV_GETDEVCAPS_HAS_STILL        0x00004005L
+#define MCI_DGV_GETDEVCAPS_PALETTES         0x00004006L
+#define MCI_DGV_GETDEVCAPS_CAN_STR_IN       0x00004008L
+#define MCI_DGV_GETDEVCAPS_CAN_TEST         0x00004009L
+#define MCI_DGV_GETDEVCAPS_MAXIMUM_RATE     0x0000400aL
+#define MCI_DGV_GETDEVCAPS_MINIMUM_RATE     0x0000400bL
+
+/* flags for dwFlags parameter of MCI_CAPTURE command message */
+
+#define MCI_DGV_CAPTURE_AS                  0x00010000L
+#define MCI_DGV_CAPTURE_AT                  0x00020000L
+
+/* flags for dwFlags parameter of MCI_COPY command message */
+
+#define MCI_DGV_COPY_AT                     0x00010000L
+#define MCI_DGV_COPY_AUDIO_STREAM           0x00020000L
+#define MCI_DGV_COPY_VIDEO_STREAM           0x00040000L
+
+/* flags for dwFlags parameter of MCI_CUE command message */
+
+#define MCI_DGV_CUE_INPUT                   0x00010000L
+#define MCI_DGV_CUE_OUTPUT                  0x00020000L
+#define MCI_DGV_CUE_NOSHOW                  0x00040000L
+
+/* flags for dwFlags parameter of MCI_CUT command message */
+
+#define MCI_DGV_CUT_AT                      0x00010000L
+#define MCI_DGV_CUT_AUDIO_STREAM            0x00020000L
+#define MCI_DGV_CUT_VIDEO_STREAM            0x00040000L
+
+/* flags for dwFlags parameter of MCI_DELETE command message */
+
+#define MCI_DGV_DELETE_AT                   0x00010000L
+#define MCI_DGV_DELETE_AUDIO_STREAM         0x00020000L
+#define MCI_DGV_DELETE_VIDEO_STREAM         0x00040000L
+
+/* flags for dwFlags parameter of MCI_FREEZE command message */
+
+#define MCI_DGV_FREEZE_AT                   0x00010000L
+#define MCI_DGV_FREEZE_OUTSIDE              0x00020000L
+
+/* flags for dwFlags parameter of MCI_INFO command message */
+
+#define MCI_DGV_INFO_TEXT                   0x00010000L
+#define MCI_DGV_INFO_ITEM                   0X00020000L
+
+/* values for dwItem field of MCI_DGV_INFO_PARMS structure */
+
+#define MCI_INFO_VERSION                    0x00000400L
+
+#define MCI_DGV_INFO_USAGE                  0x00004000L
+#define MCI_DGV_INFO_AUDIO_QUALITY          0x00004001L
+#define MCI_DGV_INFO_STILL_QUALITY          0x00004002L
+#define MCI_DGV_INFO_VIDEO_QUALITY          0x00004003L
+#define MCI_DGV_INFO_AUDIO_ALG              0x00004004L
+#define MCI_DGV_INFO_STILL_ALG              0x00004005L
+#define MCI_DGV_INFO_VIDEO_ALG              0x00004006L
+
+/* flags for dwFlags parameter of MCI_LIST command message */
+
+#define MCI_DGV_LIST_ITEM                   0x00010000L
+#define MCI_DGV_LIST_COUNT                  0x00020000L
+#define MCI_DGV_LIST_NUMBER                 0x00040000L
+#define MCI_DGV_LIST_ALG                    0x00080000L
+
+/* values for dwItem field of MCI_DGV_LIST_PARMS structure */
+
+#define MCI_DGV_LIST_AUDIO_ALG              0x00004000L
+#define MCI_DGV_LIST_AUDIO_QUALITY          0x00004001L
+#define MCI_DGV_LIST_AUDIO_STREAM           0x00004002L
+#define MCI_DGV_LIST_STILL_ALG              0x00004003L
+#define MCI_DGV_LIST_STILL_QUALITY          0x00004004L
+#define MCI_DGV_LIST_VIDEO_ALG              0x00004005L
+#define MCI_DGV_LIST_VIDEO_QUALITY          0x00004006L
+#define MCI_DGV_LIST_VIDEO_STREAM           0x00004007L
+#define MCI_DGV_LIST_VIDEO_SOURCE           0x00004008L
+
+
+/* flags for dwFlags parameter of MCI_MONITOR command message */
+
+#define MCI_DGV_MONITOR_METHOD              0x00010000L
+#define MCI_DGV_MONITOR_SOURCE              0x00020000L
+
+/* values for dwSource parameter of the MCI_DGV_MONITOR_PARMS struture */
+
+#define MCI_DGV_MONITOR_INPUT               0x00004000L
+#define MCI_DGV_MONITOR_FILE                0x00004001L
+
+/* flags for dwFlags parameter of MCI_OPEN command message */
+
+#define MCI_DGV_OPEN_WS                     0x00010000L
+#define MCI_DGV_OPEN_PARENT                 0x00020000L
+#define MCI_DGV_OPEN_NOSTATIC               0x00040000L
+#define MCI_DGV_OPEN_16BIT                  0x00080000L
+#define MCI_DGV_OPEN_32BIT                  0x00100000L
+
+/* flags for dwFlags parameter of MCI_PASTE command message */
+
+#define MCI_DGV_PASTE_AT                    0x00010000L
+#define MCI_DGV_PASTE_AUDIO_STREAM          0x00020000L
+#define MCI_DGV_PASTE_VIDEO_STREAM          0x00040000L
+#define MCI_DGV_PASTE_INSERT                0x00080000L
+#define MCI_DGV_PASTE_OVERWRITE             0x00100000L
+
+/* flags for dwFlags parameter of MCI_PLAY command message */
+
+#define MCI_DGV_PLAY_REPEAT                 0x00010000L
+#define MCI_DGV_PLAY_REVERSE                0x00020000L
+
+/* flags for dwFlags parameter of MCI_PUT command message */
+
+#define MCI_DGV_RECT                        0x00010000L
+#define MCI_DGV_PUT_SOURCE                  0x00020000L
+#define MCI_DGV_PUT_DESTINATION             0x00040000L
+#define MCI_DGV_PUT_FRAME                   0x00080000L
+#define MCI_DGV_PUT_VIDEO                   0x00100000L
+#define MCI_DGV_PUT_WINDOW                  0x00200000L
+#define MCI_DGV_PUT_CLIENT                  0x00400000L
+
+/* flags for dwFlags parameter of MCI_QUALITY command message */
+
+#define MCI_QUALITY_ITEM                    0x00010000L
+#define MCI_QUALITY_NAME                    0x00020000L
+#define MCI_QUALITY_ALG                     0x00040000L
+#define MCI_QUALITY_DIALOG                  0x00080000L
+#define MCI_QUALITY_HANDLE                  0x00100000L
+
+/* values for dwItem field of MCI_QUALITY_PARMS structure */
+
+#define MCI_QUALITY_ITEM_AUDIO              0x00004000L
+#define MCI_QUALITY_ITEM_STILL              0x00004001L
+#define MCI_QUALITY_ITEM_VIDEO              0x00004002L
+
+/* flags for dwFlags parameter of MCI_REALIZE command message */
+
+#define MCI_DGV_REALIZE_NORM                0x00010000L
+#define MCI_DGV_REALIZE_BKGD                0x00020000L
+
+/* flags for dwFlags parameter of MCI_RECORD command message */
+
+#define MCI_DGV_RECORD_HOLD                 0x00020000L
+#define MCI_DGV_RECORD_AUDIO_STREAM         0x00040000L
+#define MCI_DGV_RECORD_VIDEO_STREAM         0x00080000L
+
+/* flags for dwFlags parameters of MCI_RESERVE command message */
+
+#define MCI_DGV_RESERVE_IN                  0x00010000L
+#define MCI_DGV_RESERVE_SIZE                0x00020000L
+
+/* flags for dwFlags parameter of MCI_RESTORE command message */
+
+#define MCI_DGV_RESTORE_FROM                0x00010000L
+#define MCI_DGV_RESTORE_AT                  0x00020000L
+
+/* flags for dwFlags parameters of MCI_SAVE command message */
+
+#define MCI_DGV_SAVE_ABORT                  0x00020000L
+#define MCI_DGV_SAVE_KEEPRESERVE            0x00040000L
+
+/* flags for dwFlags parameters of MCI_SET command message */
+
+#define MCI_DGV_SET_SEEK_EXACTLY            0x00010000L
+#define MCI_DGV_SET_SPEED                   0x00020000L
+#define MCI_DGV_SET_STILL                   0x00040000L
+#define MCI_DGV_SET_FILEFORMAT              0x00080000L
+
+/* flags for the dwFlags parameter of MCI_SETAUDIO command message */
+
+#define MCI_DGV_SETAUDIO_OVER               0x00010000L
+#define MCI_DGV_SETAUDIO_CLOCKTIME          0x00020000L
+#define MCI_DGV_SETAUDIO_ALG                0x00040000L
+#define MCI_DGV_SETAUDIO_QUALITY            0x00080000L
+#define MCI_DGV_SETAUDIO_RECORD             0x00100000L
+#define MCI_DGV_SETAUDIO_LEFT               0x00200000L
+#define MCI_DGV_SETAUDIO_RIGHT              0x00400000L
+#define MCI_DGV_SETAUDIO_ITEM               0x00800000L
+#define MCI_DGV_SETAUDIO_VALUE              0x01000000L
+#define MCI_DGV_SETAUDIO_INPUT              0x02000000L
+#define MCI_DGV_SETAUDIO_OUTPUT             0x04000000L
+
+/* values for the dwItem parameter of MCI_DGV_SETAUDIO_PARMS */
+
+#define MCI_DGV_SETAUDIO_TREBLE             0x00004000L
+#define MCI_DGV_SETAUDIO_BASS               0x00004001L
+#define MCI_DGV_SETAUDIO_VOLUME             0x00004002L
+#define MCI_DGV_SETAUDIO_STREAM             0x00004003L
+#define MCI_DGV_SETAUDIO_SOURCE             0x00004004L
+#define MCI_DGV_SETAUDIO_SAMPLESPERSEC      0x00004005L
+#define MCI_DGV_SETAUDIO_AVGBYTESPERSEC     0x00004006L
+#define MCI_DGV_SETAUDIO_BLOCKALIGN         0x00004007L
+#define MCI_DGV_SETAUDIO_BITSPERSAMPLE      0x00004008L
+
+/* values for the dwValue parameter of MCI_DGV_SETAUDIO_PARMS
+   used with MCI_DGV_SETAUDIO_SOURCE */
+
+#define MCI_DGV_SETAUDIO_SOURCE_STEREO      0x00000000L
+#define MCI_DGV_SETAUDIO_SOURCE_LEFT        0x00000001L
+#define MCI_DGV_SETAUDIO_SOURCE_RIGHT       0x00000002L
+#define MCI_DGV_SETAUDIO_SOURCE_AVERAGE     0x00004000L
+
+/* flags for the dwFlags parameter of MCI_SETVIDEO command */
+
+#define MCI_DGV_SETVIDEO_QUALITY            0x00010000L
+#define MCI_DGV_SETVIDEO_ALG                0x00020000L
+#define MCI_DGV_SETVIDEO_CLOCKTIME          0x00040000L
+#define MCI_DGV_SETVIDEO_SRC_NUMBER         0x00080000L
+#define MCI_DGV_SETVIDEO_ITEM               0x00100000L
+#define MCI_DGV_SETVIDEO_OVER               0x00200000L
+#define MCI_DGV_SETVIDEO_RECORD             0x00400000L
+#define MCI_DGV_SETVIDEO_STILL              0x00800000L
+#define MCI_DGV_SETVIDEO_VALUE              0x01000000L
+#define MCI_DGV_SETVIDEO_INPUT              0x02000000L
+#define MCI_DGV_SETVIDEO_OUTPUT             0x04000000L
+
+/* values for the dwTo field of MCI_SETVIDEO_PARMS
+   used with MCI_DGV_SETVIDEO_SOURCE */
+
+#define MCI_DGV_SETVIDEO_SRC_NTSC           0x00004000L
+#define MCI_DGV_SETVIDEO_SRC_RGB            0x00004001L
+#define MCI_DGV_SETVIDEO_SRC_SVIDEO         0x00004002L
+#define MCI_DGV_SETVIDEO_SRC_PAL            0x00004003L
+#define MCI_DGV_SETVIDEO_SRC_SECAM          0x00004004L
+#define MCI_DGV_SETVIDEO_SRC_GENERIC        0x00004005L
+
+/* values for the dwItem field of MCI_SETVIDEO_PARMS */
+
+#define MCI_DGV_SETVIDEO_BRIGHTNESS         0x00004000L
+#define MCI_DGV_SETVIDEO_COLOR              0x00004001L
+#define MCI_DGV_SETVIDEO_CONTRAST           0x00004002L
+#define MCI_DGV_SETVIDEO_TINT               0x00004003L
+#define MCI_DGV_SETVIDEO_SHARPNESS          0x00004004L
+#define MCI_DGV_SETVIDEO_GAMMA              0x00004005L
+#define MCI_DGV_SETVIDEO_STREAM             0x00004006L
+#define MCI_DGV_SETVIDEO_PALHANDLE          0x00004007L
+#define MCI_DGV_SETVIDEO_FRAME_RATE         0x00004008L
+#define MCI_DGV_SETVIDEO_SOURCE             0x00004009L
+#define MCI_DGV_SETVIDEO_KEY_INDEX          0x0000400aL
+#define MCI_DGV_SETVIDEO_KEY_COLOR          0x0000400bL
+#define MCI_DGV_SETVIDEO_BITSPERPEL         0x0000400cL
+
+/* flags for the dwFlags parameter of MCI_SIGNAL */
+
+#define MCI_DGV_SIGNAL_AT                   0x00010000L
+#define MCI_DGV_SIGNAL_EVERY                0x00020000L
+#define MCI_DGV_SIGNAL_USERVAL              0x00040000L
+#define MCI_DGV_SIGNAL_CANCEL               0x00080000L
+#define MCI_DGV_SIGNAL_POSITION             0x00100000L
+
+/* flags for the dwFlags parameter of MCI_STATUS command */
+
+#define MCI_DGV_STATUS_NOMINAL              0x00020000L
+#define MCI_DGV_STATUS_REFERENCE            0x00040000L
+#define MCI_DGV_STATUS_LEFT                 0x00080000L
+#define MCI_DGV_STATUS_RIGHT                0x00100000L
+#define MCI_DGV_STATUS_DISKSPACE            0x00200000L
+#define MCI_DGV_STATUS_INPUT                0x00400000L
+#define MCI_DGV_STATUS_OUTPUT               0x00800000L
+#define MCI_DGV_STATUS_RECORD               0x01000000L
+
+/* values for dwItem field of MCI_STATUS_PARMS structure */
+
+#define MCI_DGV_STATUS_AUDIO_INPUT          0x00004000L
+#define MCI_DGV_STATUS_HWND                 0x00004001L
+#define MCI_DGV_STATUS_SPEED                0x00004003L
+#define MCI_DGV_STATUS_HPAL                 0x00004004L
+#define MCI_DGV_STATUS_BRIGHTNESS           0x00004005L
+#define MCI_DGV_STATUS_COLOR                0x00004006L
+#define MCI_DGV_STATUS_CONTRAST             0x00004007L
+#define MCI_DGV_STATUS_FILEFORMAT           0x00004008L
+#define MCI_DGV_STATUS_AUDIO_SOURCE         0x00004009L
+#define MCI_DGV_STATUS_GAMMA                0x0000400aL
+#define MCI_DGV_STATUS_MONITOR              0x0000400bL
+#define MCI_DGV_STATUS_MONITOR_METHOD       0x0000400cL
+#define MCI_DGV_STATUS_FRAME_RATE           0x0000400eL
+#define MCI_DGV_STATUS_BASS                 0x0000400fL
+#define MCI_DGV_STATUS_SIZE                 0x00004010L
+#define MCI_DGV_STATUS_SEEK_EXACTLY         0x00004011L
+#define MCI_DGV_STATUS_SHARPNESS            0x00004012L
+#define MCI_DGV_STATUS_SMPTE                0x00004013L
+#define MCI_DGV_STATUS_AUDIO                0x00004014L
+#define MCI_DGV_STATUS_TINT                 0x00004015L
+#define MCI_DGV_STATUS_TREBLE               0x00004016L
+#define MCI_DGV_STATUS_UNSAVED              0x00004017L
+#define MCI_DGV_STATUS_VIDEO                0x00004018L
+#define MCI_DGV_STATUS_VOLUME               0x00004019L
+#define MCI_DGV_STATUS_AUDIO_RECORD         0x0000401aL
+#define MCI_DGV_STATUS_VIDEO_SOURCE         0x0000401bL
+#define MCI_DGV_STATUS_VIDEO_RECORD         0x0000401cL
+#define MCI_DGV_STATUS_STILL_FILEFORMAT     0x0000401dL
+#define MCI_DGV_STATUS_VIDEO_SRC_NUM        0x0000401eL
+#define MCI_DGV_STATUS_FILE_MODE            0x0000401fL
+#define MCI_DGV_STATUS_FILE_COMPLETION      0x00004020L
+#define MCI_DGV_STATUS_WINDOW_VISIBLE       0x00004021L
+#define MCI_DGV_STATUS_WINDOW_MINIMIZED     0x00004022L
+#define MCI_DGV_STATUS_WINDOW_MAXIMIZED     0x00004023L
+#define MCI_DGV_STATUS_KEY_INDEX            0x00004024L
+#define MCI_DGV_STATUS_KEY_COLOR            0x00004025L
+#define MCI_DGV_STATUS_PAUSE_MODE           0x00004026L
+#define MCI_DGV_STATUS_SAMPLESPERSEC        0x00004027L
+#define MCI_DGV_STATUS_AVGBYTESPERSEC       0x00004028L
+#define MCI_DGV_STATUS_BLOCKALIGN           0x00004029L
+#define MCI_DGV_STATUS_BITSPERSAMPLE        0x0000402aL
+#define MCI_DGV_STATUS_BITSPERPEL           0x0000402bL
+#define MCI_DGV_STATUS_FORWARD              0x0000402cL
+#define MCI_DGV_STATUS_AUDIO_STREAM         0x0000402dL
+#define MCI_DGV_STATUS_VIDEO_STREAM         0x0000402eL
+
+/* flags for dwFlags parameter of MCI_STEP command message */
+
+#define MCI_DGV_STEP_REVERSE                0x00010000L
+#define MCI_DGV_STEP_FRAMES                 0x00020000L
+
+/* flags for dwFlags parameter of MCI_STOP command message */
+
+#define MCI_DGV_STOP_HOLD                   0x00010000L
+
+/* flags for dwFlags parameter of MCI_UPDATE command message */
+
+#define MCI_DGV_UPDATE_HDC                  0x00020000L
+#define MCI_DGV_UPDATE_PAINT                0x00040000L
+
+/* flags for dwFlags parameter of MCI_WHERE command message */
+
+#define MCI_DGV_WHERE_SOURCE                0x00020000L
+#define MCI_DGV_WHERE_DESTINATION           0x00040000L
+#define MCI_DGV_WHERE_FRAME                 0x00080000L
+#define MCI_DGV_WHERE_VIDEO                 0x00100000L
+#define MCI_DGV_WHERE_WINDOW                0x00200000L
+#define MCI_DGV_WHERE_MAX                   0x00400000L
+
+/* flags for dwFlags parameter of MCI_WINDOW command message */
+
+#define MCI_DGV_WINDOW_HWND                 0x00010000L
+#define MCI_DGV_WINDOW_STATE                0x00040000L
+#define MCI_DGV_WINDOW_TEXT                 0x00080000L
+
+/* flags for hWnd parameter of MCI_DGV_WINDOW_PARMS parameter block */
+
+#define MCI_DGV_WINDOW_DEFAULT              0x00000000L
+
+/* parameter block for MCI_WHERE, MCI_PUT, MCI_FREEZE, MCI_UNFREEZE cmds */
+
+typedef struct {
+    DWORD   dwCallback;
+    RECT16  rc;
+} MCI_DGV_RECT_PARMS16, *LPMCI_DGV_RECT_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    RECT    rc;
+} MCI_DGV_RECT_PARMS, *LPMCI_DGV_RECT_PARMS;
+
+/* parameter block for MCI_CAPTURE command message */
+
+typedef struct {
+    DWORD   dwCallback;
+    LPSTR   lpstrFileName;
+    RECT16  rc;
+} MCI_DGV_CAPTURE_PARMS16, *LPMCI_DGV_CAPTURE_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    LPSTR   lpstrFileName;
+    RECT    rc;
+} MCI_DGV_CAPTURE_PARMSA, *LPMCI_DGV_CAPTURE_PARMSA;
+
+typedef struct {
+    DWORD   dwCallback;
+    LPWSTR  lpstrFileName;
+    RECT    rc;
+} MCI_DGV_CAPTURE_PARMSW, *LPMCI_DGV_CAPTURE_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_DGV_CAPTURE_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_DGV_CAPTURE_PARMS)
+
+/* parameter block for MCI_CLOSE command message */
+
+typedef MCI_GENERIC_PARMS MCI_CLOSE_PARMS, *LPMCI_CLOSE_PARMS;
+
+/* parameter block for MCI_COPY command message */
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwFrom;
+    DWORD   dwTo;
+    RECT16  rc;
+    DWORD   dwAudioStream;
+    DWORD   dwVideoStream;
+} MCI_DGV_COPY_PARMS16, *LPMCI_DGV_COPY_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwFrom;
+    DWORD   dwTo;
+    RECT    rc;
+    DWORD   dwAudioStream;
+    DWORD   dwVideoStream;
+} MCI_DGV_COPY_PARMS, *LPMCI_DGV_COPY_PARMS;
+
+/* parameter block for MCI_CUE command message */
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwTo;
+} MCI_DGV_CUE_PARMS, *LPMCI_DGV_CUE_PARMS;
+
+/* parameter block for MCI_CUT command message */
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwFrom;
+    DWORD   dwTo;
+    RECT16  rc;
+    DWORD   dwAudioStream;
+    DWORD   dwVideoStream;
+} MCI_DGV_CUT_PARMS16, * LPMCI_DGV_CUT_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwFrom;
+    DWORD   dwTo;
+    RECT    rc;
+    DWORD   dwAudioStream;
+    DWORD   dwVideoStream;
+} MCI_DGV_CUT_PARMS, * LPMCI_DGV_CUT_PARMS;
+
+/* parameter block for MCI_DELETE command message */
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwFrom;
+    DWORD   dwTo;
+    RECT16  rc;
+    DWORD   dwAudioStream;
+    DWORD   dwVideoStream;
+} MCI_DGV_DELETE_PARMS16, * LPMCI_DGV_DELETE_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwFrom;
+    DWORD   dwTo;
+    RECT    rc;
+    DWORD   dwAudioStream;
+    DWORD   dwVideoStream;
+} MCI_DGV_DELETE_PARMS, * LPMCI_DGV_DELETE_PARMS;
+
+/* parameter block for MCI_FREEZE command message */
+
+typedef MCI_DGV_RECT_PARMS16 MCI_DGV_FREEZE_PARMS16, * LPMCI_DGV_FREEZE_PARMS16;
+typedef MCI_DGV_RECT_PARMS MCI_DGV_FREEZE_PARMS, * LPMCI_DGV_FREEZE_PARMS;
+
+/* parameter block for MCI_INFO command message */
+
+typedef struct  {
+    DWORD   dwCallback;
+    LPSTR   lpstrReturn;
+    DWORD   dwRetSize;
+    DWORD   dwItem;
+} MCI_DGV_INFO_PARMS16, * LPMCI_DGV_INFO_PARMS16;
+
+typedef struct  {
+    DWORD   dwCallback;
+    LPSTR   lpstrReturn;
+    DWORD   dwRetSize;
+    DWORD   dwItem;
+} MCI_DGV_INFO_PARMSA, * LPMCI_DGV_INFO_PARMSA;
+
+typedef struct  {
+    DWORD   dwCallback;
+    LPWSTR  lpstrReturn;
+    DWORD   dwRetSize;
+    DWORD   dwItem;
+} MCI_DGV_INFO_PARMSW, *LPMCI_DGV_INFO_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_DGV_INFO_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_DGV_INFO_PARMS)
+
+/* parameter block for MCI_LIST command message */
+
+typedef struct {
+    DWORD   dwCallback;
+    LPSTR   lpstrReturn;
+    DWORD   dwLength;
+    DWORD   dwNumber;
+    DWORD   dwItem;
+    LPSTR   lpstrAlgorithm;
+} MCI_DGV_LIST_PARMS16, *LPMCI_DGV_LIST_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    LPSTR   lpstrReturn;
+    DWORD   dwLength;
+    DWORD   dwNumber;
+    DWORD   dwItem;
+    LPSTR   lpstrAlgorithm;
+} MCI_DGV_LIST_PARMSA, *LPMCI_DGV_LIST_PARMSA;
+
+typedef struct {
+    DWORD   dwCallback;
+    LPWSTR  lpstrReturn;
+    DWORD   dwLength;
+    DWORD   dwNumber;
+    DWORD   dwItem;
+    LPWSTR  lpstrAlgorithm;
+} MCI_DGV_LIST_PARMSW, *LPMCI_DGV_LIST_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_DGV_LIST_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_DGV_LIST_PARMS)
+
+/* parameter block for MCI_LOAD command message */
+
+typedef MCI_LOAD_PARMS16  MCI_DGV_LOAD_PARMS16 , * LPMCI_DGV_LOAD_PARMS16;
+typedef MCI_LOAD_PARMSA MCI_DGV_LOAD_PARMSA, * LPMCI_DGV_LOAD_PARMSA;
+typedef MCI_LOAD_PARMSW MCI_DGV_LOAD_PARMSW, * LPMCI_DGV_LOAD_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_DGV_LOAD_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_DGV_LOAD_PARMS)
+
+/* parameter block for MCI_MONITOR command message */
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwSource;
+    DWORD   dwMethod;
+} MCI_DGV_MONITOR_PARMS, * LPMCI_DGV_MONITOR_PARMS;
+
+/* parameter block for MCI_OPEN command message */
+
+typedef struct {
+    DWORD   dwCallback;
+    UINT16  wDeviceID;
+    UINT16  wReserved0;
+    LPSTR   lpstrDeviceType;
+    LPSTR   lpstrElementName;
+    LPSTR   lpstrAlias;
+    DWORD   dwStyle;
+    HWND16  hWndParent;
+    UINT16  wReserved1;
+} MCI_DGV_OPEN_PARMS16, *LPMCI_DGV_OPEN_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    UINT    wDeviceID;
+    LPSTR   lpstrDeviceType;
+    LPSTR   lpstrElementName;
+    LPSTR   lpstrAlias;
+    DWORD   dwStyle;
+    HWND  hWndParent;
+} MCI_DGV_OPEN_PARMSA, *LPMCI_DGV_OPEN_PARMSA;
+
+typedef struct {
+    DWORD   dwCallback;
+    UINT    wDeviceID;
+    LPWSTR  lpstrDeviceType;
+    LPWSTR  lpstrElementName;
+    LPWSTR  lpstrAlias;
+    DWORD   dwStyle;
+    HWND  hWndParent;
+} MCI_DGV_OPEN_PARMSW, *LPMCI_DGV_OPEN_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_DGV_OPEN_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_DGV_OPEN_PARMS)
+
+/* parameter block for MCI_PAUSE command message */
+
+typedef MCI_GENERIC_PARMS MCI_DGV_PAUSE_PARMS, * LPMCI_DGV_PAUSE_PARMS;
+
+/* parameter block for MCI_PASTE command message */
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwTo;
+    RECT16  rc;
+    DWORD   dwAudioStream;
+    DWORD   dwVideoStream;
+} MCI_DGV_PASTE_PARMS16, * LPMCI_DGV_PASTE_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwTo;
+    RECT    rc;
+    DWORD   dwAudioStream;
+    DWORD   dwVideoStream;
+} MCI_DGV_PASTE_PARMS, * LPMCI_DGV_PASTE_PARMS;
+
+/* parameter block for MCI_PLAY command message */
+
+typedef MCI_PLAY_PARMS MCI_DGV_PLAY_PARMS, * LPMCI_DGV_PLAY_PARMS;
+
+/* parameter block for MCI_PUT command message */
+
+typedef MCI_DGV_RECT_PARMS16 MCI_DGV_PUT_PARMS16, * LPMCI_DGV_PUT_PARMS16;
+typedef MCI_DGV_RECT_PARMS MCI_DGV_PUT_PARMS, * LPMCI_DGV_PUT_PARMS;
+
+/* parameter block for MCI_QUALITY command message */
+
+typedef struct {
+    DWORD       dwCallback;
+    DWORD       dwItem;
+    LPSTR       lpstrName;
+    DWORD       lpstrAlgorithm;
+    DWORD       dwHandle;
+} MCI_DGV_QUALITY_PARMS16, *LPMCI_DGV_QUALITY_PARMS16;
+
+typedef struct {
+    DWORD       dwCallback;
+    DWORD       dwItem;
+    LPSTR       lpstrName;
+    DWORD       lpstrAlgorithm;
+    DWORD       dwHandle;
+} MCI_DGV_QUALITY_PARMSA, *LPMCI_DGV_QUALITY_PARMSA;
+
+typedef struct {
+    DWORD       dwCallback;
+    DWORD       dwItem;
+    LPWSTR      lpstrName;
+    DWORD       lpstrAlgorithm;
+    DWORD       dwHandle;
+} MCI_DGV_QUALITY_PARMSW, *LPMCI_DGV_QUALITY_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_DGV_QUALITY_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_DGV_QUALITY_PARMS)
+
+/* parameter block for MCI_REALIZE command message */
+
+typedef MCI_GENERIC_PARMS MCI_REALIZE_PARMS, * LPMCI_REALIZE_PARMS;
+
+/* parameter block for MCI_RECORD command message */
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwFrom;
+    DWORD   dwTo;
+    RECT16  rc;
+    DWORD   dwAudioStream;
+    DWORD   dwVideoStream;
+} MCI_DGV_RECORD_PARMS16, * LPMCI_DGV_RECORD_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwFrom;
+    DWORD   dwTo;
+    RECT    rc;
+    DWORD   dwAudioStream;
+    DWORD   dwVideoStream;
+} MCI_DGV_RECORD_PARMS, * LPMCI_DGV_RECORD_PARMS;
+
+/* parameter block for MCI_RESERVE command message */
+
+typedef struct {
+    DWORD   dwCallback;
+    LPSTR   lpstrPath;
+    DWORD   dwSize;
+} MCI_DGV_RESERVE_PARMS16, *LPMCI_DGV_RESERVE_PARMS16A;
+
+typedef struct {
+    DWORD   dwCallback;
+    LPSTR   lpstrPath;
+    DWORD   dwSize;
+} MCI_DGV_RESERVE_PARMSA, *LPMCI_DGV_RESERVE_PARMSA;
+
+typedef struct {
+    DWORD   dwCallback;
+    LPWSTR  lpstrPath;
+    DWORD   dwSize;
+} MCI_DGV_RESERVE_PARMSW, *LPMCI_DGV_RESERVE_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_DGV_RESERVE_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_DGV_RESERVE_PARMS)
+
+/* parameter block for MCI_RESTORE command message */
+
+typedef struct {
+    DWORD   dwCallback;
+    LPSTR   lpstrFileName;
+    RECT16  rc;
+} MCI_DGV_RESTORE_PARMS16, *LPMCI_DGV_RESTORE_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    LPSTR   lpstrFileName;
+    RECT    rc;
+} MCI_DGV_RESTORE_PARMSA, *LPMCI_DGV_RESTORE_PARMSA;
+
+typedef struct {
+    DWORD   dwCallback;
+    LPWSTR  lpstrFileName;
+    RECT    rc;
+} MCI_DGV_RESTORE_PARMSW, *LPMCI_DGV_RESTORE_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_DGV_RESTORE_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_DGV_RESTORE_PARMS)
+
+/* parameter block for MCI_RESUME command message */
+
+typedef MCI_GENERIC_PARMS MCI_DGV_RESUME_PARMS, * LPMCI_DGV_RESUME_PARMS;
+
+/* parameter block for MCI_SAVE command message */
+
+typedef struct {
+    DWORD   dwCallback;
+    LPSTR   lpstrFileName;
+    RECT16  rc;
+} MCI_DGV_SAVE_PARMS16, *LPMCI_DGV_SAVE_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    LPSTR   lpstrFileName;
+    RECT    rc;
+} MCI_DGV_SAVE_PARMSA, *LPMCI_DGV_SAVE_PARMSA;
+
+typedef struct {
+    DWORD   dwCallback;
+    LPWSTR  lpstrFileName;
+    RECT    rc;
+} MCI_DGV_SAVE_PARMSW, *LPMCI_DGV_SAVE_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_DGV_SAVE_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_DGV_SAVE_PARMS)
+
+/* parameter block for MCI_SET command message */
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwTimeFormat;
+    DWORD   dwAudio;
+    DWORD   dwFileFormat;
+    DWORD   dwSpeed;
+} MCI_DGV_SET_PARMS, *LPMCI_DGV_SET_PARMS;
+
+/* parameter block for MCI_SETAUDIO command message */
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwItem;
+    DWORD   dwValue;
+    DWORD   dwOver;
+    LPSTR   lpstrAlgorithm;
+    LPSTR   lpstrQuality;
+} MCI_DGV_SETAUDIO_PARMS16, *LPMCI_DGV_SETAUDIO_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwItem;
+    DWORD   dwValue;
+    DWORD   dwOver;
+    LPSTR   lpstrAlgorithm;
+    LPSTR   lpstrQuality;
+} MCI_DGV_SETAUDIO_PARMSA, *LPMCI_DGV_SETAUDIO_PARMSA;
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwItem;
+    DWORD   dwValue;
+    DWORD   dwOver;
+    LPWSTR  lpstrAlgorithm;
+    LPWSTR  lpstrQuality;
+} MCI_DGV_SETAUDIO_PARMSW, *LPMCI_DGV_SETAUDIO_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_DGV_SETAUDIO_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_DGV_SETAUDIO_PARMS)
+
+/* parameter block for MCI_SIGNAL command message */
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwPosition;
+    DWORD   dwPeriod;
+    DWORD   dwUserParm;
+} MCI_DGV_SIGNAL_PARMS, * LPMCI_DGV_SIGNAL_PARMS;
+
+/* parameter block for MCI_SETVIDEO command message */
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwItem;
+    DWORD   dwValue;
+    DWORD   dwOver;
+    LPSTR   lpstrAlgorithm;
+    LPSTR   lpstrQuality;
+    DWORD   dwSourceNumber;
+} MCI_DGV_SETVIDEO_PARMS16, *LPMCI_DGV_SETVIDEO_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwItem;
+    DWORD   dwValue;
+    DWORD   dwOver;
+    LPSTR   lpstrAlgorithm;
+    LPSTR   lpstrQuality;
+    DWORD   dwSourceNumber;
+} MCI_DGV_SETVIDEO_PARMSA, *LPMCI_DGV_SETVIDEO_PARMSA;
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwItem;
+    DWORD   dwValue;
+    DWORD   dwOver;
+    LPWSTR  lpstrAlgorithm;
+    LPWSTR  lpstrQuality;
+    DWORD   dwSourceNumber;
+} MCI_DGV_SETVIDEO_PARMSW, *LPMCI_DGV_SETVIDEO_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_DGV_SETVIDEO_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_DGV_SETVIDEO_PARMS)
+
+/* parameter block for MCI_STATUS command message */
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwReturn;
+    DWORD   dwItem;
+    DWORD   dwTrack;
+    LPSTR   lpstrDrive;
+    DWORD   dwReference;
+} MCI_DGV_STATUS_PARMS16, *LPMCI_DGV_STATUS_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwReturn;
+    DWORD   dwItem;
+    DWORD   dwTrack;
+    LPSTR   lpstrDrive;
+    DWORD   dwReference;
+} MCI_DGV_STATUS_PARMSA, *LPMCI_DGV_STATUS_PARMSA;
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwReturn;
+    DWORD   dwItem;
+    DWORD   dwTrack;
+    LPWSTR  lpstrDrive;
+    DWORD   dwReference;
+} MCI_DGV_STATUS_PARMSW, *LPMCI_DGV_STATUS_PARMSW;
+
+DECL_WINELIB_TYPE_AW(MCI_DGV_STATUS_PARMS)
+DECL_WINELIB_TYPE_AW(LPMCI_DGV_STATUS_PARMS)
+
+/* parameter block for MCI_STEP command message */
+
+typedef struct {
+    DWORD   dwCallback;
+    DWORD   dwFrames;
+} MCI_DGV_STEP_PARMS, *LPMCI_DGV_STEP_PARMS;
+
+/* parameter block for MCI_STOP command message */
+
+typedef MCI_GENERIC_PARMS MCI_DGV_STOP_PARMS, * LPMCI_DGV_STOP_PARMS;
+
+/* parameter block for MCI_UNFREEZE command message */
+
+typedef MCI_DGV_RECT_PARMS16 MCI_DGV_UNFREEZE_PARMS16, * LPMCI_DGV_UNFREEZE_PARMS16;
+typedef MCI_DGV_RECT_PARMS MCI_DGV_UNFREEZE_PARMS, * LPMCI_DGV_UNFREEZE_PARMS;
+
+/* parameter block for MCI_UPDATE command message */
+
+typedef struct {
+    DWORD   dwCallback;
+    RECT16  rc;
+    HDC16   hDC;
+    UINT16  wReserved0;
+} MCI_DGV_UPDATE_PARMS16, * LPMCI_DGV_UPDATE_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    RECT    rc;
+    HDC     hDC;
+} MCI_DGV_UPDATE_PARMS, * LPMCI_DGV_UPDATE_PARMS;
+
+/* parameter block for MCI_WHERE command message */
+
+typedef MCI_DGV_RECT_PARMS16 MCI_DGV_WHERE_PARMS16, * LPMCI_DGV_WHERE_PARMS16;
+typedef MCI_DGV_RECT_PARMS MCI_DGV_WHERE_PARMS, * LPMCI_DGV_WHERE_PARMS;
+
+/* parameter block for MCI_WINDOW command message */
+
+typedef struct {
+    DWORD   dwCallback;
+    HWND16  hWnd;
+    UINT16  wReserved1;
+    UINT16  nCmdShow;
+    UINT16  wReserved2;
+    LPSTR   lpstrText;
+} MCI_DGV_WINDOW_PARMS16, *LPMCI_DGV_WINDOW_PARMS16;
+
+typedef struct {
+    DWORD   dwCallback;
+    HWND    hWnd;
+    UINT    nCmdShow;
+    LPSTR   lpstrText;
+} MCI_DGV_WINDOW_PARMSA, *LPMCI_DGV_WINDOW_PARMSA;
+
+typedef struct {
+    DWORD   dwCallback;
+    HWND    hWnd;
+    UINT    nCmdShow;
+    LPWSTR  lpstrText;
+} MCI_DGV_WINDOW_PARMSW, *LPMCI_DGV_WINDOW_PARMSW;
+
+#ifdef __cplusplus
+}
+#endif
+
diff --git a/multimedia/mciavi.c b/multimedia/mciavi.c
index aaaab4b17aa..a5f4e84a428 100644
--- a/multimedia/mciavi.c
+++ b/multimedia/mciavi.c
@@ -1,3 +1,5 @@
+/* -*- tab-width: 8; c-basic-offset: 4 -*- */
+
 /*
  * Digital video MCI Wine Driver
  *
@@ -11,6 +13,7 @@
 #include "xmalloc.h"
 #include "debug.h"
 #include "callback.h"
+#include "digitalv.h"
 #include "options.h"
 
 typedef struct {
@@ -19,6 +22,7 @@ typedef struct {
     WORD		wNotifyDeviceID;    	/* MCI device ID with a pending notification */
     HANDLE16 		hCallback;         	/* Callback handle for pending notification  */
     HMMIO		hFile;	            	/* mmio file handle open as Element          */
+    WORD		wStatus;		/* One of MCI_MODE_XXX			     */
     MCI_OPEN_PARMSA 	openParms;
     DWORD		dwTimeFormat;
 } WINE_MCIAVI;
@@ -44,17 +48,20 @@ static WINE_MCIAVI*  AVI_mciGetOpenDev(UINT16 wDevID)
 
 static	DWORD	AVI_mciStop(UINT16 wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpParms);
 
-static	DWORD	AVI_mciOpen(UINT16 wDevID, DWORD dwFlags, LPMCI_OPEN_PARMSA lpParms)
+/***************************************************************************
+ * 				AVI_mciOpen			[internal]
+ */
+static	DWORD	AVI_mciOpen(UINT16 wDevID, DWORD dwFlags, LPMCI_DGV_OPEN_PARMSA lpParms)
 {
     WINE_MCIAVI*	wma;
-
+    
     TRACE(mciavi, "(%04x, %08lX, %p) : semi-stub\n", wDevID, dwFlags, lpParms);
-
+    
     if (lpParms == NULL) 		return MCIERR_NULL_PARAMETER_BLOCK;
     if (wDevID > MAX_MCIAVIDRV)		return MCIERR_INVALID_DEVICE_ID;
-
+    
     wma = &MCIAviDev[wDevID];
-
+    
     if (wma->nUseCount > 0) {
 	/* The driver is already open on this channel */
 	/* If the driver was opened shareable before and this open specifies */
@@ -71,28 +78,31 @@ static	DWORD	AVI_mciOpen(UINT16 wDevID, DWORD dwFlags, LPMCI_OPEN_PARMSA lpParms
 	TRACE(cdaudio,"MCI_OPEN_ELEMENT !\n");
 	/*		return MCIERR_NO_ELEMENT_ALLOWED; */
     }
-
+    
     wma->openParms.dwCallback = lpParms->dwCallback;
     wma->openParms.wDeviceID  = (WORD)lpParms->wDeviceID;
     wma->openParms.lpstrDeviceType = lpParms->lpstrDeviceType;
     wma->openParms.lpstrElementName = lpParms->lpstrElementName;
     wma->openParms.lpstrAlias = lpParms->lpstrAlias;
-
+    
     wma->wNotifyDeviceID = lpParms->wDeviceID;
     /* FIXME: do real open */
-    /*    wmcda->mciMode = MCI_MODE_STOP; */
+    wma->wStatus = MCI_MODE_STOP;
     wma->dwTimeFormat = MCI_FORMAT_TMSF;
-
+    
     return 0;
-
+    
 }
 
+/***************************************************************************
+ * 				AVI_mciClose			[internal]
+ */
 static	DWORD	AVI_mciClose(UINT16 wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpParms)
 {
     WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
-
+    
     TRACE(mciavi, "(%04x, %08lX, %p) : semi-stub\n", wDevID, dwFlags, lpParms);    
-
+    
     if (wma == NULL) 	return MCIERR_INVALID_DEVICE_ID;
     
     if (wma->nUseCount == 1) {
@@ -103,56 +113,292 @@ static	DWORD	AVI_mciClose(UINT16 wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpPa
     return 0;
 }
 
+/***************************************************************************
+ * 				AVI_mciPlay			[internal]
+ */
 static	DWORD	AVI_mciPlay(UINT16 wDevID, DWORD dwFlags, LPMCI_PLAY_PARMS lpParms)
 {
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
     TRACE(mciavi, "(%04x, %08lX, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    wma->wStatus = MCI_MODE_PLAY;
+    if (lpParms && (dwFlags & MCI_NOTIFY)) {
+	TRACE(mcimidi, "MCI_NOTIFY_SUCCESSFUL %08lX !\n", lpParms->dwCallback);
+	mciDriverNotify16((HWND16)LOWORD(lpParms->dwCallback), 
+			  wma->wNotifyDeviceID, MCI_NOTIFY_SUCCESSFUL);
+    }
     return 0;
 }
 
-static	DWORD	AVI_mciRecord(UINT16 wDevID, DWORD dwFlags, LPMCI_RECORD_PARMS lpParms)
+/***************************************************************************
+ * 				AVI_mciRecord			[internal]
+ */
+static	DWORD	AVI_mciRecord(UINT16 wDevID, DWORD dwFlags, LPMCI_DGV_RECORD_PARMS lpParms)
 {
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
     TRACE(mciavi, "(%04x, %08lX, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    wma->wStatus = MCI_MODE_RECORD;
     return 0;
 }
 
+/***************************************************************************
+ * 				AVI_mciStop			[internal]
+ */
 static	DWORD	AVI_mciStop(UINT16 wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpParms)
 {
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
     TRACE(mciavi, "(%04x, %08lX, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    wma->wStatus = MCI_MODE_STOP;
     return 0;
 }
 
-static	DWORD	AVI_mciSet(UINT16 wDevID, DWORD dwFlags, LPMCI_SET_PARMS lpParms)
+/***************************************************************************
+ * 				AVI_mciPause			[internal]
+ */
+static	DWORD	AVI_mciPause(UINT16 wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpParms)
 {
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
     TRACE(mciavi, "(%04x, %08lX, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    wma->wStatus = MCI_MODE_PAUSE;
     return 0;
 }
 
-static	DWORD	AVI_mciPause(UINT16 wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpParms)
+/***************************************************************************
+ * 				AVI_mciResume			[internal]
+ */
+static	DWORD	AVI_mciResume(UINT16 wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpParms)
 {
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
     TRACE(mciavi, "(%04x, %08lX, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    wma->wStatus = MCI_MODE_PLAY;
     return 0;
 }
 
-static	DWORD	AVI_mciResume(UINT16 wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpParms)
+/***************************************************************************
+ * 				AVI_mciSeek			[internal]
+ */
+static	DWORD	AVI_mciSeek(UINT16 wDevID, DWORD dwFlags, LPMCI_SEEK_PARMS lpParms)
 {
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
     TRACE(mciavi, "(%04x, %08lX, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    return 0;
+}
+
+/***************************************************************************
+ * 				AVI_mciSet			[internal]
+ */
+static	DWORD	AVI_mciSet(UINT16 wDevID, DWORD dwFlags, LPMCI_DGV_SET_PARMS lpParms)
+{
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
+    TRACE(mciavi, "(%04x, %08lX, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    if (dwFlags & MCI_SET_TIME_FORMAT) {
+	switch (lpParms->dwTimeFormat) {
+	case MCI_FORMAT_MILLISECONDS:
+	    TRACE(mciavi, "MCI_FORMAT_MILLISECONDS !\n");
+	    wma->dwTimeFormat = MCI_FORMAT_MILLISECONDS;
+	    break;
+	case MCI_FORMAT_FRAMES:
+	    TRACE(mciavi, "MCI_FORMAT_FRAMES !\n");
+	    wma->dwTimeFormat = MCI_FORMAT_FRAMES;
+	    break;
+	default:
+	    WARN(mciavi, "Bad time format %lu!\n", lpParms->dwTimeFormat);
+	    return MCIERR_BAD_TIME_FORMAT;
+	}
+    }
+    
+    if (dwFlags & MCI_SET_DOOR_OPEN) {
+	TRACE(mciavi, "No support for door open !\n");
+	return MCIERR_UNSUPPORTED_FUNCTION;
+    }
+    if (dwFlags & MCI_SET_DOOR_CLOSED) {
+	TRACE(mciavi, "No support for door close !\n");
+	return MCIERR_UNSUPPORTED_FUNCTION;
+    }
+    if (dwFlags & MCI_SET_ON) {
+	dbg_decl_str(mciavi, 256);
+	
+	dsprintf(mciavi, "MCI_SET_ON:");
+	
+	if (dwFlags & MCI_SET_VIDEO) {
+	    dsprintf(mciavi, " video");
+	}
+	if (dwFlags & MCI_SET_AUDIO) {
+	    dsprintf(mciavi, " audio");
+	    if (lpParms->dwAudio & MCI_SET_AUDIO_ALL)
+		dsprintf(mciavi, " all");
+	    if (lpParms->dwAudio & MCI_SET_AUDIO_LEFT)
+		dsprintf(mciavi, " left");
+	    if (lpParms->dwAudio & MCI_SET_AUDIO_RIGHT)
+		dsprintf(mciavi, " right");
+	}
+	if (dwFlags & MCI_DGV_SET_SEEK_EXACTLY) {
+	    dsprintf(mciavi, " seek_exactly");
+	}
+	TRACE(mciavi, "%s\n", dbg_str(mciavi));
+    }
+    
+    if (dwFlags & MCI_SET_OFF) {
+	dbg_decl_str(mciavi, 256);
+	
+	dsprintf(mciavi, "MCI_SET_OFF:");
+	if (dwFlags & MCI_SET_VIDEO) {
+	    dsprintf(mciavi, " video");
+	}
+	if (dwFlags & MCI_SET_AUDIO) {
+	    dsprintf(mciavi, " audio");
+	    if (lpParms->dwAudio & MCI_SET_AUDIO_ALL)
+		dsprintf(mciavi, " all");
+	    if (lpParms->dwAudio & MCI_SET_AUDIO_LEFT)
+		dsprintf(mciavi, " left");
+	    if (lpParms->dwAudio & MCI_SET_AUDIO_RIGHT)
+		dsprintf(mciavi, " right");
+	}
+	if (dwFlags & MCI_DGV_SET_SEEK_EXACTLY) {
+	    dsprintf(mciavi, " seek_exactly");
+	}
+	TRACE(mciavi, "%s\n", dbg_str(mciavi));
+    }
+    if (dwFlags & MCI_DGV_SET_FILEFORMAT) {
+	LPSTR	str = "save";
+	if (dwFlags & MCI_DGV_SET_STILL)	
+	    str = "capture";
+	
+	switch (lpParms->dwFileFormat) {
+	case MCI_DGV_FF_AVI: 	TRACE(mciavi, "Setting file format (%s) to 'AVI'\n", str); 	break;
+	case MCI_DGV_FF_AVSS: 	TRACE(mciavi, "Setting file format (%s) to 'AVSS'\n", str);	break;
+	case MCI_DGV_FF_DIB: 	TRACE(mciavi, "Setting file format (%s) to 'DIB'\n", str);	break;
+	case MCI_DGV_FF_JFIF: 	TRACE(mciavi, "Setting file format (%s) to 'JFIF'\n", str);	break;
+	case MCI_DGV_FF_JPEG: 	TRACE(mciavi, "Setting file format (%s) to 'JPEG'\n", str);	break;
+	case MCI_DGV_FF_MPEG: 	TRACE(mciavi, "Setting file format (%s) to 'MPEG'\n", str); 	break;
+	case MCI_DGV_FF_RDIB:	TRACE(mciavi, "Setting file format (%s) to 'RLE DIB'\n", str);	break;
+	case MCI_DGV_FF_RJPEG: 	TRACE(mciavi, "Setting file format (%s) to 'RJPEG'\n", str);	break;
+	default:		TRACE(mciavi, "Setting unknown file format (%s): %ld\n", str, lpParms->dwFileFormat);
+	}
+    }
+    
+    if (dwFlags & MCI_DGV_SET_SPEED) {
+	TRACE(mciavi, "Setting speed to %ld\n", lpParms->dwSpeed);
+    }
+    
     return 0;
 }
 
-static	DWORD	AVI_mciStatus(UINT16 wDevID, DWORD dwFlags, LPMCI_STATUS_PARMS lpParms)
+/***************************************************************************
+ * 				AVI_mciStatus			[internal]
+ */
+static	DWORD	AVI_mciStatus(UINT16 wDevID, DWORD dwFlags, LPMCI_DGV_STATUS_PARMSA lpParms)
 {
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
     TRACE(mciavi, "(%04x, %08lX, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    if (dwFlags & MCI_STATUS_ITEM) {
+	switch (lpParms->dwItem) {
+	case MCI_STATUS_CURRENT_TRACK:
+	    lpParms->dwReturn = 1;
+	    TRACE(mciavi, "MCI_STATUS_CURRENT_TRACK => %lu\n", lpParms->dwReturn);
+	    break;
+	case MCI_STATUS_LENGTH:
+	    if (dwFlags & MCI_TRACK) {
+		/* lpParms->dwTrack contains track # */
+		lpParms->dwReturn = 0x1234;
+	    } else {
+		lpParms->dwReturn = 0x4321;
+	    }
+	    TRACE(mciavi, "MCI_STATUS_LENGTH => %lu\n", lpParms->dwReturn);
+	    break;
+	case MCI_STATUS_MODE:
+ 	    lpParms->dwReturn = wma->wStatus;
+	    TRACE(mciavi, "MCI_STATUS_MODE => %lu\n", lpParms->dwReturn);
+	    break;
+	case MCI_STATUS_MEDIA_PRESENT:
+	    TRACE(mciavi, "MCI_STATUS_MEDIA_PRESENT => TRUE\n");
+	    lpParms->dwReturn = TRUE;
+	    break;
+	case MCI_STATUS_NUMBER_OF_TRACKS:
+	    lpParms->dwReturn = 3;
+	    TRACE(mciavi, "MCI_STATUS_NUMBER_OF_TRACKS => %lu\n", lpParms->dwReturn);
+	    break;
+	case MCI_STATUS_POSITION:
+	    /* FIXME: do I need to use MCI_TRACK ? */
+	    lpParms->dwReturn = 0x0123;
+	    TRACE(mciavi, "MCI_STATUS_POSITION %s => %lu\n", 
+		  (dwFlags & MCI_STATUS_START) ? "start" : "current", lpParms->dwReturn);
+	    break;
+	case MCI_STATUS_READY:
+	    lpParms->dwReturn = (wma->wStatus != MCI_MODE_NOT_READY);
+	    TRACE(mciavi, "MCI_STATUS_READY = %lu\n", lpParms->dwReturn);
+	    break;
+	case MCI_STATUS_TIME_FORMAT:
+	    lpParms->dwReturn = wma->dwTimeFormat;
+	    TRACE(mciavi, "MCI_STATUS_TIME_FORMAT => %lu\n", lpParms->dwReturn);
+	    break;
+	default:
+	    WARN(mciavi, "Unknowm command %08lX !\n", lpParms->dwItem);
+	    return MCIERR_UNRECOGNIZED_COMMAND;
+	}
+    } else {
+	WARN(mciavi, "No Status-Item!\n");
+	return MCIERR_UNRECOGNIZED_COMMAND;
+    }
+    if (dwFlags & MCI_NOTIFY) {
+	TRACE(mciavi, "MCI_NOTIFY_SUCCESSFUL %08lX !\n", lpParms->dwCallback);
+	mciDriverNotify16((HWND16)LOWORD(lpParms->dwCallback), 
+			  wma->wNotifyDeviceID, MCI_NOTIFY_SUCCESSFUL);
+    }
+    
     return 0;
 }
 
+/***************************************************************************
+ * 				AVI_mciGetDevCaps			[internal]
+ */
 static	DWORD	AVI_mciGetDevCaps(UINT16 wDevID, DWORD dwFlags,  LPMCI_GETDEVCAPS_PARMS lpParms)
 {
-    WINE_MCIAVI*	wmm = AVI_mciGetOpenDev(wDevID);
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
     
     TRACE(mciavi, "(%04x, %08lX, %p) : stub\n", wDevID, dwFlags, lpParms);
     
     if (lpParms == NULL) 	return MCIERR_NULL_PARAMETER_BLOCK;
-    if (wmm == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
     
     if (dwFlags & MCI_GETDEVCAPS_ITEM) {
 	switch (lpParms->dwItem) {
@@ -203,12 +449,15 @@ static	DWORD	AVI_mciGetDevCaps(UINT16 wDevID, DWORD dwFlags,  LPMCI_GETDEVCAPS_P
     return 0;
 }
 
-static	DWORD	AVI_mciInfo(UINT16 wDevID, DWORD dwFlags, LPMCI_INFO_PARMSA lpParms)
+/***************************************************************************
+ * 				AVI_mciInfo			[internal]
+ */
+static	DWORD	AVI_mciInfo(UINT16 wDevID, DWORD dwFlags, LPMCI_DGV_INFO_PARMSA lpParms)
 {
     DWORD		ret = 0;
     LPSTR		str = 0;
     WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
-
+    
     TRACE(mciavi, "(%04X, %08lX, %p) : stub;\n", wDevID, dwFlags, lpParms);
     
     if (lpParms == NULL || lpParms->lpstrReturn == NULL) {
@@ -246,22 +495,443 @@ static	DWORD	AVI_mciInfo(UINT16 wDevID, DWORD dwFlags, LPMCI_INFO_PARMSA lpParms
     return ret;
 }
 
-static	DWORD	AVI_mciSeek(UINT16 wDevID, DWORD dwFlags, LPMCI_SEEK_PARMS lpParms)
+/***************************************************************************
+ * 				AVI_mciPut			[internal]
+ */
+static	DWORD	AVI_mciPut(UINT16 wDevID, DWORD dwFlags, LPMCI_DGV_PUT_PARMS lpParms)
 {
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    RECT		rc;
+    dbg_decl_str(mciavi, 256);
+    
     TRACE(mciavi, "(%04x, %08lX, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    if (dwFlags & MCI_DGV_RECT) {
+	rc = lpParms->rc;
+    } else {
+	SetRectEmpty(&rc);
+    }
+    
+    if (dwFlags & MCI_DGV_PUT_CLIENT) {
+	dsprintf(mciavi, "PUT_CLIENT");
+    }
+    if (dwFlags & MCI_DGV_PUT_DESTINATION) {
+	dsprintf(mciavi, "PUT_DESTINATION");
+    }
+    if (dwFlags & MCI_DGV_PUT_FRAME) {
+	dsprintf(mciavi, "PUT_FRAME");
+    }
+    if (dwFlags & MCI_DGV_PUT_SOURCE) {
+	dsprintf(mciavi, "PUT_SOURCE");
+    }
+    if (dwFlags & MCI_DGV_PUT_VIDEO) {
+	dsprintf(mciavi, "PUT_VIDEO");
+    }
+    if (dwFlags & MCI_DGV_PUT_WINDOW) {
+	dsprintf(mciavi, "PUT_WINDOW");
+    }
+    dsprintf(mciavi, " (%d,%d,%d,%d)\n", rc.left, rc.top, rc.right, rc.bottom);
+    
+    return 0;
+}
+
+/***************************************************************************
+ * 				AVI_mciWindow			[internal]
+ */
+static	DWORD	AVI_mciWindow(UINT16 wDevID, DWORD dwFlags, LPMCI_DGV_WINDOW_PARMSA lpParms)
+{
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
+    TRACE(mciavi, "(%04x, %08lX, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    if (dwFlags & MCI_DGV_WINDOW_HWND) {
+	TRACE(mciavi, "Setting hWnd to %08lx\n", (DWORD)lpParms->hWnd);
+    }
+    if (dwFlags & MCI_DGV_WINDOW_STATE) {
+	TRACE(mciavi, "Setting nCmdShow to %d\n", lpParms->nCmdShow);
+    }
+    if (dwFlags & MCI_DGV_WINDOW_TEXT) {
+	TRACE(mciavi, "Setting caption to '%s'\n", lpParms->lpstrText);
+    }
+    
+    return 0;
+}
+
+/*****************************************************************************
+ * 				AVI_mciLoad			[internal]
+ */
+static DWORD	AVI_mciLoad(UINT16 wDevID, DWORD dwFlags, LPMCI_DGV_LOAD_PARMSA lpParms)
+{
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
+    TRACE(mciavi, "(%04x, %08lx, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    return 0;
+}
+
+/******************************************************************************
+ * 				AVI_mciSave			[internal]
+ */
+static	DWORD	AVI_mciSave(UINT16 wDevID, DWORD dwFlags, LPMCI_DGV_SAVE_PARMSA lpParms)
+{
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
+    TRACE(mciavi, "(%04x, %08lx, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    return 0;
+}
+
+/******************************************************************************
+ * 				AVI_mciFreeze			[internal]
+ */
+static	DWORD	AVI_mciFreeze(UINT16 wDevID, DWORD dwFlags, LPMCI_DGV_RECT_PARMS lpParms)
+{
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
+    TRACE(mciavi, "(%04x, %08lx, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    return 0;
+}
+
+/******************************************************************************
+ * 				AVI_mciRealize			[internal]
+ */
+static	DWORD	AVI_mciRealize(UINT16 wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpParms)
+{
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
+    TRACE(mciavi, "(%04x, %08lx, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    return 0;
+}
+
+/******************************************************************************
+ * 				AVI_mciUnFreeze			[internal]
+ */
+static	DWORD	AVI_mciUnFreeze(UINT16 wDevID, DWORD dwFlags, LPMCI_DGV_RECT_PARMS lpParms)
+{
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
+    TRACE(mciavi, "(%04x, %08lx, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    return 0;
+}
+
+/******************************************************************************
+ * 				AVI_mciUpdate			[internal]
+ */
+static	DWORD	AVI_mciUpdate(UINT16 wDevID, DWORD dwFlags, LPMCI_DGV_UPDATE_PARMS lpParms)
+{
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
+    TRACE(mciavi, "(%04x, %08lx, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    return 0;
+}
+
+/******************************************************************************
+ * 				AVI_mciWhere			[internal]
+ */
+static	DWORD	AVI_mciWhere(UINT16 wDevID, DWORD dwFlags, LPMCI_DGV_RECT_PARMS lpParms)
+{
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
+    TRACE(mciavi, "(%04x, %08lx, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    return 0;
+}
+
+/******************************************************************************
+ * 				AVI_mciStep			[internal]
+ */
+static	DWORD	AVI_mciStep(UINT16 wDevID, DWORD dwFlags, LPMCI_DGV_STEP_PARMS lpParms)
+{
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
+    TRACE(mciavi, "(%04x, %08lx, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    return 0;
+}
+
+/******************************************************************************
+ * 				AVI_mciCopy			[internal]
+ */
+static	DWORD	AVI_mciCopy(UINT16 wDevID, DWORD dwFlags, LPMCI_DGV_COPY_PARMS lpParms)
+{
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
+    TRACE(mciavi, "(%04x, %08lx, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    return 0;
+}
+
+/******************************************************************************
+ * 				AVI_mciCut			[internal]
+ */
+static	DWORD	AVI_mciCut(UINT16 wDevID, DWORD dwFlags, LPMCI_DGV_CUT_PARMS lpParms)
+{
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
+    TRACE(mciavi, "(%04x, %08lx, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    return 0;
+}
+
+/******************************************************************************
+ * 				AVI_mciDelete			[internal]
+ */
+static	DWORD	AVI_mciDelete(UINT16 wDevID, DWORD dwFlags, LPMCI_DGV_DELETE_PARMS lpParms)
+{
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
+    TRACE(mciavi, "(%04x, %08lx, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    return 0;
+}
+
+/******************************************************************************
+ * 				AVI_mciPaste			[internal]
+ */
+static	DWORD	AVI_mciPaste(UINT16 wDevID, DWORD dwFlags, LPMCI_DGV_PASTE_PARMS lpParms)
+{
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
+    TRACE(mciavi, "(%04x, %08lx, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    return 0;
+}
+
+/******************************************************************************
+ * 				AVI_mciCue			[internal]
+ */
+static	DWORD	AVI_mciCue(UINT16 wDevID, DWORD dwFlags, LPMCI_DGV_CUE_PARMS lpParms)
+{
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
+    TRACE(mciavi, "(%04x, %08lx, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    return 0;
+}
+
+/******************************************************************************
+ * 				AVI_mciCapture			[internal]
+ */
+static	DWORD	AVI_mciCapture(UINT16 wDevID, DWORD dwFlags, LPMCI_DGV_CAPTURE_PARMSA lpParms)
+{
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
+    TRACE(mciavi, "(%04x, %08lx, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
     return 0;
 }
 
+/******************************************************************************
+ * 				AVI_mciMonitor			[internal]
+ */
+static	DWORD	AVI_mciMonitor(UINT16 wDevID, DWORD dwFlags, LPMCI_DGV_MONITOR_PARMS lpParms)
+{
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
+    TRACE(mciavi, "(%04x, %08lx, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    return 0;
+}
+
+/******************************************************************************
+ * 				AVI_mciReserve			[internal]
+ */
+static	DWORD	AVI_mciReserve(UINT16 wDevID, DWORD dwFlags, LPMCI_DGV_RESERVE_PARMSA lpParms)
+{
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
+    TRACE(mciavi, "(%04x, %08lx, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    return 0;
+}
+
+/******************************************************************************
+ * 				AVI_mciSetAudio			[internal]
+ */
+static	DWORD	AVI_mciSetAudio(UINT16 wDevID, DWORD dwFlags, LPMCI_DGV_SETAUDIO_PARMSA lpParms)
+{
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
+    TRACE(mciavi, "(%04x, %08lx, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    return 0;
+}
+
+/******************************************************************************
+ * 				AVI_mciSignal			[internal]
+ */
+static	DWORD	AVI_mciSignal(UINT16 wDevID, DWORD dwFlags, LPMCI_DGV_SIGNAL_PARMS lpParms)
+{
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
+    TRACE(mciavi, "(%04x, %08lx, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    return 0;
+}
+
+/******************************************************************************
+ * 				AVI_mciSetVideo			[internal]
+ */
+static	DWORD	AVI_mciSetVideo(UINT16 wDevID, DWORD dwFlags, LPMCI_DGV_SETVIDEO_PARMSA lpParms)
+{
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
+    TRACE(mciavi, "(%04x, %08lx, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    return 0;
+}
+
+/******************************************************************************
+ * 				AVI_mciQuality			[internal]
+ */
+static	DWORD	AVI_mciQuality(UINT16 wDevID, DWORD dwFlags, LPMCI_DGV_QUALITY_PARMSA lpParms)
+{
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
+    TRACE(mciavi, "(%04x, %08lx, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    return 0;
+}
+
+/******************************************************************************
+ * 				AVI_mciList			[internal]
+ */
+static	DWORD	AVI_mciList(UINT16 wDevID, DWORD dwFlags, LPMCI_DGV_LIST_PARMSA lpParms)
+{
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
+    TRACE(mciavi, "(%04x, %08lx, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    return 0;
+}
+
+/******************************************************************************
+ * 				AVI_mciUndo			[internal]
+ */
+static	DWORD	AVI_mciUndo(UINT16 wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpParms)
+{
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
+    TRACE(mciavi, "(%04x, %08lx, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    return 0;
+}
+
+/******************************************************************************
+ * 				AVI_mciConfigure			[internal]
+ */
+static	DWORD	AVI_mciConfigure(UINT16 wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpParms)
+{
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
+    TRACE(mciavi, "(%04x, %08lx, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    return 0;
+}
+
+/******************************************************************************
+ * 				AVI_mciRestore			[internal]
+ */
+static	DWORD	AVI_mciRestore(UINT16 wDevID, DWORD dwFlags, LPMCI_DGV_RESTORE_PARMSA lpParms)
+{
+    WINE_MCIAVI*	wma = AVI_mciGetOpenDev(wDevID);
+    
+    TRACE(mciavi, "(%04x, %08lx, %p) : stub\n", wDevID, dwFlags, lpParms);
+    
+    if (lpParms == NULL)	return MCIERR_NULL_PARAMETER_BLOCK;
+    if (wma == NULL)		return MCIERR_INVALID_DEVICE_ID;
+    
+    return 0;
+}
 
 /*======================================================================*
  *                  	    MCI AVI entry points			*
  *======================================================================*/
 
 /**************************************************************************
- * 				MCIAVI_DriverProc32	[sample driver]
+ * 				MCIAVI_DriverProc	[sample driver]
  */
-LONG MCIAVI_DriverProc32(DWORD dwDevID, HDRVR16 hDriv, DWORD wMsg, 
-				 DWORD dwParam1, DWORD dwParam2)
+LONG MCIAVI_DriverProc(DWORD dwDevID, HDRVR16 hDriv, DWORD wMsg, 
+		       DWORD dwParam1, DWORD dwParam2)
 {
     switch (wMsg) {
     case DRV_LOAD:		return 1;
@@ -274,34 +944,49 @@ LONG MCIAVI_DriverProc32(DWORD dwDevID, HDRVR16 hDriv, DWORD wMsg,
     case DRV_CONFIGURE:		MessageBoxA(0, "Sample AVI Wine Driver !", "MM-Wine Driver", MB_OK); return 1;
     case DRV_INSTALL:		return DRVCNF_RESTART;
     case DRV_REMOVE:		return DRVCNF_RESTART;
-    case MCI_OPEN_DRIVER:	return AVI_mciOpen      (dwDevID, dwParam1, (LPMCI_OPEN_PARMSA)   dwParam2);
-    case MCI_CLOSE_DRIVER:	return AVI_mciClose     (dwDevID, dwParam1, (LPMCI_GENERIC_PARMS)   dwParam2);
-    case MCI_PLAY:		return AVI_mciPlay      (dwDevID, dwParam1, (LPMCI_PLAY_PARMS)      dwParam2);
-    case MCI_RECORD:		return AVI_mciRecord    (dwDevID, dwParam1, (LPMCI_RECORD_PARMS)    dwParam2);
-    case MCI_STOP:		return AVI_mciStop      (dwDevID, dwParam1, (LPMCI_GENERIC_PARMS)   dwParam2);
-    case MCI_SET:		return AVI_mciSet       (dwDevID, dwParam1, (LPMCI_SET_PARMS)       dwParam2);
-    case MCI_PAUSE:		return AVI_mciPause     (dwDevID, dwParam1, (LPMCI_GENERIC_PARMS)   dwParam2);
-    case MCI_RESUME:		return AVI_mciResume    (dwDevID, dwParam1, (LPMCI_GENERIC_PARMS)   dwParam2);
-    case MCI_STATUS:		return AVI_mciStatus    (dwDevID, dwParam1, (LPMCI_STATUS_PARMS)    dwParam2);
-    case MCI_GETDEVCAPS:	return AVI_mciGetDevCaps(dwDevID, dwParam1, (LPMCI_GETDEVCAPS_PARMS)dwParam2);
-    case MCI_INFO:		return AVI_mciInfo      (dwDevID, dwParam1, (LPMCI_INFO_PARMSA)   dwParam2);
-    case MCI_SEEK:		return AVI_mciSeek      (dwDevID, dwParam1, (LPMCI_SEEK_PARMS)      dwParam2);
-    case MCI_LOAD:		
-    case MCI_SAVE:		
-    case MCI_FREEZE:		
-    case MCI_PUT:		
-    case MCI_REALIZE:		
-    case MCI_UNFREEZE:		
-    case MCI_UPDATE:		
-    case MCI_WHERE:		
-    case MCI_WINDOW:		
-    case MCI_STEP:		
-    case MCI_SPIN:		
+	
+    case MCI_OPEN_DRIVER:	return AVI_mciOpen      (dwDevID, dwParam1, (LPMCI_DGV_OPEN_PARMSA)     dwParam2);
+    case MCI_CLOSE_DRIVER:	return AVI_mciClose     (dwDevID, dwParam1, (LPMCI_GENERIC_PARMS)       dwParam2);
+    case MCI_PLAY:		return AVI_mciPlay      (dwDevID, dwParam1, (LPMCI_PLAY_PARMS)          dwParam2);
+    case MCI_RECORD:		return AVI_mciRecord    (dwDevID, dwParam1, (LPMCI_DGV_RECORD_PARMS)    dwParam2);
+    case MCI_STOP:		return AVI_mciStop      (dwDevID, dwParam1, (LPMCI_GENERIC_PARMS)       dwParam2);
+    case MCI_SET:		return AVI_mciSet       (dwDevID, dwParam1, (LPMCI_DGV_SET_PARMS)       dwParam2);
+    case MCI_PAUSE:		return AVI_mciPause     (dwDevID, dwParam1, (LPMCI_GENERIC_PARMS)       dwParam2);
+    case MCI_RESUME:		return AVI_mciResume    (dwDevID, dwParam1, (LPMCI_GENERIC_PARMS)       dwParam2);
+    case MCI_STATUS:		return AVI_mciStatus    (dwDevID, dwParam1, (LPMCI_DGV_STATUS_PARMSA)   dwParam2);
+    case MCI_GETDEVCAPS:	return AVI_mciGetDevCaps(dwDevID, dwParam1, (LPMCI_GETDEVCAPS_PARMS)    dwParam2);
+    case MCI_INFO:		return AVI_mciInfo      (dwDevID, dwParam1, (LPMCI_DGV_INFO_PARMSA)     dwParam2);
+    case MCI_SEEK:		return AVI_mciSeek      (dwDevID, dwParam1, (LPMCI_SEEK_PARMS)          dwParam2);
+    case MCI_PUT:		return AVI_mciPut	(dwDevID, dwParam1, (LPMCI_DGV_PUT_PARMS)       dwParam2);		
+    case MCI_WINDOW:		return AVI_mciWindow	(dwDevID, dwParam1, (LPMCI_DGV_WINDOW_PARMSA)   dwParam2);		
+    case MCI_LOAD:		return AVI_mciLoad      (dwDevID, dwParam1, (LPMCI_DGV_LOAD_PARMSA)     dwParam2);		
+    case MCI_SAVE:		return AVI_mciSave      (dwDevID, dwParam1, (LPMCI_DGV_SAVE_PARMSA)     dwParam2);		
+    case MCI_FREEZE:		return AVI_mciFreeze	(dwDevID, dwParam1, (LPMCI_DGV_RECT_PARMS)      dwParam2);
+    case MCI_REALIZE:		return AVI_mciRealize   (dwDevID, dwParam1, (LPMCI_GENERIC_PARMS)       dwParam2);
+    case MCI_UNFREEZE:		return AVI_mciUnFreeze  (dwDevID, dwParam1, (LPMCI_DGV_RECT_PARMS)      dwParam2);
+    case MCI_UPDATE:		return AVI_mciUpdate    (dwDevID, dwParam1, (LPMCI_DGV_UPDATE_PARMS)    dwParam2);
+    case MCI_WHERE:		return AVI_mciWhere	(dwDevID, dwParam1, (LPMCI_DGV_RECT_PARMS)      dwParam2);
+    case MCI_STEP:		return AVI_mciStep      (dwDevID, dwParam1, (LPMCI_DGV_STEP_PARMS)      dwParam2);
+    case MCI_COPY:		return AVI_mciCopy      (dwDevID, dwParam1, (LPMCI_DGV_COPY_PARMS)      dwParam2);		
+    case MCI_CUT:		return AVI_mciCut       (dwDevID, dwParam1, (LPMCI_DGV_CUT_PARMS)       dwParam2);		
+    case MCI_DELETE:		return AVI_mciDelete    (dwDevID, dwParam1, (LPMCI_DGV_DELETE_PARMS)    dwParam2);				
+    case MCI_PASTE:		return AVI_mciPaste     (dwDevID, dwParam1, (LPMCI_DGV_PASTE_PARMS)     dwParam2);				
+    case MCI_CUE:		return AVI_mciCue       (dwDevID, dwParam1, (LPMCI_DGV_CUE_PARMS)       dwParam2);
+	/* Digital Video specific */	
+    case MCI_CAPTURE:		return AVI_mciCapture   (dwDevID, dwParam1, (LPMCI_DGV_CAPTURE_PARMSA)  dwParam2);
+    case MCI_MONITOR:		return AVI_mciMonitor   (dwDevID, dwParam1, (LPMCI_DGV_MONITOR_PARMS)   dwParam2);
+    case MCI_RESERVE:		return AVI_mciReserve   (dwDevID, dwParam1, (LPMCI_DGV_RESERVE_PARMSA)  dwParam2);
+    case MCI_SETAUDIO:		return AVI_mciSetAudio  (dwDevID, dwParam1, (LPMCI_DGV_SETAUDIO_PARMSA) dwParam2);
+    case MCI_SIGNAL:		return AVI_mciSignal    (dwDevID, dwParam1, (LPMCI_DGV_SIGNAL_PARMS)    dwParam2);
+    case MCI_SETVIDEO:		return AVI_mciSetVideo  (dwDevID, dwParam1, (LPMCI_DGV_SETVIDEO_PARMSA) dwParam2);
+    case MCI_QUALITY:		return AVI_mciQuality   (dwDevID, dwParam1, (LPMCI_DGV_QUALITY_PARMSA)  dwParam2);
+    case MCI_LIST:		return AVI_mciList      (dwDevID, dwParam1, (LPMCI_DGV_LIST_PARMSA)     dwParam2);
+    case MCI_UNDO:		return AVI_mciUndo      (dwDevID, dwParam1, (LPMCI_GENERIC_PARMS)       dwParam2);
+    case MCI_CONFIGURE:		return AVI_mciConfigure (dwDevID, dwParam1, (LPMCI_GENERIC_PARMS)       dwParam2);
+    case MCI_RESTORE:		return AVI_mciRestore   (dwDevID, dwParam1, (LPMCI_DGV_RESTORE_PARMSA)	dwParam2);
+	
+    case MCI_SPIN:
     case MCI_ESCAPE:		
-    case MCI_COPY:		
-    case MCI_CUT:		
-    case MCI_DELETE:		
-    case MCI_PASTE:		
 	WARN(mciavi, "Unsupported command=%s\n", MCI_CommandToString(wMsg));
 	break;
     case MCI_OPEN:
@@ -314,3 +999,5 @@ LONG MCIAVI_DriverProc32(DWORD dwDevID, HDRVR16 hDriv, DWORD wMsg,
     }
     return MCIERR_UNRECOGNIZED_COMMAND;
 }
+
+    
-- 
GitLab