1 /* -*- tab-width: 8; c-basic-offset: 4 -*- */
4 * Digital video MCI Wine Driver
6 * Copyright 1999, 2000 Eric POUECH
25 int nUseCount; /* Incremented for each shared open */
26 BOOL16 fShareable; /* TRUE if first open was shareable */
27 HANDLE16 hCallback; /* Callback handle for pending notification */
28 WORD wCommandTable; /* custom MCI command table */
29 volatile DWORD dwStatus; /* One of MCI_MODE_XXX */
30 MCI_OPEN_PARMSA openParms;
31 DWORD dwMciTimeFormat; /* current time format */
32 DWORD dwSet; /* what's turned on: video & audio l&r */
33 /* information on the loaded AVI file */
34 HMMIO hFile; /* mmio file handle open as Element */
36 AVIStreamHeader ash_video;
37 AVIStreamHeader ash_audio;
38 LPBITMAPINFOHEADER inbih;
39 struct MMIOPos* lpVideoIndex;
40 LPWAVEFORMATEX lpWaveFormat;
41 struct MMIOPos* lpAudioIndex;
42 /* computed data from the file */
43 DWORD dwPlayableVideoFrames; /* max number of frames to be played. Takes care of truncated files and audio skew */
44 DWORD dwPlayableAudioBlocks;
45 /* data for the AVI decompressor */
47 LPBITMAPINFOHEADER outbih;
51 /* data for playing the audio part */
53 HANDLE hEvent; /* for synchronization */
54 DWORD dwEventCount; /* for synchronization */
55 /* data for play back */
57 DWORD dwCurrVideoFrame; /* video frame to display and current position */
58 DWORD dwCurrAudioBlock; /* current audio block being played */
59 /* data for the background mechanism */
63 extern HINSTANCE MCIAVI_hInstance;
66 DWORD MCIAVI_ConvertFrameToTimeFormat(WINE_MCIAVI* wma, DWORD val, LPDWORD lpRet);
67 DWORD MCIAVI_ConvertTimeFormatToFrame(WINE_MCIAVI* wma, DWORD val);
68 DWORD MCIAVI_mciGetDevCaps(UINT wDevID, DWORD dwFlags, LPMCI_GETDEVCAPS_PARMS lpParms);
69 DWORD MCIAVI_mciInfo(UINT wDevID, DWORD dwFlags, LPMCI_DGV_INFO_PARMSA lpParms);
70 DWORD MCIAVI_mciSet(UINT wDevID, DWORD dwFlags, LPMCI_DGV_SET_PARMS lpParms);
71 DWORD MCIAVI_mciStatus(UINT wDevID, DWORD dwFlags, LPMCI_DGV_STATUS_PARMSA lpParms);
74 BOOL MCIAVI_GetInfo(WINE_MCIAVI* wma);
75 DWORD MCIAVI_OpenAudio(WINE_MCIAVI* wma, unsigned* nHdr, LPWAVEHDR* pWaveHdr);
76 BOOL MCIAVI_OpenVideo(WINE_MCIAVI* wma);
77 void MCIAVI_PlayAudioBlocks(WINE_MCIAVI* wma, unsigned nHdr, LPWAVEHDR waveHdr);
78 LRESULT MCIAVI_DrawFrame(WINE_MCIAVI* wma);
79 LRESULT MCIAVI_PaintFrame(WINE_MCIAVI* wma, HDC hDC);
82 WINE_MCIAVI* MCIAVI_mciGetOpenDev(UINT wDevID);
85 BOOL MCIAVI_CreateWindow(WINE_MCIAVI* wma, DWORD dwFlags, LPMCI_DGV_OPEN_PARMSA lpOpenParms);
86 DWORD MCIAVI_mciPut(UINT wDevID, DWORD dwFlags, LPMCI_DGV_PUT_PARMS lpParms);
87 DWORD MCIAVI_mciWhere(UINT wDevID, DWORD dwFlags, LPMCI_DGV_RECT_PARMS lpParms);
88 DWORD MCIAVI_mciWindow(UINT wDevID, DWORD dwFlags, LPMCI_DGV_WINDOW_PARMSA lpParms);