mirror of
https://github.com/reactos/reactos.git
synced 2024-12-30 19:14:31 +00:00
[MCOQTZ32]
* Sync to Wine 1.5.4. svn path=/trunk/; revision=56619
This commit is contained in:
parent
de62bc1e0f
commit
3323409676
5 changed files with 791 additions and 171 deletions
|
@ -6,13 +6,12 @@ spec2def(mciqtz32.dll mciqtz32.spec)
|
|||
|
||||
list(APPEND SOURCE
|
||||
mciqtz.c
|
||||
mciavi_res.rc
|
||||
version.rc
|
||||
${CMAKE_CURRENT_BINARY_DIR}/mciqtz32.def)
|
||||
|
||||
add_library(mciqtz32 SHARED ${SOURCE})
|
||||
|
||||
set_module_type(mciqtz32 win32dll)
|
||||
|
||||
target_link_libraries(mciqtz32 wine strmiids)
|
||||
add_importlibs(mciqtz32 winmm oleaut32 ole32 user32 gdi32 msvcrt kernel32 ntdll)
|
||||
add_cd_file(TARGET mciqtz32 DESTINATION reactos/system32 FOR all)
|
||||
|
|
579
reactos/dll/win32/mciqtz32/mciavi_res.rc
Normal file
579
reactos/dll/win32/mciqtz32/mciavi_res.rc
Normal file
|
@ -0,0 +1,579 @@
|
|||
/* MciAvi resources
|
||||
*
|
||||
* Copyright (c) 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
|
||||
*/
|
||||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "mmddk.h"
|
||||
#include "digitalv.h"
|
||||
|
||||
#ifdef MCI_INTEGER64
|
||||
#define MCI_DWORD_PTR MCI_INTEGER64
|
||||
#else
|
||||
#define MCI_DWORD_PTR MCI_INTEGER
|
||||
#endif
|
||||
|
||||
MCIAVI RCDATA
|
||||
BEGIN
|
||||
L"play\0", MCI_PLAY, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"from\0", 0x00000004L, MCI_INTEGER,
|
||||
L"to\0", 0x00000008L, MCI_INTEGER,
|
||||
L"repeat\0", 0x00010000L, MCI_FLAG,
|
||||
L"reverse\0", 0x00020000L, MCI_FLAG,
|
||||
L"window\0", 0x01000000L, MCI_FLAG,
|
||||
L"fullscreen by 2\0", 0x04000000L, MCI_FLAG,
|
||||
L"fullscreen\0", 0x02000000L, MCI_FLAG,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"capability\0", MCI_GETDEVCAPS, 0, MCI_COMMAND_HEAD,
|
||||
L"\0", MCI_INTEGER, 0, MCI_RETURN,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"\0", 0x00000100L, MCI_CONSTANT,
|
||||
L"can record\0", 0x00000001L, MCI_INTEGER,
|
||||
L"has audio\0", 0x00000002L, MCI_INTEGER,
|
||||
L"has video\0", 0x00000003L, MCI_INTEGER,
|
||||
L"uses files\0", 0x00000005L, MCI_INTEGER,
|
||||
L"compound device\0", 0x00000006L, MCI_INTEGER,
|
||||
L"device type\0", 0x00000004L, MCI_INTEGER,
|
||||
L"can eject\0", 0x00000007L, MCI_INTEGER,
|
||||
L"can play\0", 0x00000008L, MCI_INTEGER,
|
||||
L"can save\0", 0x00000009L, MCI_INTEGER,
|
||||
L"can lock\0", 0x00004000L, MCI_INTEGER,
|
||||
L"can reverse\0", 0x00004004L, MCI_INTEGER,
|
||||
L"can stretch input\0", 0x00004008L, MCI_INTEGER,
|
||||
L"can stretch\0", 0x00004001L, MCI_INTEGER,
|
||||
L"can test\0", 0x00004009L, MCI_INTEGER,
|
||||
L"has still\0", 0x00004005L, MCI_INTEGER,
|
||||
L"can freeze\0", 0x00004002L, MCI_INTEGER,
|
||||
L"uses palettes\0", 0x00004006L, MCI_INTEGER,
|
||||
L"windows\0", 0x00004003L, MCI_INTEGER,
|
||||
L"maximum play rate\0", 0x0000400aL, MCI_INTEGER,
|
||||
L"minimum play rate\0", 0x0000400bL, MCI_INTEGER,
|
||||
L"can colorkey\0", 0x00004100L, MCI_INTEGER,
|
||||
L"\0", 0x00000000L, MCI_END_CONSTANT,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"capture\0", MCI_CAPTURE, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"as\0", 0x00010000L, MCI_STRING,
|
||||
L"at\0", 0x00020000L, MCI_RECT,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"close\0", MCI_CLOSE, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"configure\0", MCI_CONFIGURE, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"copy\0", MCI_COPY, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"from\0", 0x00000004L, MCI_INTEGER,
|
||||
L"to\0", 0x00000008L, MCI_INTEGER,
|
||||
L"at\0", 0x00010000L, MCI_RECT,
|
||||
L"audio stream\0", 0x00020000L, MCI_INTEGER,
|
||||
L"video stream\0", 0x00040000L, MCI_INTEGER,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"cue\0", MCI_CUE, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"input\0", 0x00010000L, MCI_FLAG,
|
||||
L"output\0", 0x00020000L, MCI_FLAG,
|
||||
L"to\0", 0x00000008L, MCI_INTEGER,
|
||||
L"noshow\0", 0x00040000L, MCI_FLAG,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"cut\0", MCI_CUT, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"from\0", 0x00000004L, MCI_INTEGER,
|
||||
L"to\0", 0x00000008L, MCI_INTEGER,
|
||||
L"at\0", 0x00010000L, MCI_RECT,
|
||||
L"audio stream\0", 0x00020000L, MCI_INTEGER,
|
||||
L"video stream\0", 0x00040000L, MCI_INTEGER,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"delete\0", MCI_DELETE, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"from\0", 0x00000004L, MCI_INTEGER,
|
||||
L"to\0", 0x00000008L, MCI_INTEGER,
|
||||
L"at\0", 0x00010000L, MCI_RECT,
|
||||
L"audio stream\0", 0x00020000L, MCI_INTEGER,
|
||||
L"video stream\0", 0x00040000L, MCI_INTEGER,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"freeze\0", MCI_FREEZE, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"at\0", 0x00010000L, MCI_RECT,
|
||||
L"outside\0", 0x00020000L, MCI_FLAG,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"info\0", MCI_INFO, 0, MCI_COMMAND_HEAD,
|
||||
L"\0", MCI_STRING, 0, MCI_RETURN,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"file\0", 0x00000200L, MCI_FLAG,
|
||||
L"product\0", 0x00000100L, MCI_FLAG,
|
||||
L"window text\0", 0x00010000L, MCI_FLAG,
|
||||
L"usage\0", 0x00004000L, MCI_FLAG,
|
||||
L"version\0", 0x00000400L, MCI_FLAG,
|
||||
L"\0", 0x00020000L, MCI_CONSTANT,
|
||||
L"audio algorithm\0", 0x00004004L, MCI_INTEGER,
|
||||
L"audio quality\0", 0x00004001L, MCI_INTEGER,
|
||||
L"still algorithm\0", 0x00004005L, MCI_INTEGER,
|
||||
L"still quality\0", 0x00004002L, MCI_INTEGER,
|
||||
L"video algorithm\0", 0x00004006L, MCI_INTEGER,
|
||||
L"video quality\0", 0x00004003L, MCI_INTEGER,
|
||||
L"\0", 0x00000000L, MCI_END_CONSTANT,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"list\0", MCI_LIST, 0, MCI_COMMAND_HEAD,
|
||||
L"\0", MCI_STRING, 0, MCI_RETURN,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"count\0", 0x00020000L, MCI_FLAG,
|
||||
L"number\0", 0x00040000L, MCI_INTEGER,
|
||||
L"\0", 0x00010000L, MCI_CONSTANT,
|
||||
L"audio algorithm\0", 0x00004000L, MCI_INTEGER,
|
||||
L"audio quality\0", 0x00004001L, MCI_INTEGER,
|
||||
L"audio stream\0", 0x00004002L, MCI_INTEGER,
|
||||
L"still algorithm\0", 0x00004003L, MCI_INTEGER,
|
||||
L"still quality\0", 0x00004004L, MCI_INTEGER,
|
||||
L"video algorithm\0", 0x00004005L, MCI_INTEGER,
|
||||
L"video quality\0", 0x00004006L, MCI_INTEGER,
|
||||
L"video source\0", 0x00004008L, MCI_INTEGER,
|
||||
L"video stream\0", 0x00004007L, MCI_INTEGER,
|
||||
L"\0", 0x00000000L, MCI_END_CONSTANT,
|
||||
L"algorithm\0", 0x00080000L, MCI_STRING,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"load\0", MCI_LOAD, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"\0", 0x00000100L, MCI_STRING,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"monitor\0", MCI_MONITOR, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"\0", 0x00020000L, MCI_CONSTANT,
|
||||
L"input\0", 0x00004000L, MCI_INTEGER,
|
||||
L"file\0", 0x00004001L, MCI_INTEGER,
|
||||
L"\0", 0x00000000L, MCI_END_CONSTANT,
|
||||
L"method\0", 0x00010000L, MCI_CONSTANT,
|
||||
L"pre\0", 0x0000a000L, MCI_INTEGER,
|
||||
L"post\0", 0x0000a001L, MCI_INTEGER,
|
||||
L"direct\0", 0x0000a002L, MCI_INTEGER,
|
||||
L"\0", 0x00000000L, MCI_END_CONSTANT,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"open\0", MCI_OPEN, 0, MCI_COMMAND_HEAD,
|
||||
L"\0", MCI_INTEGER, 0, MCI_RETURN,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"type\0", 0x00002000L, MCI_STRING,
|
||||
L"element\0", 0x00000200L, MCI_STRING,
|
||||
L"alias\0", 0x00000400L, MCI_STRING,
|
||||
L"shareable\0", 0x00000100L, MCI_FLAG,
|
||||
L"style\0", 0x00010000L, MCI_CONSTANT,
|
||||
L"overlapped\0", 0x00cf0000L, MCI_INTEGER,
|
||||
L"popup\0", 0x80880000L, MCI_INTEGER,
|
||||
L"child\0", 0x40000000L, MCI_INTEGER,
|
||||
L"\0", 0x00000000L, MCI_END_CONSTANT,
|
||||
L"parent\0", 0x00020000L, MCI_HWND,
|
||||
L"nostatic\0", 0x00040000L, MCI_FLAG,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"paste\0", MCI_PASTE, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"to\0", 0x00000008L, MCI_INTEGER,
|
||||
L"at\0", 0x00010000L, MCI_RECT,
|
||||
L"insert\0", 0x00080000L, MCI_FLAG,
|
||||
L"overwrite\0", 0x00100000L, MCI_FLAG,
|
||||
L"audio stream\0", 0x00020000L, MCI_INTEGER,
|
||||
L"video stream\0", 0x00040000L, MCI_INTEGER,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"pause\0", MCI_PAUSE, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"put\0", MCI_PUT, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"at\0", 0x00010000L, MCI_RECT,
|
||||
L"source\0", 0x00020000L, MCI_FLAG,
|
||||
L"destination\0", 0x00040000L, MCI_FLAG,
|
||||
L"frame\0", 0x00080000L, MCI_FLAG,
|
||||
L"video\0", 0x00100000L, MCI_FLAG,
|
||||
L"window\0", 0x00200000L, MCI_FLAG,
|
||||
L"client\0", 0x00400000L, MCI_FLAG,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"quality\0", MCI_QUALITY, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"\0", 0x00010000L, MCI_CONSTANT,
|
||||
L"audio\0", 0x00004000L, MCI_INTEGER,
|
||||
L"still\0", 0x00004001L, MCI_INTEGER,
|
||||
L"video\0", 0x00004002L, MCI_INTEGER,
|
||||
L"\0", 0x00000000L, MCI_END_CONSTANT,
|
||||
L"name\0", 0x00020000L, MCI_STRING,
|
||||
L"algorithm\0", 0x00040000L, MCI_STRING,
|
||||
L"dialog\0", 0x00080000L, MCI_FLAG,
|
||||
L"handle\0", 0x00100000L, MCI_INTEGER,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"realize\0", MCI_REALIZE, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"normal\0", 0x00010000L, MCI_FLAG,
|
||||
L"background\0", 0x00020000L, MCI_FLAG,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"record\0", MCI_RECORD, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"from\0", 0x00000004L, MCI_INTEGER,
|
||||
L"to\0", 0x00000008L, MCI_INTEGER,
|
||||
L"insert\0", 0x00000100L, MCI_FLAG,
|
||||
L"overwrite\0", 0x00000200L, MCI_FLAG,
|
||||
L"at\0", 0x00010000L, MCI_RECT,
|
||||
L"hold\0", 0x00020000L, MCI_FLAG,
|
||||
L"audio stream\0", 0x00040000L, MCI_INTEGER,
|
||||
L"video stream\0", 0x00080000L, MCI_INTEGER,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"reserve\0", MCI_RESERVE, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"in\0", 0x00010000L, MCI_STRING,
|
||||
L"size\0", 0x00020000L, MCI_INTEGER,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"restore\0", MCI_RESTORE, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"from\0", 0x00010000L, MCI_STRING,
|
||||
L"at\0", 0x00020000L, MCI_RECT,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"resume\0", MCI_RESUME, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"save\0", MCI_SAVE, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"\0", 0x00000100L, MCI_STRING,
|
||||
L"at\0", 0x00010000L, MCI_RECT,
|
||||
L"abort\0", 0x00020000L, MCI_FLAG,
|
||||
L"keepreserve\0", 0x00040000L, MCI_FLAG,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"seek\0", MCI_SEEK, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"to start\0", 0x00000100L, MCI_FLAG,
|
||||
L"to end\0", 0x00000200L, MCI_FLAG,
|
||||
L"to\0", 0x00000008L, MCI_INTEGER,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"set\0", MCI_SET, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"time format\0", 0x00000400L, MCI_CONSTANT,
|
||||
L"frames\0", 0x00000003L, MCI_INTEGER,
|
||||
L"milliseconds\0", 0x00000000L, MCI_INTEGER,
|
||||
L"ms\0", 0x00000000L, MCI_INTEGER,
|
||||
L"bytes\0", 0x00000008L, MCI_INTEGER,
|
||||
L"\0", 0x00000000L, MCI_END_CONSTANT,
|
||||
L"door open\0", 0x00000100L, MCI_FLAG,
|
||||
L"door closed\0", 0x00000200L, MCI_FLAG,
|
||||
L"audio\0", 0x00000800L, MCI_CONSTANT,
|
||||
L"all\0", 0x00000000L, MCI_INTEGER,
|
||||
L"left\0", 0x00000001L, MCI_INTEGER,
|
||||
L"right\0", 0x00000002L, MCI_INTEGER,
|
||||
L"\0", 0x00000000L, MCI_END_CONSTANT,
|
||||
L"video\0", 0x00001000L, MCI_FLAG,
|
||||
L"seek exactly\0", 0x00010000L, MCI_FLAG,
|
||||
L"file format\0", 0x00080000L, MCI_CONSTANT,
|
||||
L"avss\0", 0x00004000L, MCI_INTEGER,
|
||||
L"avi\0", 0x00004001L, MCI_INTEGER,
|
||||
L"dib\0", 0x00004002L, MCI_INTEGER,
|
||||
L"rdib\0", 0x00004003L, MCI_INTEGER,
|
||||
L"jpeg\0", 0x00004004L, MCI_INTEGER,
|
||||
L"rjpeg\0", 0x00004005L, MCI_INTEGER,
|
||||
L"jfif\0", 0x00004006L, MCI_INTEGER,
|
||||
L"mpeg\0", 0x00004007L, MCI_INTEGER,
|
||||
L"\0", 0x00000000L, MCI_END_CONSTANT,
|
||||
L"still\0", 0x00040000L, MCI_FLAG,
|
||||
L"on\0", 0x00002000L, MCI_FLAG,
|
||||
L"off\0", 0x00004000L, MCI_FLAG,
|
||||
L"speed\0", 0x00020000L, MCI_INTEGER,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"setaudio\0", MCI_SETAUDIO, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"\0", 0x00800000L, MCI_CONSTANT,
|
||||
L"bass\0", 0x00004001L, MCI_INTEGER,
|
||||
L"treble\0", 0x00004000L, MCI_INTEGER,
|
||||
L"volume\0", 0x00004002L, MCI_INTEGER,
|
||||
L"stream\0", 0x00004003L, MCI_INTEGER,
|
||||
L"source\0", 0x00004004L, MCI_INTEGER,
|
||||
L"samplespersec\0", 0x00004005L, MCI_INTEGER,
|
||||
L"bytespersec\0", 0x00004006L, MCI_INTEGER,
|
||||
L"alignment\0", 0x00004007L, MCI_INTEGER,
|
||||
L"bitspersample\0", 0x00004008L, MCI_INTEGER,
|
||||
L"\0", 0x00000000L, MCI_END_CONSTANT,
|
||||
L"to\0", 0x01000000L, MCI_CONSTANT,
|
||||
L"left\0", 0x00000001L, MCI_INTEGER,
|
||||
L"right\0", 0x00000002L, MCI_INTEGER,
|
||||
L"average\0", 0x00004000L, MCI_INTEGER,
|
||||
L"stereo\0", 0x00000000L, MCI_INTEGER,
|
||||
L"\0", 0x00000000L, MCI_END_CONSTANT,
|
||||
L"over\0", 0x00010000L, MCI_INTEGER,
|
||||
L"algorithm\0", 0x00040000L, MCI_STRING,
|
||||
L"quality\0", 0x00080000L, MCI_STRING,
|
||||
L"record\0", 0x00100000L, MCI_FLAG,
|
||||
L"left\0", 0x00200000L, MCI_FLAG,
|
||||
L"clocktime\0", 0x00020000L, MCI_FLAG,
|
||||
L"right\0", 0x00400000L, MCI_FLAG,
|
||||
L"on\0", 0x00002000L, MCI_FLAG,
|
||||
L"off\0", 0x00004000L, MCI_FLAG,
|
||||
L"input\0", 0x02000000L, MCI_FLAG,
|
||||
L"output\0", 0x04000000L, MCI_FLAG,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"setvideo\0", MCI_SETVIDEO, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"\0", 0x00100000L, MCI_CONSTANT,
|
||||
L"frame rate\0", 0x00004008L, MCI_INTEGER,
|
||||
L"brightness\0", 0x00004000L, MCI_INTEGER,
|
||||
L"color\0", 0x00004001L, MCI_INTEGER,
|
||||
L"contrast\0", 0x00004002L, MCI_INTEGER,
|
||||
L"tint\0", 0x00004003L, MCI_INTEGER,
|
||||
L"sharpness\0", 0x00004004L, MCI_INTEGER,
|
||||
L"gamma\0", 0x00004005L, MCI_INTEGER,
|
||||
L"palette handle\0", 0x00004007L, MCI_INTEGER,
|
||||
L"stream\0", 0x00004006L, MCI_INTEGER,
|
||||
L"source\0", 0x00004009L, MCI_INTEGER,
|
||||
L"key index\0", 0x0000400aL, MCI_INTEGER,
|
||||
L"key color\0", 0x0000400bL, MCI_INTEGER,
|
||||
L"\0", 0x00000000L, MCI_END_CONSTANT,
|
||||
L"to\0", 0x01000000L, MCI_CONSTANT,
|
||||
L"ntsc\0", 0x00004000L, MCI_INTEGER,
|
||||
L"rgb\0", 0x00004001L, MCI_INTEGER,
|
||||
L"svideo\0", 0x00004002L, MCI_INTEGER,
|
||||
L"pal\0", 0x00004003L, MCI_INTEGER,
|
||||
L"secam\0", 0x00004004L, MCI_INTEGER,
|
||||
L"\0", 0x00000000L, MCI_END_CONSTANT,
|
||||
L"quality\0", 0x00010000L, MCI_STRING,
|
||||
L"algorithm\0", 0x00020000L, MCI_STRING,
|
||||
L"number\0", 0x00080000L, MCI_INTEGER,
|
||||
L"over\0", 0x00200000L, MCI_INTEGER,
|
||||
L"record\0", 0x00400000L, MCI_FLAG,
|
||||
L"still\0", 0x00800000L, MCI_FLAG,
|
||||
L"clocktime\0", 0x00040000L, MCI_FLAG,
|
||||
L"on\0", 0x00002000L, MCI_FLAG,
|
||||
L"off\0", 0x00004000L, MCI_FLAG,
|
||||
L"input\0", 0x02000000L, MCI_FLAG,
|
||||
L"output\0", 0x04000000L, MCI_FLAG,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"signal\0", MCI_SIGNAL, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"at\0", 0x00010000L, MCI_INTEGER,
|
||||
L"every\0", 0x00020000L, MCI_INTEGER,
|
||||
L"uservalue\0", 0x00040000L, MCI_INTEGER,
|
||||
L"cancel\0", 0x00080000L, MCI_FLAG,
|
||||
L"return position\0", 0x00100000L, MCI_FLAG,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"status\0", MCI_STATUS, 0, MCI_COMMAND_HEAD,
|
||||
L"\0", MCI_DWORD_PTR, 0, MCI_RETURN,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"\0", 0x00000100L, MCI_CONSTANT,
|
||||
L"frames skipped\0", 0x00008001L, MCI_INTEGER,
|
||||
L"play speed\0", 0x00008002L, MCI_INTEGER,
|
||||
L"audio breaks\0", 0x00008003L, MCI_INTEGER,
|
||||
L"alignment\0", 0x00004029L, MCI_INTEGER,
|
||||
L"audio input\0", 0x00004000L, MCI_INTEGER,
|
||||
L"audio record\0", 0x0000401aL, MCI_INTEGER,
|
||||
L"audio source\0", 0x00004009L, MCI_INTEGER,
|
||||
L"audio stream\0", 0x0000402dL, MCI_INTEGER,
|
||||
L"bass\0", 0x0000400fL, MCI_INTEGER,
|
||||
L"bitsperpel\0", 0x0000402bL, MCI_INTEGER,
|
||||
L"bitspersample\0", 0x0000402aL, MCI_INTEGER,
|
||||
L"brightness\0", 0x00004005L, MCI_INTEGER,
|
||||
L"bytespersec\0", 0x00004028L, MCI_INTEGER,
|
||||
L"color\0", 0x00004006L, MCI_INTEGER,
|
||||
L"contrast\0", 0x00004007L, MCI_INTEGER,
|
||||
L"current track\0", 0x00000008L, MCI_INTEGER,
|
||||
L"file format\0", 0x00004008L, MCI_INTEGER,
|
||||
L"still file format\0", 0x0000401dL, MCI_INTEGER,
|
||||
L"file mode\0", 0x0000401fL, MCI_INTEGER,
|
||||
L"file completion\0", 0x00004020L, MCI_INTEGER,
|
||||
L"forward\0", 0x0000402cL, MCI_INTEGER,
|
||||
L"gamma\0", 0x0000400aL, MCI_INTEGER,
|
||||
L"length\0", 0x00000001L, MCI_INTEGER,
|
||||
L"media present\0", 0x00000005L, MCI_INTEGER,
|
||||
L"mode\0", 0x00000004L, MCI_INTEGER,
|
||||
L"monitor method\0", 0x0000400cL, MCI_INTEGER,
|
||||
L"monitor\0", 0x0000400bL, MCI_INTEGER,
|
||||
L"number of tracks\0", 0x00000003L, MCI_INTEGER,
|
||||
L"palette handle\0", 0x00004004L, MCI_INTEGER,
|
||||
L"pause mode\0", 0x00004026L, MCI_INTEGER,
|
||||
L"position\0", 0x00000002L, MCI_INTEGER,
|
||||
L"ready\0", 0x00000007L, MCI_INTEGER,
|
||||
L"frame rate\0", 0x0000400eL, MCI_INTEGER,
|
||||
L"reserved size\0", 0x00004010L, MCI_INTEGER,
|
||||
L"samplespersec\0", 0x00004027L, MCI_INTEGER,
|
||||
L"seek exactly\0", 0x00004011L, MCI_INTEGER,
|
||||
L"sharpness\0", 0x00004012L, MCI_INTEGER,
|
||||
L"smpte\0", 0x00004013L, MCI_INTEGER,
|
||||
L"speed\0", 0x00004003L, MCI_INTEGER,
|
||||
L"time format\0", 0x00000006L, MCI_INTEGER,
|
||||
L"tint\0", 0x00004015L, MCI_INTEGER,
|
||||
L"treble\0", 0x00004016L, MCI_INTEGER,
|
||||
L"unsaved\0", 0x00004017L, MCI_INTEGER,
|
||||
L"video key color\0", 0x00004025L, MCI_INTEGER,
|
||||
L"video key index\0", 0x00004024L, MCI_INTEGER,
|
||||
L"video source\0", 0x0000401bL, MCI_INTEGER,
|
||||
L"video source number\0", 0x0000401eL, MCI_INTEGER,
|
||||
L"video record\0", 0x0000401cL, MCI_INTEGER,
|
||||
L"video stream\0", 0x0000402eL, MCI_INTEGER,
|
||||
L"volume\0", 0x00004019L, MCI_INTEGER,
|
||||
L"window handle\0", 0x00004001L, MCI_INTEGER,
|
||||
L"window visible\0", 0x00004021L, MCI_INTEGER,
|
||||
L"window minimized\0", 0x00004022L, MCI_INTEGER,
|
||||
L"window maximized\0", 0x00004023L, MCI_INTEGER,
|
||||
L"video streams\0", 0x00004100L, MCI_INTEGER,
|
||||
L"video bitrate\0", 0x00004101L, MCI_INTEGER,
|
||||
L"video maxbitrate\0", 0x00004102L, MCI_INTEGER,
|
||||
L"audio streams\0", 0x00004103L, MCI_INTEGER,
|
||||
L"audio bitrate\0", 0x00004104L, MCI_INTEGER,
|
||||
L"video brush\0", 0x00004105L, MCI_INTEGER,
|
||||
L"audio\0", 0x00004014L, MCI_INTEGER,
|
||||
L"video\0", 0x00004018L, MCI_INTEGER,
|
||||
L"\0", 0x00000000L, MCI_END_CONSTANT,
|
||||
L"track\0", 0x00000010L, MCI_INTEGER,
|
||||
L"start\0", 0x00000200L, MCI_FLAG,
|
||||
L"left\0", 0x00080000L, MCI_FLAG,
|
||||
L"right\0", 0x00100000L, MCI_FLAG,
|
||||
L"nominal\0", 0x00020000L, MCI_FLAG,
|
||||
L"record\0", 0x01000000L, MCI_FLAG,
|
||||
L"input\0", 0x00400000L, MCI_FLAG,
|
||||
L"output\0", 0x00800000L, MCI_FLAG,
|
||||
L"disk space\0", 0x00200000L, MCI_STRING,
|
||||
L"reference\0", 0x00040000L, MCI_INTEGER,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"step\0", MCI_STEP, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"reverse\0", 0x00010000L, MCI_FLAG,
|
||||
L"by\0", 0x00020000L, MCI_INTEGER,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"stop\0", MCI_STOP, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"hold\0", 0x00010000L, MCI_FLAG,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"undo\0", MCI_UNDO, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"unfreeze\0", MCI_UNFREEZE, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"at\0", 0x00010000L, MCI_RECT,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"update\0", MCI_UPDATE, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"at\0", 0x00010000L, MCI_RECT,
|
||||
L"hdc\0", 0x00020000L, MCI_HDC,
|
||||
L"paint\0", 0x00040000L, MCI_FLAG,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"where\0", MCI_WHERE, 0, MCI_COMMAND_HEAD,
|
||||
L"\0", MCI_RECT, 0, MCI_RETURN,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"source\0", 0x00020000L, MCI_FLAG,
|
||||
L"destination\0", 0x00040000L, MCI_FLAG,
|
||||
L"frame\0", 0x00080000L, MCI_FLAG,
|
||||
L"video\0", 0x00100000L, MCI_FLAG,
|
||||
L"window\0", 0x00200000L, MCI_FLAG,
|
||||
L"max\0", 0x00400000L, MCI_FLAG,
|
||||
L"min\0", 0x00800000L, MCI_FLAG,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"window\0", MCI_WINDOW, 0, MCI_COMMAND_HEAD,
|
||||
L"notify\0", 0x00000001L, MCI_FLAG,
|
||||
L"wait\0", 0x00000002L, MCI_FLAG,
|
||||
L"test\0", 0x00000020L, MCI_FLAG,
|
||||
L"handle\0", 0x00010000L, MCI_CONSTANT,
|
||||
L"default\0", 0x00000000L, MCI_HWND,
|
||||
L"\0", 0x00000000L, MCI_END_CONSTANT,
|
||||
L"state\0", 0x00040000L, MCI_CONSTANT,
|
||||
L"hide\0", 0x00000000L, MCI_INTEGER,
|
||||
L"minimize\0", 0x00000006L, MCI_INTEGER,
|
||||
L"restore\0", 0x00000009L, MCI_INTEGER,
|
||||
L"show maximized\0", 0x00000003L, MCI_INTEGER,
|
||||
L"show min noactive\0", 0x00000007L, MCI_INTEGER,
|
||||
L"show minimized\0", 0x00000002L, MCI_INTEGER,
|
||||
L"show na\0", 0x00000008L, MCI_INTEGER,
|
||||
L"show noactivate\0", 0x00000004L, MCI_INTEGER,
|
||||
L"show normal\0", 0x00000001L, MCI_INTEGER,
|
||||
L"show\0", 0x00000005L, MCI_INTEGER,
|
||||
L"no action\0", 0x00000008L, MCI_INTEGER,
|
||||
L"minimized\0", 0x00000002L, MCI_INTEGER,
|
||||
L"\0", 0x00000000L, MCI_END_CONSTANT,
|
||||
L"text\0", 0x00080000L, MCI_STRING,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND,
|
||||
L"\0", 0x00000000L, MCI_END_COMMAND_LIST
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
|
||||
MCI_ON_S, "on"
|
||||
MCI_OFF_S, "off"
|
||||
END
|
|
@ -37,7 +37,7 @@ static DWORD MCIQTZ_mciStop(UINT, DWORD, LPMCI_GENERIC_PARMS);
|
|||
* MCI QTZ implementation *
|
||||
*======================================================================*/
|
||||
|
||||
HINSTANCE MCIQTZ_hInstance = 0;
|
||||
static HINSTANCE MCIQTZ_hInstance = 0;
|
||||
|
||||
/***********************************************************************
|
||||
* DllMain (MCIQTZ.0)
|
||||
|
@ -145,8 +145,8 @@ static DWORD MCIQTZ_mciOpen(UINT wDevID, DWORD dwFlags,
|
|||
{
|
||||
WINE_MCIQTZ* wma;
|
||||
HRESULT hr;
|
||||
IBasicVideo *vidbasic;
|
||||
IVideoWindow *vidwin;
|
||||
DWORD style = 0;
|
||||
RECT rc = { 0, 0, 0, 0 };
|
||||
|
||||
TRACE("(%04x, %08X, %p)\n", wDevID, dwFlags, lpOpenParms);
|
||||
|
||||
|
@ -174,6 +174,30 @@ static DWORD MCIQTZ_mciOpen(UINT wDevID, DWORD dwFlags,
|
|||
goto err;
|
||||
}
|
||||
|
||||
hr = IGraphBuilder_QueryInterface(wma->pgraph, &IID_IMediaSeeking, (void**)&wma->seek);
|
||||
if (FAILED(hr)) {
|
||||
TRACE("Cannot get IMediaSeeking interface (hr = %x)\n", hr);
|
||||
goto err;
|
||||
}
|
||||
|
||||
hr = IGraphBuilder_QueryInterface(wma->pgraph, &IID_IMediaEvent, (void**)&wma->mevent);
|
||||
if (FAILED(hr)) {
|
||||
TRACE("Cannot get IMediaEvent interface (hr = %x)\n", hr);
|
||||
goto err;
|
||||
}
|
||||
|
||||
hr = IGraphBuilder_QueryInterface(wma->pgraph, &IID_IVideoWindow, (void**)&wma->vidwin);
|
||||
if (FAILED(hr)) {
|
||||
TRACE("Cannot get IVideoWindow interface (hr = %x)\n", hr);
|
||||
goto err;
|
||||
}
|
||||
|
||||
hr = IGraphBuilder_QueryInterface(wma->pgraph, &IID_IBasicVideo, (void**)&wma->vidbasic);
|
||||
if (FAILED(hr)) {
|
||||
TRACE("Cannot get IBasicVideo interface (hr = %x)\n", hr);
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (!(dwFlags & MCI_OPEN_ELEMENT) || (dwFlags & MCI_OPEN_ELEMENT_ID)) {
|
||||
TRACE("Wrong dwFlags %x\n", dwFlags);
|
||||
goto err;
|
||||
|
@ -192,33 +216,22 @@ static DWORD MCIQTZ_mciOpen(UINT wDevID, DWORD dwFlags,
|
|||
goto err;
|
||||
}
|
||||
|
||||
hr = IFilterGraph2_QueryInterface(wma->pgraph, &IID_IVideoWindow, (void**)&vidwin);
|
||||
if (SUCCEEDED(hr))
|
||||
hr = IFilterGraph2_QueryInterface(wma->pgraph, &IID_IBasicVideo, (void**)&vidbasic);
|
||||
if (SUCCEEDED(hr)) {
|
||||
DWORD style;
|
||||
RECT rc = { 0, 0, 0, 0 };
|
||||
IVideoWindow_put_AutoShow(vidwin, OAFALSE);
|
||||
IVideoWindow_put_Visible(vidwin, OAFALSE);
|
||||
style = 0;
|
||||
if (dwFlags & MCI_DGV_OPEN_WS)
|
||||
style |= lpOpenParms->dwStyle;
|
||||
if (dwFlags & MCI_DGV_OPEN_PARENT) {
|
||||
IVideoWindow_put_MessageDrain(vidwin, (OAHWND)lpOpenParms->hWndParent);
|
||||
IVideoWindow_put_WindowState(vidwin, SW_HIDE);
|
||||
IVideoWindow_put_WindowStyle(vidwin, WS_CHILD);
|
||||
IVideoWindow_put_Owner(vidwin, (OAHWND)lpOpenParms->hWndParent);
|
||||
wma->parent = (HWND)lpOpenParms->hWndParent;
|
||||
}
|
||||
else if (style)
|
||||
IVideoWindow_put_WindowStyle(vidwin, style);
|
||||
IBasicVideo_GetVideoSize(vidbasic, &rc.right, &rc.bottom);
|
||||
IVideoWindow_SetWindowPosition(vidwin, rc.left, rc.top, rc.right, rc.bottom);
|
||||
IBasicVideo_Release(vidbasic);
|
||||
IVideoWindow_put_AutoShow(wma->vidwin, OAFALSE);
|
||||
IVideoWindow_put_Visible(wma->vidwin, OAFALSE);
|
||||
if (dwFlags & MCI_DGV_OPEN_WS)
|
||||
style = lpOpenParms->dwStyle;
|
||||
if (dwFlags & MCI_DGV_OPEN_PARENT) {
|
||||
IVideoWindow_put_MessageDrain(wma->vidwin, (OAHWND)lpOpenParms->hWndParent);
|
||||
IVideoWindow_put_WindowState(wma->vidwin, SW_HIDE);
|
||||
IVideoWindow_put_WindowStyle(wma->vidwin, style|WS_CHILD);
|
||||
IVideoWindow_put_Owner(wma->vidwin, (OAHWND)lpOpenParms->hWndParent);
|
||||
GetClientRect(lpOpenParms->hWndParent, &rc);
|
||||
IVideoWindow_SetWindowPosition(wma->vidwin, rc.left, rc.top, rc.right - rc.top, rc.bottom - rc.top);
|
||||
wma->parent = (HWND)lpOpenParms->hWndParent;
|
||||
}
|
||||
if (vidwin)
|
||||
IVideoWindow_Release(vidwin);
|
||||
|
||||
else if (style)
|
||||
IVideoWindow_put_WindowStyle(wma->vidwin, style);
|
||||
IBasicVideo_GetVideoSize(wma->vidbasic, &rc.right, &rc.bottom);
|
||||
wma->opened = TRUE;
|
||||
|
||||
if (dwFlags & MCI_NOTIFY)
|
||||
|
@ -227,15 +240,28 @@ static DWORD MCIQTZ_mciOpen(UINT wDevID, DWORD dwFlags,
|
|||
return 0;
|
||||
|
||||
err:
|
||||
if (wma->vidbasic)
|
||||
IUnknown_Release(wma->vidbasic);
|
||||
wma->vidbasic = NULL;
|
||||
if (wma->seek)
|
||||
IUnknown_Release(wma->seek);
|
||||
wma->seek = NULL;
|
||||
if (wma->vidwin)
|
||||
IUnknown_Release(wma->vidwin);
|
||||
wma->vidwin = NULL;
|
||||
if (wma->pgraph)
|
||||
IGraphBuilder_Release(wma->pgraph);
|
||||
wma->pgraph = NULL;
|
||||
if (wma->mevent)
|
||||
IMediaEvent_Release(wma->mevent);
|
||||
wma->mevent = NULL;
|
||||
if (wma->pmctrl)
|
||||
IMediaControl_Release(wma->pmctrl);
|
||||
wma->pmctrl = NULL;
|
||||
|
||||
if (wma->uninit)
|
||||
CoUninitialize();
|
||||
wma->uninit = 0;
|
||||
|
||||
return MCIERR_INTERNAL;
|
||||
}
|
||||
|
@ -256,6 +282,10 @@ static DWORD MCIQTZ_mciClose(UINT wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpP
|
|||
MCIQTZ_mciStop(wDevID, MCI_WAIT, NULL);
|
||||
|
||||
if (wma->opened) {
|
||||
IUnknown_Release(wma->vidwin);
|
||||
IUnknown_Release(wma->vidbasic);
|
||||
IUnknown_Release(wma->seek);
|
||||
IMediaEvent_Release(wma->mevent);
|
||||
IGraphBuilder_Release(wma->pgraph);
|
||||
IMediaControl_Release(wma->pmctrl);
|
||||
if (wma->uninit)
|
||||
|
@ -273,6 +303,9 @@ static DWORD MCIQTZ_mciPlay(UINT wDevID, DWORD dwFlags, LPMCI_PLAY_PARMS lpParms
|
|||
{
|
||||
WINE_MCIQTZ* wma;
|
||||
HRESULT hr;
|
||||
REFERENCE_TIME time1 = 0, time2 = 0;
|
||||
GUID format;
|
||||
DWORD pos1;
|
||||
|
||||
TRACE("(%04x, %08X, %p)\n", wDevID, dwFlags, lpParms);
|
||||
|
||||
|
@ -283,21 +316,34 @@ static DWORD MCIQTZ_mciPlay(UINT wDevID, DWORD dwFlags, LPMCI_PLAY_PARMS lpParms
|
|||
if (!wma)
|
||||
return MCIERR_INVALID_DEVICE_ID;
|
||||
|
||||
IMediaSeeking_GetTimeFormat(wma->seek, &format);
|
||||
if (dwFlags & MCI_FROM) {
|
||||
if (IsEqualGUID(&format, &TIME_FORMAT_MEDIA_TIME))
|
||||
time1 = lpParms->dwFrom * 10000;
|
||||
else
|
||||
time1 = lpParms->dwFrom;
|
||||
pos1 = AM_SEEKING_AbsolutePositioning;
|
||||
} else
|
||||
pos1 = AM_SEEKING_NoPositioning;
|
||||
if (dwFlags & MCI_TO) {
|
||||
if (IsEqualGUID(&format, &TIME_FORMAT_MEDIA_TIME))
|
||||
time2 = lpParms->dwTo * 10000;
|
||||
else
|
||||
time2 = lpParms->dwTo;
|
||||
} else
|
||||
IMediaSeeking_GetDuration(wma->seek, &time2);
|
||||
IMediaSeeking_SetPositions(wma->seek, &time1, pos1, &time2, AM_SEEKING_AbsolutePositioning);
|
||||
|
||||
hr = IMediaControl_Run(wma->pmctrl);
|
||||
if (FAILED(hr)) {
|
||||
TRACE("Cannot run filtergraph (hr = %x)\n", hr);
|
||||
return MCIERR_INTERNAL;
|
||||
}
|
||||
|
||||
if (!wma->parent) {
|
||||
IVideoWindow *vidwin;
|
||||
IFilterGraph2_QueryInterface(wma->pgraph, &IID_IVideoWindow, (void**)&vidwin);
|
||||
if (vidwin) {
|
||||
IVideoWindow_put_Visible(vidwin, OATRUE);
|
||||
IVideoWindow_Release(vidwin);
|
||||
}
|
||||
}
|
||||
IVideoWindow_put_Visible(wma->vidwin, OATRUE);
|
||||
|
||||
if (dwFlags & MCI_NOTIFY)
|
||||
mciDriverNotify(HWND_32(LOWORD(lpParms->dwCallback)), wDevID, MCI_NOTIFY_SUCCESSFUL);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -308,7 +354,6 @@ static DWORD MCIQTZ_mciSeek(UINT wDevID, DWORD dwFlags, LPMCI_SEEK_PARMS lpParms
|
|||
{
|
||||
WINE_MCIQTZ* wma;
|
||||
HRESULT hr;
|
||||
IMediaPosition* pmpos;
|
||||
LONGLONG newpos;
|
||||
|
||||
TRACE("(%04x, %08X, %p)\n", wDevID, dwFlags, lpParms);
|
||||
|
@ -335,21 +380,12 @@ static DWORD MCIQTZ_mciSeek(UINT wDevID, DWORD dwFlags, LPMCI_SEEK_PARMS lpParms
|
|||
return MCIERR_MISSING_PARAMETER;
|
||||
}
|
||||
|
||||
hr = IGraphBuilder_QueryInterface(wma->pgraph, &IID_IMediaPosition, (LPVOID*)&pmpos);
|
||||
if (FAILED(hr)) {
|
||||
FIXME("Cannot get IMediaPostion interface (hr = %x)\n", hr);
|
||||
return MCIERR_INTERNAL;
|
||||
}
|
||||
|
||||
hr = IMediaPosition_put_CurrentPosition(pmpos, newpos);
|
||||
hr = IMediaSeeking_SetPositions(wma->seek, &newpos, AM_SEEKING_AbsolutePositioning, NULL, AM_SEEKING_NoPositioning);
|
||||
if (FAILED(hr)) {
|
||||
FIXME("Cannot set position (hr = %x)\n", hr);
|
||||
IMediaPosition_Release(pmpos);
|
||||
return MCIERR_INTERNAL;
|
||||
}
|
||||
|
||||
IMediaPosition_Release(pmpos);
|
||||
|
||||
if (dwFlags & MCI_NOTIFY)
|
||||
mciDriverNotify(HWND_32(LOWORD(lpParms->dwCallback)), wDevID, MCI_NOTIFY_SUCCESSFUL);
|
||||
|
||||
|
@ -379,14 +415,8 @@ static DWORD MCIQTZ_mciStop(UINT wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpPa
|
|||
return MCIERR_INTERNAL;
|
||||
}
|
||||
|
||||
if (!wma->parent) {
|
||||
IVideoWindow *vidwin;
|
||||
IFilterGraph2_QueryInterface(wma->pgraph, &IID_IVideoWindow, (void**)&vidwin);
|
||||
if (vidwin) {
|
||||
IVideoWindow_put_Visible(vidwin, OAFALSE);
|
||||
IVideoWindow_Release(vidwin);
|
||||
}
|
||||
}
|
||||
if (!wma->parent)
|
||||
IVideoWindow_put_Visible(wma->vidwin, OAFALSE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -592,7 +622,6 @@ static DWORD MCIQTZ_mciStatus(UINT wDevID, DWORD dwFlags, LPMCI_DGV_STATUS_PARMS
|
|||
|
||||
switch (lpParms->dwItem) {
|
||||
case MCI_STATUS_LENGTH: {
|
||||
IMediaSeeking *seek;
|
||||
LONGLONG duration = -1;
|
||||
GUID format;
|
||||
switch (wma->time_format) {
|
||||
|
@ -600,20 +629,13 @@ static DWORD MCIQTZ_mciStatus(UINT wDevID, DWORD dwFlags, LPMCI_DGV_STATUS_PARMS
|
|||
case MCI_FORMAT_FRAMES: format = TIME_FORMAT_FRAME; break;
|
||||
default: ERR("Unhandled format %x\n", wma->time_format); break;
|
||||
}
|
||||
hr = IGraphBuilder_QueryInterface(wma->pgraph, &IID_IMediaSeeking, (void**)&seek);
|
||||
hr = IMediaSeeking_SetTimeFormat(wma->seek, &format);
|
||||
if (FAILED(hr)) {
|
||||
FIXME("Cannot get IMediaPostion interface (hr = %x)\n", hr);
|
||||
return MCIERR_INTERNAL;
|
||||
}
|
||||
hr = IMediaSeeking_SetTimeFormat(seek, &format);
|
||||
if (FAILED(hr)) {
|
||||
IMediaSeeking_Release(seek);
|
||||
FIXME("Cannot set time format (hr = %x)\n", hr);
|
||||
lpParms->dwReturn = 0;
|
||||
break;
|
||||
}
|
||||
hr = IMediaSeeking_GetDuration(seek, &duration);
|
||||
IMediaSeeking_Release(seek);
|
||||
hr = IMediaSeeking_GetDuration(wma->seek, &duration);
|
||||
if (FAILED(hr) || duration < 0) {
|
||||
FIXME("Cannot read duration (hr = %x)\n", hr);
|
||||
lpParms->dwReturn = 0;
|
||||
|
@ -624,33 +646,42 @@ static DWORD MCIQTZ_mciStatus(UINT wDevID, DWORD dwFlags, LPMCI_DGV_STATUS_PARMS
|
|||
break;
|
||||
}
|
||||
case MCI_STATUS_POSITION: {
|
||||
IMediaPosition* pmpos;
|
||||
REFTIME curpos;
|
||||
REFERENCE_TIME curpos;
|
||||
|
||||
hr = IGraphBuilder_QueryInterface(wma->pgraph, &IID_IMediaPosition, (LPVOID*)&pmpos);
|
||||
if (FAILED(hr)) {
|
||||
FIXME("Cannot get IMediaPostion interface (hr = %x)\n", hr);
|
||||
return MCIERR_INTERNAL;
|
||||
}
|
||||
|
||||
hr = IMediaPosition_get_CurrentPosition(pmpos, &curpos);
|
||||
hr = IMediaSeeking_GetCurrentPosition(wma->seek, &curpos);
|
||||
if (FAILED(hr)) {
|
||||
FIXME("Cannot get position (hr = %x)\n", hr);
|
||||
IMediaPosition_Release(pmpos);
|
||||
return MCIERR_INTERNAL;
|
||||
}
|
||||
|
||||
IMediaPosition_Release(pmpos);
|
||||
lpParms->dwReturn = curpos / 10000;
|
||||
|
||||
break;
|
||||
}
|
||||
case MCI_STATUS_NUMBER_OF_TRACKS:
|
||||
FIXME("MCI_STATUS_NUMBER_OF_TRACKS not implemented yet\n");
|
||||
return MCIERR_UNRECOGNIZED_COMMAND;
|
||||
case MCI_STATUS_MODE:
|
||||
FIXME("MCI_STATUS_MODE not implemented yet\n");
|
||||
return MCIERR_UNRECOGNIZED_COMMAND;
|
||||
case MCI_STATUS_MODE: {
|
||||
LONG state = State_Stopped;
|
||||
IMediaControl_GetState(wma->pmctrl, -1, &state);
|
||||
if (state == State_Stopped)
|
||||
lpParms->dwReturn = MCI_MODE_STOP;
|
||||
else if (state == State_Running) {
|
||||
LONG code;
|
||||
LONG_PTR p1, p2;
|
||||
|
||||
lpParms->dwReturn = MCI_MODE_PLAY;
|
||||
|
||||
do {
|
||||
hr = IMediaEvent_GetEvent(wma->mevent, &code, &p1, &p2, 0);
|
||||
if (hr == S_OK && code == EC_COMPLETE){
|
||||
lpParms->dwReturn = MCI_MODE_STOP;
|
||||
IMediaControl_Stop(wma->pmctrl);
|
||||
}
|
||||
} while (hr == S_OK);
|
||||
|
||||
} else if (state == State_Paused)
|
||||
lpParms->dwReturn = MCI_MODE_PAUSE;
|
||||
break;
|
||||
}
|
||||
case MCI_STATUS_MEDIA_PRESENT:
|
||||
FIXME("MCI_STATUS_MEDIA_PRESENT not implemented yet\n");
|
||||
return MCIERR_UNRECOGNIZED_COMMAND;
|
||||
|
@ -680,8 +711,6 @@ static DWORD MCIQTZ_mciStatus(UINT wDevID, DWORD dwFlags, LPMCI_DGV_STATUS_PARMS
|
|||
static DWORD MCIQTZ_mciWhere(UINT wDevID, DWORD dwFlags, LPMCI_DGV_RECT_PARMS lpParms)
|
||||
{
|
||||
WINE_MCIQTZ* wma;
|
||||
IVideoWindow* pVideoWindow;
|
||||
IBasicVideo *pBasicVideo;
|
||||
HRESULT hr;
|
||||
HWND hWnd;
|
||||
RECT rc;
|
||||
|
@ -696,47 +725,23 @@ static DWORD MCIQTZ_mciWhere(UINT wDevID, DWORD dwFlags, LPMCI_DGV_RECT_PARMS lp
|
|||
if (!wma)
|
||||
return MCIERR_INVALID_DEVICE_ID;
|
||||
|
||||
/* Find if there is a video stream and get the display window */
|
||||
hr = IGraphBuilder_QueryInterface(wma->pgraph, &IID_IVideoWindow, (LPVOID*)&pVideoWindow);
|
||||
if (FAILED(hr)) {
|
||||
ERR("Cannot get IVideoWindow interface (hr = %x)\n", hr);
|
||||
return MCIERR_INTERNAL;
|
||||
}
|
||||
|
||||
hr = IGraphBuilder_QueryInterface(wma->pgraph, &IID_IBasicVideo, (LPVOID*)&pBasicVideo);
|
||||
if (FAILED(hr)) {
|
||||
ERR("Cannot get IBasicVideo interface (hr = %x)\n", hr);
|
||||
IUnknown_Release(pVideoWindow);
|
||||
return MCIERR_INTERNAL;
|
||||
}
|
||||
|
||||
hr = IVideoWindow_get_Owner(pVideoWindow, (OAHWND*)&hWnd);
|
||||
hr = IVideoWindow_get_Owner(wma->vidwin, (OAHWND*)&hWnd);
|
||||
if (FAILED(hr)) {
|
||||
TRACE("No video stream, returning no window error\n");
|
||||
IUnknown_Release(pVideoWindow);
|
||||
return MCIERR_NO_WINDOW;
|
||||
}
|
||||
|
||||
if (dwFlags & MCI_DGV_WHERE_SOURCE) {
|
||||
if (dwFlags & MCI_DGV_WHERE_MAX)
|
||||
FIXME("MCI_DGV_WHERE_SOURCE_MAX stub %s\n", wine_dbgstr_rect(&rc));
|
||||
IBasicVideo_get_SourceLeft(pBasicVideo, &rc.left);
|
||||
IBasicVideo_get_SourceTop(pBasicVideo, &rc.top);
|
||||
IBasicVideo_get_SourceWidth(pBasicVideo, &rc.right);
|
||||
IBasicVideo_get_SourceHeight(pBasicVideo, &rc.bottom);
|
||||
/* Undo conversion done below */
|
||||
rc.right += rc.left;
|
||||
rc.bottom += rc.top;
|
||||
IBasicVideo_GetSourcePosition(wma->vidbasic, &rc.left, &rc.top, &rc.right, &rc.bottom);
|
||||
TRACE("MCI_DGV_WHERE_SOURCE %s\n", wine_dbgstr_rect(&rc));
|
||||
}
|
||||
if (dwFlags & MCI_DGV_WHERE_DESTINATION) {
|
||||
if (dwFlags & MCI_DGV_WHERE_MAX) {
|
||||
GetClientRect(hWnd, &rc);
|
||||
TRACE("MCI_DGV_WHERE_DESTINATION_MAX %s\n", wine_dbgstr_rect(&rc));
|
||||
} else {
|
||||
FIXME("MCI_DGV_WHERE_DESTINATION not supported yet\n");
|
||||
goto out;
|
||||
}
|
||||
if (dwFlags & MCI_DGV_WHERE_MAX)
|
||||
FIXME("MCI_DGV_WHERE_DESTINATION_MAX stub %s\n", wine_dbgstr_rect(&rc));
|
||||
IBasicVideo_GetDestinationPosition(wma->vidbasic, &rc.left, &rc.top, &rc.right, &rc.bottom);
|
||||
TRACE("MCI_DGV_WHERE_DESTINATION %s\n", wine_dbgstr_rect(&rc));
|
||||
}
|
||||
if (dwFlags & MCI_DGV_WHERE_FRAME) {
|
||||
if (dwFlags & MCI_DGV_WHERE_MAX)
|
||||
|
@ -755,27 +760,64 @@ static DWORD MCIQTZ_mciWhere(UINT wDevID, DWORD dwFlags, LPMCI_DGV_RECT_PARMS lp
|
|||
if (dwFlags & MCI_DGV_WHERE_WINDOW) {
|
||||
if (dwFlags & MCI_DGV_WHERE_MAX) {
|
||||
GetWindowRect(GetDesktopWindow(), &rc);
|
||||
rc.right -= rc.left;
|
||||
rc.bottom -= rc.top;
|
||||
TRACE("MCI_DGV_WHERE_WINDOW_MAX %s\n", wine_dbgstr_rect(&rc));
|
||||
} else {
|
||||
GetWindowRect(hWnd, &rc);
|
||||
IVideoWindow_GetWindowPosition(wma->vidwin, &rc.left, &rc.top, &rc.right, &rc.bottom);
|
||||
TRACE("MCI_DGV_WHERE_WINDOW %s\n", wine_dbgstr_rect(&rc));
|
||||
}
|
||||
}
|
||||
ret = 0;
|
||||
|
||||
out:
|
||||
/* In MCI, RECT structure is used differently: rc.right = width & rc.bottom = height
|
||||
* So convert the normal RECT into a MCI RECT before returning */
|
||||
IVideoWindow_Release(pVideoWindow);
|
||||
IBasicVideo_Release(pBasicVideo);
|
||||
lpParms->rc.left = rc.left;
|
||||
lpParms->rc.top = rc.top;
|
||||
lpParms->rc.right = rc.right - rc.left;
|
||||
lpParms->rc.bottom = rc.bottom - rc.top;
|
||||
|
||||
lpParms->rc = rc;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
* MCIQTZ_mciWindow [internal]
|
||||
*/
|
||||
static DWORD MCIQTZ_mciWindow(UINT wDevID, DWORD dwFlags, LPMCI_DGV_WINDOW_PARMSW lpParms)
|
||||
{
|
||||
WINE_MCIQTZ *wma = MCIQTZ_mciGetOpenDev(wDevID);
|
||||
|
||||
TRACE("(%04x, %08X, %p)\n", wDevID, dwFlags, lpParms);
|
||||
|
||||
if (!lpParms)
|
||||
return MCIERR_NULL_PARAMETER_BLOCK;
|
||||
if (!wma)
|
||||
return MCIERR_INVALID_DEVICE_ID;
|
||||
if (dwFlags & MCI_TEST)
|
||||
return 0;
|
||||
|
||||
if (dwFlags & MCI_DGV_WINDOW_HWND && (IsWindow(lpParms->hWnd) || !lpParms->hWnd)) {
|
||||
LONG visible = OATRUE;
|
||||
LONG style = 0;
|
||||
TRACE("Setting hWnd to %p\n", lpParms->hWnd);
|
||||
IVideoWindow_get_Visible(wma->vidwin, &visible);
|
||||
IVideoWindow_put_Visible(wma->vidwin, OAFALSE);
|
||||
IVideoWindow_get_WindowStyle(wma->vidwin, &style);
|
||||
style &= ~WS_CHILD;
|
||||
if (lpParms->hWnd)
|
||||
IVideoWindow_put_WindowStyle(wma->vidwin, style|WS_CHILD);
|
||||
else
|
||||
IVideoWindow_put_WindowStyle(wma->vidwin, style);
|
||||
IVideoWindow_put_Owner(wma->vidwin, (OAHWND)lpParms->hWnd);
|
||||
IVideoWindow_put_MessageDrain(wma->vidwin, (OAHWND)lpParms->hWnd);
|
||||
IVideoWindow_put_Visible(wma->vidwin, visible);
|
||||
wma->parent = lpParms->hWnd;
|
||||
}
|
||||
if (dwFlags & MCI_DGV_WINDOW_STATE) {
|
||||
TRACE("Setting nCmdShow to %d\n", lpParms->nCmdShow);
|
||||
IVideoWindow_put_WindowState(wma->vidwin, lpParms->nCmdShow);
|
||||
}
|
||||
if (dwFlags & MCI_DGV_WINDOW_TEXT) {
|
||||
TRACE("Setting caption to %s\n", debugstr_w(lpParms->lpstrText));
|
||||
IVideoWindow_put_Caption(wma->vidwin, lpParms->lpstrText);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* MCIAVI_mciUpdate [internal]
|
||||
*/
|
||||
|
@ -794,51 +836,46 @@ static DWORD MCIQTZ_mciUpdate(UINT wDevID, DWORD dwFlags, LPMCI_DGV_UPDATE_PARMS
|
|||
return MCIERR_INVALID_DEVICE_ID;
|
||||
|
||||
if (dwFlags & MCI_DGV_UPDATE_HDC) {
|
||||
IBasicVideo *vidbasic;
|
||||
IVideoWindow *vidwin;
|
||||
LONG state, size;
|
||||
BYTE *data;
|
||||
BITMAPINFO *info;
|
||||
HRESULT hr;
|
||||
RECT src, dest;
|
||||
LONG visible = OATRUE;
|
||||
|
||||
res = MCIERR_INTERNAL;
|
||||
IFilterGraph2_QueryInterface(wma->pgraph, &IID_IVideoWindow, (void**)&vidwin);
|
||||
IFilterGraph2_QueryInterface(wma->pgraph, &IID_IBasicVideo, (void**)&vidbasic);
|
||||
if (vidbasic && vidwin) {
|
||||
LONG state, size;
|
||||
BYTE *data;
|
||||
BITMAPINFO *info;
|
||||
HRESULT hr;
|
||||
RECT src, dest;
|
||||
|
||||
/* If in stopped state, nothing has been drawn to screen
|
||||
* moving to pause, which is needed for the old dib renderer, will result
|
||||
* in a single frame drawn, so hide the window here */
|
||||
IVideoWindow_put_Visible(vidwin, OAFALSE);
|
||||
/* FIXME: Should we check the original state and restore it? */
|
||||
IMediaControl_Pause(wma->pmctrl);
|
||||
IMediaControl_GetState(wma->pmctrl, -1, &state);
|
||||
if (FAILED(hr = IBasicVideo_GetCurrentImage(vidbasic, &size, NULL))) {
|
||||
WARN("Could not get image size (hr = %x)\n", hr);
|
||||
goto out;
|
||||
}
|
||||
data = HeapAlloc(GetProcessHeap(), 0, size);
|
||||
info = (BITMAPINFO*)data;
|
||||
IBasicVideo_GetCurrentImage(vidbasic, &size, (LONG*)data);
|
||||
data += info->bmiHeader.biSize;
|
||||
|
||||
IBasicVideo_GetSourcePosition(vidbasic, &src.left, &src.top, &src.right, &src.bottom);
|
||||
IBasicVideo_GetDestinationPosition(vidbasic, &dest.left, &dest.top, &dest.right, &dest.bottom);
|
||||
StretchDIBits(lpParms->hDC,
|
||||
dest.left, dest.top, dest.right + dest.left, dest.bottom + dest.top,
|
||||
src.left, src.top, src.right + src.left, src.bottom + src.top,
|
||||
data, info, DIB_RGB_COLORS, SRCCOPY);
|
||||
HeapFree(GetProcessHeap(), 0, data);
|
||||
IMediaControl_GetState(wma->pmctrl, -1, &state);
|
||||
if (state == State_Running)
|
||||
return MCIERR_UNSUPPORTED_FUNCTION;
|
||||
/* If in stopped state, nothing has been drawn to screen
|
||||
* moving to pause, which is needed for the old dib renderer, will result
|
||||
* in a single frame drawn, so hide the window here */
|
||||
IVideoWindow_get_Visible(wma->vidwin, &visible);
|
||||
if (wma->parent)
|
||||
IVideoWindow_put_Visible(wma->vidwin, OAFALSE);
|
||||
/* FIXME: Should we check the original state and restore it? */
|
||||
IMediaControl_Pause(wma->pmctrl);
|
||||
IMediaControl_GetState(wma->pmctrl, -1, &state);
|
||||
if (FAILED(hr = IBasicVideo_GetCurrentImage(wma->vidbasic, &size, NULL))) {
|
||||
WARN("Could not get image size (hr = %x)\n", hr);
|
||||
goto out;
|
||||
}
|
||||
data = HeapAlloc(GetProcessHeap(), 0, size);
|
||||
info = (BITMAPINFO*)data;
|
||||
IBasicVideo_GetCurrentImage(wma->vidbasic, &size, (LONG*)data);
|
||||
data += info->bmiHeader.biSize;
|
||||
|
||||
IBasicVideo_GetSourcePosition(wma->vidbasic, &src.left, &src.top, &src.right, &src.bottom);
|
||||
IBasicVideo_GetDestinationPosition(wma->vidbasic, &dest.left, &dest.top, &dest.right, &dest.bottom);
|
||||
StretchDIBits(lpParms->hDC,
|
||||
dest.left, dest.top, dest.right + dest.left, dest.bottom + dest.top,
|
||||
src.left, src.top, src.right + src.left, src.bottom + src.top,
|
||||
data, info, DIB_RGB_COLORS, SRCCOPY);
|
||||
HeapFree(GetProcessHeap(), 0, data);
|
||||
res = 0;
|
||||
out:
|
||||
if (vidbasic)
|
||||
IBasicVideo_Release(vidbasic);
|
||||
if (vidwin) {
|
||||
if (wma->parent)
|
||||
IVideoWindow_put_Visible(vidwin, OATRUE);
|
||||
IVideoWindow_Release(vidwin);
|
||||
}
|
||||
if (wma->parent)
|
||||
IVideoWindow_put_Visible(wma->vidwin, visible);
|
||||
}
|
||||
else if (dwFlags)
|
||||
FIXME("Unhandled flags %x\n", dwFlags);
|
||||
|
@ -911,11 +948,12 @@ LRESULT CALLBACK MCIQTZ_DriverProc(DWORD_PTR dwDevID, HDRVR hDriv, UINT wMsg,
|
|||
case MCI_SETAUDIO: return MCIQTZ_mciSetAudio (dwDevID, dwParam1, (LPMCI_DGV_SETAUDIO_PARMSW) dwParam2);
|
||||
case MCI_UPDATE:
|
||||
return MCIQTZ_mciUpdate(dwDevID, dwParam1, (LPMCI_DGV_UPDATE_PARMS)dwParam2);
|
||||
case MCI_WINDOW:
|
||||
return MCIQTZ_mciWindow(dwDevID, dwParam1, (LPMCI_DGV_WINDOW_PARMSW)dwParam2);
|
||||
case MCI_PUT:
|
||||
case MCI_RECORD:
|
||||
case MCI_RESUME:
|
||||
case MCI_INFO:
|
||||
case MCI_PUT:
|
||||
case MCI_WINDOW:
|
||||
case MCI_LOAD:
|
||||
case MCI_SAVE:
|
||||
case MCI_FREEZE:
|
||||
|
|
|
@ -31,6 +31,10 @@ typedef struct {
|
|||
BOOL uninit;
|
||||
IGraphBuilder* pgraph;
|
||||
IMediaControl* pmctrl;
|
||||
IMediaSeeking* seek;
|
||||
IMediaEvent* mevent;
|
||||
IVideoWindow* vidwin;
|
||||
IBasicVideo* vidbasic;
|
||||
DWORD time_format;
|
||||
UINT command_table;
|
||||
HWND parent;
|
||||
|
|
|
@ -85,7 +85,7 @@ reactos/dll/win32/lz32 # Synced to Wine-1.3.37
|
|||
reactos/dll/win32/mapi32 # Autosync
|
||||
reactos/dll/win32/mciavi32 # Synced to Wine-1.3.37
|
||||
reactos/dll/win32/mcicda # Synced to Wine-1.3.37
|
||||
reactos/dll/win32/mciqtz32 # Autosync
|
||||
reactos/dll/win32/mciqtz32 # Synced to Wine-1.5.4
|
||||
reactos/dll/win32/mciseq # Synced to Wine-1.3.37
|
||||
reactos/dll/win32/mciwave # Synced to Wine-1.3.37
|
||||
reactos/dll/win32/mlang # Synced to Wine-1.3.37
|
||||
|
|
Loading…
Reference in a new issue