74 static const WCHAR mciAviWStr[] = {
'M',
'C',
'I',
'A',
'V',
'I',0};
79 if (!modp)
return 0xFFFFFFFF;
107 TRACE(
"%04x\n", dwDevID);
131 return (dwDevID == 0xFFFFFFFF) ? 1 : 0;
141 TRACE(
"%04x\n", dwDevID);
162 WARN(
"Invalid wDevID=%u\n", wDevID);
218 TRACE(
"(%04x, %08X, %p)\n", wDevID,
dwFlags, lpOpenParms);
267 if (wma->
hFile == 0) {
279 FIXME(
"Don't record yet\n");
351 unsigned i, nHdr = 0;
354 double next_frame_us;
394 while(next_frame_us <= tc && wma->dwCurrVideoFrame < wma->dwToVideoFrame){
400 next_frame_us += dur;
401 TRACE(
"next_frame: %f\n", next_frame_us);
409 TRACE(
"repeat media as requested\n");
417 if (
tc < next_frame_us)
418 delta = next_frame_us -
tc;
433 TRACE(
"playback cancelled using break key\n");
459 for (
i = 0;
i < nHdr;
i++)
507 TRACE(
"In thread before async play command (id %u, flags %08x)\n",
data->wma->wDevID,
data->flags);
509 TRACE(
"In thread after async play command (id %u, flags %08x)\n",
data->wma->wDevID,
data->flags);
532 WARN(
"Couldn't create thread for async play, playing synchronously\n");
547 DWORD dwFromFrame, dwToFrame;
586 TRACE(
"Playing from frame=%u to frame=%u\n", dwFromFrame, dwToFrame);
793 FIXME(
"(%04x, %08x, %p) : stub\n", wDevID,
dwFlags, lpParms);
810 FIXME(
"(%04x, %08x, %p) : stub\n", wDevID,
dwFlags, lpParms);
890 FIXME(
"(%04x, %08x, %p) : stub\n", wDevID,
dwFlags, lpParms);
950 FIXME(
"(%04x, %08x, %p) : stub\n", wDevID,
dwFlags, lpParms);
984 FIXME(
"(%04x, %08x, %p) : stub\n", wDevID,
dwFlags, lpParms);
1005 TRACE(
"(%08lX, %p, %08X, %08lX, %08lX)\n",
1006 dwDevID, hDriv, wMsg, dwParam1, dwParam2);
1022 if (dwDevID == 0xFFFFFFFF)
return 1;
1067 TRACE(
"Unsupported function [0x%x] flags=%08x\n", wMsg, (
DWORD)dwParam1);
1071 WARN(
"Unsupported command [0x%x] %08x\n", wMsg, (
DWORD)dwParam1);
1075 FIXME(
"Shouldn't receive a MCI_OPEN or CLOSE message\n");
1078 TRACE(
"Sending msg [%u] to default driver proc\n", wMsg);
1079 return DefDriverProc(dwDevID, hDriv, wMsg, dwParam1, dwParam2);
static DWORD MCIAVI_mciUpdate(UINT wDevID, DWORD dwFlags, LPMCI_DGV_UPDATE_PARMS lpParms)
BOOL WINAPI mciSetDriverData(UINT uDeviceID, DWORD dwData)
#define MCI_DGV_SETVIDEO_ITEM
static void MCIAVI_CleanUp(WINE_MCIAVI *wma)
#define MCIERR_INVALID_FILE
DWORD WINAPI mciGetDriverData(UINT uDeviceID)
#define MCI_MCIAVI_PLAY_WINDOW
namespace GUID const ADDRINFOEXW ADDRINFOEXW struct timeval OVERLAPPED LPLOOKUPSERVICE_COMPLETION_ROUTINE HANDLE * handle
static DWORD MCIAVI_drvConfigure(DWORD dwDevID)
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
static DWORD MCIAVI_player(WINE_MCIAVI *wma, DWORD dwFlags, LPMCI_PLAY_PARMS lpParms)
#define MCIERR_CANNOT_LOAD_DRIVER
BOOL MCIAVI_UnregisterClass(void) DECLSPEC_HIDDEN
DWORD MCIAVI_mciWindow(UINT wDevID, DWORD dwFlags, LPMCI_DGV_WINDOW_PARMSW lpParms) DECLSPEC_HIDDEN
HDC WINAPI GetDC(_In_opt_ HWND)
#define MCI_DGV_PLAY_REVERSE
static DWORD MCIAVI_mciOpen(UINT wDevID, DWORD dwFlags, LPMCI_DGV_OPEN_PARMSW lpOpenParms)
#define MCIERR_UNSUPPORTED_FUNCTION
LPWAVEFORMATEX lpWaveFormat
#define MCI_DEVTYPE_DIGITAL_VIDEO
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
AVIStreamHeader ash_audio
#define MCI_DGV_SETAUDIO_ITEM
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
BOOL WINAPI DeleteObject(_In_ HGDIOBJ)
UINT WINAPI mciLoadCommandResource(HINSTANCE hInstance, LPCWSTR lpResName, UINT uType)
MMRESULT WINAPI mmioClose(HMMIO hmmio, UINT uFlags)
#define DLL_PROCESS_ATTACH
#define MCI_DGV_UPDATE_HDC
HMMIO WINAPI mmioOpenW(LPWSTR szFileName, MMIOINFO *lpmmioinfo, DWORD dwOpenFlags)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
DWORD WINAPI WaitForMultipleObjects(IN DWORD nCount, IN CONST HANDLE *lpHandles, IN BOOL bWaitAll, IN DWORD dwMilliseconds)
BOOL WINAPI DestroyWindow(_In_ HWND)
DWORD MCIAVI_mciPut(UINT wDevID, DWORD dwFlags, LPMCI_DGV_PUT_PARMS lpParms) DECLSPEC_HIDDEN
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
DWORD MCIAVI_mciWhere(UINT wDevID, DWORD dwFlags, LPMCI_DGV_RECT_PARMS lpParms) DECLSPEC_HIDDEN
#define DRV_QUERYCONFIGURE
#define MCI_MCIAVI_PLAY_FULLBY2
DWORD MCIAVI_ConvertTimeFormatToFrame(WINE_MCIAVI *wma, DWORD val)
int WINAPI MessageBoxA(_In_opt_ HWND, _In_opt_ LPCSTR, _In_opt_ LPCSTR, _In_ UINT)
BOOL WINAPI mciDriverNotify(HWND hwndCallback, UINT uDeviceID, UINT uStatus)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
static DWORD MCIAVI_mciPause(UINT wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpParms)
#define MCI_FORMAT_FRAMES
DWORD MCIAVI_mciSet(UINT wDevID, DWORD dwFlags, LPMCI_DGV_SET_PARMS lpParms)
#define MCI_OPEN_ELEMENT_ID
#define MCIERR_FLAGS_NOT_COMPATIBLE
LRESULT WINAPI ICClose(HIC hic)
DWORD MCIAVI_mciGetDevCaps(UINT wDevID, DWORD dwFlags, LPMCI_GETDEVCAPS_PARMS lpParms)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
#define CreateWindowA(a, b, c, d, e, f, g, h, i, j, k)
AVIStreamHeader ash_video
LONG WINAPI GetWindowLongW(_In_ HWND, _In_ int)
BOOL WINAPI QueryPerformanceFrequency(OUT PLARGE_INTEGER lpFrequency)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
DWORD MCIAVI_mciStatus(UINT wDevID, DWORD dwFlags, LPMCI_DGV_STATUS_PARMSW lpParms)
#define MCIERR_MISSING_PARAMETER
BOOL MCIAVI_GetInfo(WINE_MCIAVI *wma)
static DWORD MCIAVI_mciResume(UINT wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpParms)
BOOL WINAPI SetThreadPriority(IN HANDLE hThread, IN int nPriority)
#define MCI_DGV_PLAY_REPEAT
#define MCIERR_OUT_OF_MEMORY
static DWORD MCIAVI_drvOpen(LPCWSTR str, LPMCI_OPEN_DRIVER_PARMSW modp)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
WINE_DEFAULT_DEBUG_CHANNEL(mciavi)
UINT WINAPI waveOutPause(HWAVEOUT hWaveOut)
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
#define MCI_OPEN_SHAREABLE
static DWORD MCIAVI_mciSetVideo(UINT wDevID, DWORD dwFlags, LPMCI_DGV_SETVIDEO_PARMSW lpParms)
static DWORD MCIAVI_mciPlay(UINT wDevID, DWORD dwFlags, LPMCI_PLAY_PARMS lpParms)
static DWORD MCIAVI_drvClose(DWORD dwDevID)
DWORD MCIAVI_mciInfo(UINT wDevID, DWORD dwFlags, LPMCI_DGV_INFO_PARMSW lpParms)
BOOL WINAPI mciFreeCommandResource(UINT uTable)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
#define MCIERR_CREATEWINDOW
#define MCI_DGV_STEP_FRAMES
PCRITICAL_SECTION_DEBUG DebugInfo
#define MCI_NOTIFY_SUCCESSFUL
static DWORD MCIAVI_mciRealize(UINT wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpParms)
BOOL WINAPI QueryPerformanceCounter(OUT PLARGE_INTEGER lpPerformanceCount)
#define THREAD_PRIORITY_TIME_CRITICAL
static DWORD MCIAVI_mciConfigure(UINT wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpParms)
static DWORD MCIAVI_mciPlay_async(WINE_MCIAVI *wma, DWORD dwFlags, LPMCI_PLAY_PARMS lpParams)
LPBITMAPINFOHEADER outbih
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
SHORT WINAPI GetAsyncKeyState(_In_ int)
#define MCI_MCIAVI_PLAY_FULLSCREEN
struct WINE_MCIAVI::@449 mci_break
#define MCIERR_OUTOFRANGE
static DWORD MCIAVI_mciStop(UINT, DWORD, LPMCI_GENERIC_PARMS)
UINT WINAPI waveOutUnprepareHeader(HWAVEOUT hWaveOut, LPWAVEHDR lpWaveOutHdr, UINT uSize)
#define MCI_SEEK_TO_START
static DWORD MCIAVI_mciCue(UINT wDevID, DWORD dwFlags, LPMCI_DGV_CUE_PARMS lpParms)
#define MCI_DGV_STEP_REVERSE
static DWORD MCIAVI_mciSeek(UINT wDevID, DWORD dwFlags, LPMCI_SEEK_PARMS lpParms)
struct MMIOPos * lpVideoIndex
WINE_MCIAVI * MCIAVI_mciGetOpenDev(UINT wDevID)
BOOL WINAPI GetMonitorInfoA(_In_ HMONITOR, _Inout_ LPMONITORINFO)
static double currenttime_us(void)
#define MCIERR_FILE_NOT_FOUND
BOOL MCIAVI_OpenVideo(WINE_MCIAVI *wma)
DWORD MCIAVI_mciClose(UINT wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpParms)
#define MCI_MODE_NOT_READY
static DWORD WINAPI MCIAVI_mciPlay_thread(LPVOID arg)
HMONITOR WINAPI MonitorFromWindow(HWND, DWORD)
HINSTANCE MCIAVI_hInstance
BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID fImpLoad)
UINT WINAPI waveOutClose(HWAVEOUT hWaveOut)
HWND WINAPI GetForegroundWindow(void)
#define MCI_DGV_CUE_INPUT
UINT WINAPI waveOutRestart(HWAVEOUT hWaveOut)
#define MCIERR_UNRECOGNIZED_COMMAND
static DWORD MCIAVI_mciBreak(UINT wDevID, DWORD dwFlags, LPMCI_BREAK_PARMS lpParms)
DWORD dwPlayableVideoFrames
static DWORD MCIAVI_mciSignal(UINT wDevID, DWORD dwFlags, LPMCI_DGV_SIGNAL_PARMS lpParms)
LRESULT WINAPI DefDriverProc(DWORD_PTR dwDriverIdentifier, HDRVR hDrv, UINT Msg, LPARAM lParam1, LPARAM lParam2)
struct MMIOPos * lpAudioIndex
static DWORD MCIAVI_mciSetAudio(UINT wDevID, DWORD dwFlags, LPMCI_DGV_SETAUDIO_PARMSW lpParms)
#define MCIERR_MUST_USE_SHAREABLE
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
static DWORD MCIAVI_mciLoad(UINT wDevID, DWORD dwFlags, LPMCI_DGV_LOAD_PARMSW lpParms)
#define MCIERR_INVALID_DEVICE_ID
BOOL MCIAVI_CreateWindow(WINE_MCIAVI *wma, DWORD dwFlags, LPMCI_DGV_OPEN_PARMSW lpOpenParms) DECLSPEC_HIDDEN
#define MCIERR_NULL_PARAMETER_BLOCK
static DWORD MCIAVI_mciStep(UINT wDevID, DWORD dwFlags, LPMCI_DGV_STEP_PARMS lpParms)
UINT WINAPI waveOutReset(HWAVEOUT hWaveOut)
#define HeapFree(x, y, z)
void MCIAVI_PlayAudioBlocks(WINE_MCIAVI *wma, unsigned nHdr, LPWAVEHDR waveHdr)
double MCIAVI_PaintFrame(WINE_MCIAVI *wma, HDC hDC)
DWORD_PTR Spare[8/sizeof(DWORD_PTR)]
LRESULT CALLBACK MCIAVI_DriverProc(DWORD_PTR dwDevID, HDRVR hDriv, UINT wMsg, LPARAM dwParam1, LPARAM dwParam2)
DWORD MCIAVI_OpenAudio(WINE_MCIAVI *wma, unsigned *nHdr, LPWAVEHDR *pWaveHdr)
BOOL MCIAVI_RegisterClass(void) DECLSPEC_HIDDEN