68 WARN(
"Invalid wDevID=%u\n", wDevID);
128 TRACE(
"(%04lx)\n", dwDevID);
144 return (dwDevID == 0xFFFFFFFF) ? 1 : 0;
154 TRACE(
"(%04lx)\n", dwDevID);
185 ERR(
"Failed to get video size, hr %#lx.\n",
hr);
200 TRACE(
"device %#x, flags %#lx, style %#lx, parent %p, dimensions %ldx%ld, created window %p.\n",
210 IVideoWindow_put_MessageDrain(wma->
vidwin, (OAHWND)wma->
window);
211 IVideoWindow_put_Owner(wma->
vidwin, (OAHWND)wma->
window);
253 TRACE(
"(%04x, %08lX, %p)\n", wDevID,
dwFlags, lpOpenParms);
269 TRACE(
"Cannot create filtergraph (hr = %lx)\n",
hr);
275 TRACE(
"Cannot get IMediaControl interface (hr = %lx)\n",
hr);
279 hr = IGraphBuilder_QueryInterface(wma->
pgraph, &IID_IMediaSeeking, (
void**)&wma->
seek);
281 TRACE(
"Cannot get IMediaSeeking interface (hr = %lx)\n",
hr);
285 hr = IGraphBuilder_QueryInterface(wma->
pgraph, &IID_IMediaEvent, (
void**)&wma->
mevent);
287 TRACE(
"Cannot get IMediaEvent interface (hr = %lx)\n",
hr);
291 hr = IGraphBuilder_QueryInterface(wma->
pgraph, &IID_IVideoWindow, (
void**)&wma->
vidwin);
293 TRACE(
"Cannot get IVideoWindow interface (hr = %lx)\n",
hr);
297 hr = IGraphBuilder_QueryInterface(wma->
pgraph, &IID_IBasicVideo, (
void**)&wma->
vidbasic);
299 TRACE(
"Cannot get IBasicVideo interface (hr = %lx)\n",
hr);
303 hr = IGraphBuilder_QueryInterface(wma->
pgraph, &IID_IBasicAudio, (
void**)&wma->
audio);
305 TRACE(
"Cannot get IBasicAudio interface (hr = %lx)\n",
hr);
315 TRACE(
"Invalid filename specified\n");
323 TRACE(
"Cannot render file (hr = %lx)\n",
hr);
338 IBasicAudio_Release(wma->
audio);
344 IMediaSeeking_Release(wma->
seek);
347 IVideoWindow_Release(wma->
vidwin);
350 IGraphBuilder_Release(wma->
pgraph);
353 IMediaEvent_Release(wma->
mevent);
356 IMediaControl_Release(wma->
pmctrl);
384 IVideoWindow_put_MessageDrain(wma->
vidwin, (OAHWND)
NULL);
385 IVideoWindow_put_Owner(wma->
vidwin, (OAHWND)
NULL);
389 IVideoWindow_Release(wma->
vidwin);
391 IBasicAudio_Release(wma->
audio);
392 IMediaSeeking_Release(wma->
seek);
393 IMediaEvent_Release(wma->
mevent);
394 IGraphBuilder_Release(wma->
pgraph);
395 IMediaControl_Release(wma->
pmctrl);
415 IMediaEvent_GetEventHandle(wma->
mevent, (OAEVENT *)&
handle[
n++]);
423 TRACE(
"got stop event\n");
433 hr = IMediaEvent_GetEvent(wma->
mevent, &event_code, &p1, &p2, 0);
435 TRACE(
"got event_code = 0x%02lx\n", event_code);
436 IMediaEvent_FreeEventParams(wma->
mevent, event_code, p1, p2);
442 TRACE(
"repeat media as requested\n");
443 IMediaControl_Stop(wma->
pmctrl);
444 IMediaSeeking_SetPositions(wma->
seek,
449 IMediaControl_Run(wma->
pmctrl);
459 TRACE(
"Unknown error (%d)\n", (
int)
r);
464 hr = IMediaControl_Stop(wma->
pmctrl);
466 TRACE(
"Cannot stop filtergraph (hr = %lx)\n",
hr);
501 IMediaSeeking_GetTimeFormat(wma->
seek, &
format);
520 IMediaSeeking_SetPositions(wma->
seek, &wma->
seek_start, start_flags,
523 hr = IMediaControl_Run(wma->
pmctrl);
525 TRACE(
"Cannot run filtergraph (hr = %lx)\n",
hr);
536 TRACE(
"Can't create thread\n");
566 FIXME(
"MCI_SEEK_TO_END not implemented yet\n");
569 FIXME(
"MCI_TO not implemented yet\n");
572 WARN(
"dwFlag doesn't tell where to seek to...\n");
578 FIXME(
"Cannot set position (hr = %lx)\n",
hr);
628 hr = IMediaControl_Pause(wma->
pmctrl);
630 TRACE(
"Cannot pause filtergraph (hr = %lx)\n",
hr);
651 hr = IMediaControl_Run(wma->
pmctrl);
653 TRACE(
"Cannot run filtergraph (hr = %lx)\n",
hr);
679 switch (lpParms->
dwItem) {
682 TRACE(
"MCI_GETDEVCAPS_CAN_RECORD = %08lx\n", lpParms->
dwReturn);
686 TRACE(
"MCI_GETDEVCAPS_HAS_AUDIO = %08lx\n", lpParms->
dwReturn);
690 TRACE(
"MCI_GETDEVCAPS_HAS_VIDEO = %08lx\n", lpParms->
dwReturn);
694 TRACE(
"MCI_GETDEVCAPS_DEVICE_TYPE = %08lx\n", lpParms->
dwReturn);
698 TRACE(
"MCI_GETDEVCAPS_USES_FILES = %08lx\n", lpParms->
dwReturn);
702 TRACE(
"MCI_GETDEVCAPS_COMPOUND_DEVICE = %08lx\n", lpParms->
dwReturn);
710 TRACE(
"MCI_GETDEVCAPS_CAN_PLAY = %08lx\n", lpParms->
dwReturn);
714 TRACE(
"MCI_GETDEVCAPS_CAN_SAVE = %08lx\n", lpParms->
dwReturn);
718 TRACE(
"MCI_DGV_GETDEVCAPS_CAN_REVERSE = %08lx\n", lpParms->
dwReturn);
722 TRACE(
"MCI_DGV_GETDEVCAPS_CAN_STRETCH = %08lx\n", lpParms->
dwReturn);
726 TRACE(
"MCI_DGV_GETDEVCAPS_CAN_LOCK = %08lx\n", lpParms->
dwReturn);
730 TRACE(
"MCI_DGV_GETDEVCAPS_CAN_FREEZE = %08lx\n", lpParms->
dwReturn);
734 TRACE(
"MCI_DGV_GETDEVCAPS_CAN_STRETCH_INPUT = %08lx\n", lpParms->
dwReturn);
738 TRACE(
"MCI_DGV_GETDEVCAPS_HAS_STILL = %08lx\n", lpParms->
dwReturn);
742 TRACE(
"MCI_DGV_GETDEVCAPS_CAN_TEST = %08lx\n", lpParms->
dwReturn);
746 TRACE(
"MCI_DGV_GETDEVCAPS_MAX_WINDOWS = %lu\n", lpParms->
dwReturn);
749 WARN(
"Unknown capability %08lx\n", lpParms->
dwItem);
778 TRACE(
"MCI_SET_TIME_FORMAT = MCI_FORMAT_MILLISECONDS\n");
782 TRACE(
"MCI_SET_TIME_FORMAT = MCI_FORMAT_FRAMES\n");
792 FIXME(
"MCI_SET_DOOR_OPEN not implemented yet\n");
794 FIXME(
"MCI_SET_DOOR_CLOSED not implemented yet\n");
796 FIXME(
"MCI_SET_AUDIO not implemented yet\n");
798 FIXME(
"MCI_SET_VIDEO not implemented yet\n");
800 FIXME(
"MCI_SET_ON not implemented yet\n");
802 FIXME(
"MCI_SET_OFF not implemented yet\n");
804 FIXME(
"MCI_SET_AUDIO_LEFT not implemented yet\n");
806 FIXME(
"MCI_SET_AUDIO_RIGHT not implemented yet\n");
809 ERR(
"Unknown flags %08lx\n",
dwFlags & ~0x7f03);
833 WARN(
"No status item specified\n");
837 switch (lpParms->
dwItem) {
848 FIXME(
"Cannot set time format (hr = %lx)\n",
hr);
852 hr = IMediaSeeking_GetDuration(wma->
seek, &duration);
854 FIXME(
"Cannot read duration (hr = %lx)\n",
hr);
859 lpParms->
dwReturn = duration / 10000;
865 hr = IMediaSeeking_GetCurrentPosition(wma->
seek, &curpos);
867 FIXME(
"Cannot get position (hr = %lx)\n",
hr);
874 FIXME(
"MCI_STATUS_NUMBER_OF_TRACKS not implemented yet\n");
879 if (
state == State_Stopped)
881 else if (
state == State_Running) {
885 }
else if (
state == State_Paused)
891 FIXME(
"MCI_STATUS_MEDIA_PRESENT not implemented yet\n");
899 FIXME(
"MCI_STATUS_READY not implemented yet\n");
902 FIXME(
"MCI_STATUS_CURRENT_TRACK not implemented yet\n");
935 hr = IVideoWindow_get_Owner(wma->
vidwin, (OAHWND*)&
hWnd);
937 TRACE(
"No video stream, returning no window error\n");
943 FIXME(
"MCI_DGV_WHERE_SOURCE_MAX stub\n");
949 FIXME(
"MCI_DGV_WHERE_DESTINATION_MAX stub\n");
955 FIXME(
"MCI_DGV_WHERE_FRAME_MAX not supported yet\n");
957 FIXME(
"MCI_DGV_WHERE_FRAME not supported yet\n");
962 FIXME(
"MCI_DGV_WHERE_VIDEO_MAX not supported yet\n");
964 FIXME(
"MCI_DGV_WHERE_VIDEO not supported yet\n");
1010 TRACE(
"Setting parent window to %p.\n",
hwnd);
1015 IVideoWindow_put_MessageDrain(wma->
vidwin, (OAHWND)
hwnd);
1016 IVideoWindow_put_Owner(wma->
vidwin, (OAHWND)
hwnd);
1053 TRACE(
"(%04x, %08lX, %p)\n", wDevID,
dwFlags, lpParms);
1062 FIXME(
"No support for non-RECT MCI_PUT\n");
1073 hr = IVideoWindow_SetWindowPosition(wma->
vidwin,
1078 WARN(
"IVideoWindow_SetWindowPosition failed: 0x%lx\n",
hr);
1080 dwFlags &= ~MCI_DGV_PUT_DESTINATION;
1121 if (
state == State_Running)
1126 IVideoWindow_get_Visible(wma->
vidwin, &visible);
1130 IMediaControl_Pause(wma->
pmctrl);
1133 WARN(
"Could not get image size (hr = %lx)\n",
hr);
1151 IVideoWindow_put_Visible(wma->
vidwin, visible);
1166 TRACE(
"(%04x, %08lx, %p)\n", wDevID,
dwFlags, lpParms);
1181 switch (lpParms->
dwItem) {
1186 if (lpParms->
dwValue > 1000) {
1196 TRACE(
"Setting volume to %ld\n", vol);
1197 hr = IBasicAudio_put_Volume(wma->
audio, vol);
1199 WARN(
"Cannot set volume (hr = %lx)\n",
hr);
1223 TRACE(
"(%08IX, %p, %08X, %08IX, %08IX)\n",
1224 dwDevID, hDriv, wMsg, dwParam1, dwParam2);
1240 if (dwDevID == 0xFFFFFFFF)
1287 FIXME(
"Unimplemented command [%08X]\n", wMsg);
1291 WARN(
"Unsupported command [%08X]\n", wMsg);
1295 FIXME(
"Shouldn't receive a MCI_OPEN or CLOSE message\n");
1298 TRACE(
"Sending msg [%08X] to default driver proc\n", wMsg);
1299 return DefDriverProc(dwDevID, hDriv, wMsg, dwParam1, dwParam2);
static DWORD const fdwReason
static const char * wine_dbgstr_rect(const RECT *prc)
@ AM_SEEKING_NoPositioning
@ AM_SEEKING_AbsolutePositioning
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define MCI_DGV_SETAUDIO_ITEM
#define MCI_DGV_WHERE_WINDOW
#define MCI_DGV_GETDEVCAPS_HAS_STILL
#define MCI_DGV_GETDEVCAPS_CAN_STRETCH
#define MCI_DGV_PUT_DESTINATION
#define MCI_DGV_WHERE_FRAME
#define MCI_DGV_WHERE_VIDEO
#define MCI_DGV_SETAUDIO_VALUE
#define MCI_DGV_SETAUDIO_VOLUME
#define MCI_DGV_WINDOW_STATE
#define MCI_DGV_OPEN_PARENT
#define MCI_DGV_GETDEVCAPS_CAN_LOCK
#define MCI_DGV_WINDOW_TEXT
#define MCI_DGV_UPDATE_HDC
#define MCI_DGV_WINDOW_HWND
#define MCI_DGV_WHERE_SOURCE
#define MCI_DGV_GETDEVCAPS_MAX_WINDOWS
#define MCI_DGV_GETDEVCAPS_MINIMUM_RATE
#define MCI_DGV_GETDEVCAPS_CAN_STR_IN
#define MCI_DGV_GETDEVCAPS_CAN_TEST
#define MCI_DGV_WHERE_MAX
#define MCI_DGV_GETDEVCAPS_CAN_REVERSE
#define MCI_DGV_GETDEVCAPS_CAN_FREEZE
#define MCI_DGV_PLAY_REPEAT
#define MCI_DGV_GETDEVCAPS_MAXIMUM_RATE
#define MCI_DGV_WHERE_DESTINATION
HRESULT WINAPI DECLSPEC_HOTPATCH CoInitializeEx(void *reserved, DWORD model)
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
#define DLL_PROCESS_ATTACH
#define HeapFree(x, y, z)
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
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)
BOOL WINAPI mciFreeCommandResource(UINT uTable)
UINT WINAPI mciLoadCommandResource(HINSTANCE hInstance, LPCWSTR lpResName, UINT uType)
#define MCI_FORMAT_RETURN_BASE
#define MAKEMCIRESOURCE(wRet, wRes)
#define MCI_INTEGER_RETURNED
BOOL WINAPI mciDriverNotify(HWND hwndCallback, UINT uDeviceID, UINT uStatus)
#define MCI_RESOURCE_RETURNED
BOOL WINAPI mciSetDriverData(UINT uDeviceID, DWORD dwData)
DWORD WINAPI mciGetDriverData(UINT uDeviceID)
LRESULT WINAPI DefDriverProc(DWORD_PTR dwDriverIdentifier, HDRVR hDrv, UINT Msg, LPARAM lParam1, LPARAM lParam2)
#define InterlockedExchangePointer(Target, Value)
GLint GLint GLsizei GLsizei height
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLdouble GLdouble GLdouble r
GLint GLint GLsizei width
GLenum const GLfloat * params
static DWORD MCIQTZ_mciWindow(UINT wDevID, DWORD dwFlags, LPMCI_DGV_WINDOW_PARMSW lpParms)
static DWORD MCIQTZ_drvConfigure(DWORD dwDevID)
static DWORD MCIQTZ_mciPause(UINT wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpParms)
static const WCHAR mciqtz_class[]
static DWORD MCIQTZ_mciPut(UINT wDevID, DWORD dwFlags, MCI_GENERIC_PARMS *lpParms)
static void unregister_class(void)
static DWORD MCIQTZ_mciWhere(UINT wDevID, DWORD dwFlags, LPMCI_DGV_RECT_PARMS lpParms)
static DWORD MCIQTZ_mciResume(UINT wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpParms)
static HINSTANCE MCIQTZ_hInstance
static DWORD MCIQTZ_drvClose(DWORD dwDevID)
static WINE_MCIQTZ * MCIQTZ_mciGetOpenDev(UINT wDevID)
static DWORD MCIQTZ_mciSetAudio(UINT wDevID, DWORD dwFlags, LPMCI_DGV_SETAUDIO_PARMSW lpParms)
static void MCIQTZ_mciNotify(DWORD_PTR hWndCallBack, WINE_MCIQTZ *wma, UINT wStatus)
static DWORD CALLBACK MCIQTZ_notifyThread(LPVOID parm)
static DWORD MCIQTZ_mciSet(UINT wDevID, DWORD dwFlags, LPMCI_DGV_SET_PARMS lpParms)
static DWORD MCIQTZ_mciStop(UINT, DWORD, LPMCI_GENERIC_PARMS)
static DWORD MCIQTZ_mciGetDevCaps(UINT wDevID, DWORD dwFlags, LPMCI_GETDEVCAPS_PARMS lpParms)
static DWORD MCIQTZ_mciOpen(UINT wDevID, DWORD dwFlags, LPMCI_DGV_OPEN_PARMSW lpOpenParms)
LRESULT CALLBACK MCIQTZ_DriverProc(DWORD_PTR dwDevID, HDRVR hDriv, UINT wMsg, LPARAM dwParam1, LPARAM dwParam2)
static DWORD MCIQTZ_mciPlay(UINT wDevID, DWORD dwFlags, LPMCI_PLAY_PARMS lpParms)
BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID fImpLoad)
static DWORD MCIQTZ_mciUpdate(UINT wDevID, DWORD dwFlags, LPMCI_DGV_UPDATE_PARMS lpParms)
static DWORD MCIQTZ_mciStatus(UINT wDevID, DWORD dwFlags, LPMCI_DGV_STATUS_PARMSW lpParms)
static DWORD MCIQTZ_drvOpen(LPCWSTR str, LPMCI_OPEN_DRIVER_PARMSW modp)
static DWORD MCIQTZ_mciClose(UINT, DWORD, LPMCI_GENERIC_PARMS)
static bool register_class(void)
static DWORD MCIQTZ_mciSeek(UINT wDevID, DWORD dwFlags, LPMCI_SEEK_PARMS lpParms)
#define MCI_NOTIFY_SUPERSEDED
#define MCI_GETDEVCAPS_CAN_SAVE
#define MCI_GETDEVCAPS_HAS_VIDEO
#define MCI_STATUS_POSITION
#define DRV_QUERYCONFIGURE
#define MCI_OPEN_ELEMENT_ID
#define MCI_GETDEVCAPS_CAN_RECORD
#define MCI_FORMAT_MILLISECONDS
#define MCI_GETDEVCAPS_DEVICE_TYPE
#define MCIERR_UNRECOGNIZED_COMMAND
#define MCI_GETDEVCAPS_COMPOUND_DEVICE
#define MCI_SET_DOOR_OPEN
#define MCI_GETDEVCAPS_USES_FILES
#define MCI_GETDEVCAPS_CAN_PLAY
#define MCIERR_INVALID_DEVICE_ID
#define MCI_SET_TIME_FORMAT
#define MCI_GETDEVCAPS_CAN_EJECT
#define MCIERR_MISSING_PARAMETER
#define MCI_SET_AUDIO_RIGHT
#define MCIERR_NULL_PARAMETER_BLOCK
#define MCI_NOTIFY_ABORTED
#define MCIERR_OUTOFRANGE
#define MCI_STATUS_CURRENT_TRACK
#define MCI_STATUS_NUMBER_OF_TRACKS
#define MCI_SET_DOOR_CLOSED
#define MCI_DEVTYPE_DIGITAL_VIDEO
#define MCI_GETDEVCAPS_ITEM
#define MCI_STATUS_LENGTH
#define MCI_SET_AUDIO_LEFT
#define MCI_SEEK_TO_START
#define MCI_NOTIFY_SUCCESSFUL
#define MCI_STATUS_MEDIA_PRESENT
#define MCIERR_BAD_TIME_FORMAT
#define MCIERR_UNSUPPORTED_FUNCTION
#define MCI_FORMAT_FRAMES
#define MCI_STATUS_TIME_FORMAT
#define MCI_GETDEVCAPS_HAS_AUDIO
static HWND create_window(void)
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
#define WS_OVERLAPPEDWINDOW
#define IsEqualGUID(rguid1, rguid2)
BOOL WINAPI IsWindow(_In_opt_ HWND)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI AdjustWindowRect(_Inout_ LPRECT, _In_ DWORD, _In_ BOOL)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
int WINAPI MessageBoxA(_In_opt_ HWND hWnd, _In_opt_ LPCSTR lpText, _In_opt_ LPCSTR lpCaption, _In_ UINT uType)
ATOM WINAPI RegisterClassW(_In_ CONST WNDCLASSW *)
HCURSOR WINAPI LoadCursorW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
HWND WINAPI GetDesktopWindow(void)
BOOL WINAPI SetWindowTextW(_In_ HWND, _In_opt_ LPCWSTR)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
#define CreateWindowW(a, b, c, d, e, f, g, h, i, j, k)
BOOL WINAPI UnregisterClassW(_In_ LPCWSTR, HINSTANCE)
BOOL WINAPI DestroyWindow(_In_ HWND)
int WINAPI GetSystemMetrics(_In_ int)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
REFERENCE_TIME seek_start
DWORD WINAPI WaitForMultipleObjects(IN DWORD nCount, IN CONST HANDLE *lpHandles, IN BOOL bWaitAll, IN DWORD dwMilliseconds)
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
BOOL WINAPI DECLSPEC_HOTPATCH ResetEvent(IN HANDLE hEvent)
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
DWORD WINAPI GetLastError(void)
#define ERROR_CLASS_ALREADY_EXISTS
int WINAPI StretchDIBits(_In_ HDC, _In_ int, _In_ int, _In_ int, _In_ int, _In_ int, _In_ int, _In_ int, _In_ int, _In_opt_ const VOID *, _In_ const BITMAPINFO *, _In_ UINT, _In_ DWORD)