115 lines
4.5 KiB
C
115 lines
4.5 KiB
C
/*
|
|
* Digital video MCI Wine Driver
|
|
*
|
|
* Copyright 1999, 2000 Eric POUECH
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
|
*/
|
|
|
|
#ifndef __WINE_PRIVATE_MCIAVI_H
|
|
#define __WINE_PRIVATE_MCIAVI_H
|
|
|
|
#include <stdarg.h>
|
|
#include "windef.h"
|
|
#include "winbase.h"
|
|
#include "wingdi.h"
|
|
#include "winuser.h"
|
|
#include "mmddk.h"
|
|
#include "digitalv.h"
|
|
#include "vfw.h"
|
|
#include "wownt32.h"
|
|
#include "mciavi.h"
|
|
|
|
struct MMIOPos {
|
|
DWORD dwOffset;
|
|
DWORD dwSize;
|
|
};
|
|
|
|
typedef struct {
|
|
MCIDEVICEID wDevID;
|
|
int nUseCount; /* Incremented for each shared open */
|
|
BOOL fShareable; /* TRUE if first open was shareable */
|
|
WORD wCommandTable; /* custom MCI command table */
|
|
DWORD dwStatus; /* One of MCI_MODE_XXX */
|
|
LPWSTR lpFileName;
|
|
DWORD dwMciTimeFormat; /* current time format */
|
|
DWORD dwSet; /* what's turned on: video & audio l&r */
|
|
/* information on the loaded AVI file */
|
|
HMMIO hFile; /* mmio file handle open as Element */
|
|
DWORD video_stream_n, audio_stream_n; /* stream #s */
|
|
MainAVIHeader mah;
|
|
AVIStreamHeader ash_video;
|
|
AVIStreamHeader ash_audio;
|
|
LPBITMAPINFOHEADER inbih;
|
|
struct MMIOPos* lpVideoIndex;
|
|
LPWAVEFORMATEX lpWaveFormat;
|
|
struct MMIOPos* lpAudioIndex;
|
|
/* computed data from the file */
|
|
DWORD dwPlayableVideoFrames; /* max number of frames to be played. Takes care of truncated files and audio skew */
|
|
DWORD dwPlayableAudioBlocks;
|
|
/* data for the AVI decompressor */
|
|
HIC hic;
|
|
LPBITMAPINFOHEADER outbih;
|
|
LPVOID indata;
|
|
LPVOID outdata;
|
|
HBITMAP hbmFrame;
|
|
/* data for playing the audio part */
|
|
HANDLE hWave;
|
|
HANDLE hEvent; /* for synchronization */
|
|
LONG dwEventCount; /* for synchronization */
|
|
/* data for play back */
|
|
HWND hWnd, hWndPaint;
|
|
DWORD dwCachedFrame; /* buffered frame */
|
|
DWORD dwCurrVideoFrame; /* video frame to display and current position */
|
|
DWORD dwToVideoFrame; /* play to */
|
|
DWORD dwCurrAudioBlock; /* current audio block being played */
|
|
RECT source, dest;
|
|
/* data for the background mechanism */
|
|
CRITICAL_SECTION cs;
|
|
HANDLE hStopEvent;
|
|
HANDLE ack_event; /* acknowledge that an async command has started */
|
|
} WINE_MCIAVI;
|
|
|
|
extern HINSTANCE MCIAVI_hInstance;
|
|
|
|
/* info.c */
|
|
DWORD MCIAVI_ConvertFrameToTimeFormat(WINE_MCIAVI* wma, DWORD val, LPDWORD lpRet);
|
|
DWORD MCIAVI_ConvertTimeFormatToFrame(WINE_MCIAVI* wma, DWORD val);
|
|
DWORD MCIAVI_mciGetDevCaps(UINT wDevID, DWORD dwFlags, LPMCI_GETDEVCAPS_PARMS lpParms);
|
|
DWORD MCIAVI_mciInfo(UINT wDevID, DWORD dwFlags, LPMCI_DGV_INFO_PARMSW lpParms);
|
|
DWORD MCIAVI_mciSet(UINT wDevID, DWORD dwFlags, LPMCI_DGV_SET_PARMS lpParms);
|
|
DWORD MCIAVI_mciStatus(UINT wDevID, DWORD dwFlags, LPMCI_DGV_STATUS_PARMSW lpParms);
|
|
|
|
/* mmoutput.c */
|
|
BOOL MCIAVI_GetInfo(WINE_MCIAVI* wma);
|
|
DWORD MCIAVI_OpenAudio(WINE_MCIAVI* wma, unsigned* nHdr, LPWAVEHDR* pWaveHdr);
|
|
BOOL MCIAVI_OpenVideo(WINE_MCIAVI* wma);
|
|
void MCIAVI_PlayAudioBlocks(WINE_MCIAVI* wma, unsigned nHdr, LPWAVEHDR waveHdr);
|
|
LRESULT MCIAVI_PaintFrame(WINE_MCIAVI* wma, HDC hDC);
|
|
|
|
/* mciavi.c */
|
|
WINE_MCIAVI* MCIAVI_mciGetOpenDev(UINT wDevID);
|
|
DWORD MCIAVI_mciClose(UINT, DWORD, LPMCI_GENERIC_PARMS);
|
|
|
|
/* wnd.c */
|
|
BOOL MCIAVI_RegisterClass(void);
|
|
BOOL MCIAVI_UnregisterClass(void);
|
|
BOOL MCIAVI_CreateWindow(WINE_MCIAVI* wma, DWORD dwFlags, LPMCI_DGV_OPEN_PARMSW lpOpenParms);
|
|
DWORD MCIAVI_mciPut(UINT wDevID, DWORD dwFlags, LPMCI_DGV_PUT_PARMS lpParms);
|
|
DWORD MCIAVI_mciWhere(UINT wDevID, DWORD dwFlags, LPMCI_DGV_RECT_PARMS lpParms);
|
|
DWORD MCIAVI_mciWindow(UINT wDevID, DWORD dwFlags, LPMCI_DGV_WINDOW_PARMSW lpParms);
|
|
|
|
#endif /* __WINE_PRIVATE_MCIAVI_H */
|