1 /* DirectShow private interfaces (QUARTZ.DLL)
3 * Copyright 2002 Lionel Ulmer
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20 #ifndef __QUARTZ_PRIVATE_INCLUDED__
21 #define __QUARTZ_PRIVATE_INCLUDED__
35 #include "wine/debug.h"
36 #include "wine/heap.h"
37 #include "wine/strmbase.h"
38 #include "wine/list.h"
40 #define DECLARE_CRITICAL_SECTION(cs) \
41 static CRITICAL_SECTION cs; \
42 static CRITICAL_SECTION_DEBUG cs##_debug = \
43 { 0, 0, &cs, { &cs##_debug.ProcessLocksList, &cs##_debug.ProcessLocksList }, \
44 0, 0, { (DWORD_PTR)(__FILE__ ": " # cs) }}; \
45 static CRITICAL_SECTION cs = { &cs##_debug, -1, 0, 0, 0, 0 };
47 static inline const char *debugstr_time(REFERENCE_TIME time
)
49 ULONGLONG abstime
= time
>= 0 ? time
: -time
;
50 unsigned int i
= 0, j
= 0;
51 char buffer
[23], rev
[23];
53 while (abstime
|| i
<= 8)
55 buffer
[i
++] = '0' + (abstime
% 10);
57 if (i
== 7) buffer
[i
++] = '.';
59 if (time
< 0) buffer
[i
++] = '-';
61 while (i
--) rev
[j
++] = buffer
[i
];
62 while (rev
[j
-1] == '0' && rev
[j
-2] != '.') --j
;
65 return wine_dbg_sprintf("%s", rev
);
68 /* see IAsyncReader::Request on MSDN for the explanation of this */
69 #define MEDIATIME_FROM_BYTES(x) ((LONGLONG)(x) * 10000000)
70 #define BYTES_FROM_MEDIATIME(time) ((time) / 10000000)
72 HRESULT
acm_wrapper_create(IUnknown
*outer
, IUnknown
**out
);
73 HRESULT
avi_dec_create(IUnknown
*outer
, IUnknown
**out
);
74 HRESULT
async_reader_create(IUnknown
*outer
, IUnknown
**out
);
75 HRESULT
dsound_render_create(IUnknown
*outer
, IUnknown
**out
);
76 HRESULT
filter_graph_create(IUnknown
*outer
, IUnknown
**out
);
77 HRESULT
filter_graph_no_thread_create(IUnknown
*outer
, IUnknown
**out
);
78 HRESULT
filter_mapper_create(IUnknown
*outer
, IUnknown
**out
);
79 HRESULT
mem_allocator_create(IUnknown
*outer
, IUnknown
**out
);
80 HRESULT
system_clock_create(IUnknown
*outer
, IUnknown
**out
);
81 HRESULT
seeking_passthrough_create(IUnknown
*outer
, IUnknown
**out
);
82 HRESULT
video_renderer_create(IUnknown
*outer
, IUnknown
**out
);
83 HRESULT
video_renderer_default_create(IUnknown
*outer
, IUnknown
**out
);
84 HRESULT
vmr7_create(IUnknown
*outer
, IUnknown
**out
);
85 HRESULT
vmr9_create(IUnknown
*outer
, IUnknown
**out
);
87 extern const char * qzdebugstr_guid(const GUID
* id
);
88 extern void video_unregister_windowclass(void);
90 BOOL
get_media_type(const WCHAR
*filename
, GUID
*majortype
, GUID
*subtype
, GUID
*source_clsid
);
94 IVideoWindow IVideoWindow_iface
;
95 IBasicVideo IBasicVideo_iface
;
104 struct strmbase_filter
*pFilter
;
105 struct strmbase_pin
*pPin
;
106 const struct video_window_ops
*ops
;
109 struct video_window_ops
111 RECT (*get_default_rect
)(struct video_window
*window
);
112 HRESULT (*get_current_image
)(struct video_window
*window
, LONG
*size
, LONG
*image
);
115 void video_window_cleanup(struct video_window
*window
);
116 HRESULT
video_window_create_window(struct video_window
*window
);
117 void video_window_init(struct video_window
*window
, const IVideoWindowVtbl
*vtbl
,
118 struct strmbase_filter
*filter
, struct strmbase_pin
*pin
, const struct video_window_ops
*ops
);
119 void video_window_unregister_class(void);
121 HRESULT WINAPI
BaseControlWindowImpl_QueryInterface(IVideoWindow
*iface
, REFIID iid
, void **out
);
122 ULONG WINAPI
BaseControlWindowImpl_AddRef(IVideoWindow
*iface
);
123 ULONG WINAPI
BaseControlWindowImpl_Release(IVideoWindow
*iface
);
124 HRESULT WINAPI
BaseControlWindowImpl_GetTypeInfoCount(IVideoWindow
*iface
, UINT
*pctinfo
);
125 HRESULT WINAPI
BaseControlWindowImpl_GetTypeInfo(IVideoWindow
*iface
, UINT iTInfo
, LCID lcid
, ITypeInfo
**ppTInfo
);
126 HRESULT WINAPI
BaseControlWindowImpl_GetIDsOfNames(IVideoWindow
*iface
, REFIID riid
, LPOLESTR
*rgszNames
, UINT cNames
, LCID lcid
, DISPID
*rgDispId
);
127 HRESULT WINAPI
BaseControlWindowImpl_Invoke(IVideoWindow
*iface
, DISPID dispIdMember
, REFIID riid
, LCID lcid
, WORD wFlags
, DISPPARAMS
*pDispParams
, VARIANT
*pVarResult
, EXCEPINFO
*pExepInfo
, UINT
*puArgErr
);
128 HRESULT WINAPI
BaseControlWindowImpl_put_Caption(IVideoWindow
*iface
, BSTR strCaption
);
129 HRESULT WINAPI
BaseControlWindowImpl_get_Caption(IVideoWindow
*iface
, BSTR
*strCaption
);
130 HRESULT WINAPI
BaseControlWindowImpl_put_WindowStyle(IVideoWindow
*iface
, LONG WindowStyle
);
131 HRESULT WINAPI
BaseControlWindowImpl_get_WindowStyle(IVideoWindow
*iface
, LONG
*WindowStyle
);
132 HRESULT WINAPI
BaseControlWindowImpl_put_WindowStyleEx(IVideoWindow
*iface
, LONG WindowStyleEx
);
133 HRESULT WINAPI
BaseControlWindowImpl_get_WindowStyleEx(IVideoWindow
*iface
, LONG
*WindowStyleEx
);
134 HRESULT WINAPI
BaseControlWindowImpl_put_AutoShow(IVideoWindow
*iface
, LONG AutoShow
);
135 HRESULT WINAPI
BaseControlWindowImpl_get_AutoShow(IVideoWindow
*iface
, LONG
*AutoShow
);
136 HRESULT WINAPI
BaseControlWindowImpl_put_WindowState(IVideoWindow
*iface
, LONG WindowState
);
137 HRESULT WINAPI
BaseControlWindowImpl_get_WindowState(IVideoWindow
*iface
, LONG
*WindowState
);
138 HRESULT WINAPI
BaseControlWindowImpl_put_BackgroundPalette(IVideoWindow
*iface
, LONG BackgroundPalette
);
139 HRESULT WINAPI
BaseControlWindowImpl_get_BackgroundPalette(IVideoWindow
*iface
, LONG
*pBackgroundPalette
);
140 HRESULT WINAPI
BaseControlWindowImpl_put_Visible(IVideoWindow
*iface
, LONG Visible
);
141 HRESULT WINAPI
BaseControlWindowImpl_get_Visible(IVideoWindow
*iface
, LONG
*pVisible
);
142 HRESULT WINAPI
BaseControlWindowImpl_put_Left(IVideoWindow
*iface
, LONG Left
);
143 HRESULT WINAPI
BaseControlWindowImpl_get_Left(IVideoWindow
*iface
, LONG
*pLeft
);
144 HRESULT WINAPI
BaseControlWindowImpl_put_Width(IVideoWindow
*iface
, LONG Width
);
145 HRESULT WINAPI
BaseControlWindowImpl_get_Width(IVideoWindow
*iface
, LONG
*pWidth
);
146 HRESULT WINAPI
BaseControlWindowImpl_put_Top(IVideoWindow
*iface
, LONG Top
);
147 HRESULT WINAPI
BaseControlWindowImpl_get_Top(IVideoWindow
*iface
, LONG
*pTop
);
148 HRESULT WINAPI
BaseControlWindowImpl_put_Height(IVideoWindow
*iface
, LONG Height
);
149 HRESULT WINAPI
BaseControlWindowImpl_get_Height(IVideoWindow
*iface
, LONG
*pHeight
);
150 HRESULT WINAPI
BaseControlWindowImpl_put_Owner(IVideoWindow
*iface
, OAHWND Owner
);
151 HRESULT WINAPI
BaseControlWindowImpl_get_Owner(IVideoWindow
*iface
, OAHWND
*Owner
);
152 HRESULT WINAPI
BaseControlWindowImpl_put_MessageDrain(IVideoWindow
*iface
, OAHWND Drain
);
153 HRESULT WINAPI
BaseControlWindowImpl_get_MessageDrain(IVideoWindow
*iface
, OAHWND
*Drain
);
154 HRESULT WINAPI
BaseControlWindowImpl_get_BorderColor(IVideoWindow
*iface
, LONG
*Color
);
155 HRESULT WINAPI
BaseControlWindowImpl_put_BorderColor(IVideoWindow
*iface
, LONG Color
);
156 HRESULT WINAPI
BaseControlWindowImpl_get_FullScreenMode(IVideoWindow
*iface
, LONG
*FullScreenMode
);
157 HRESULT WINAPI
BaseControlWindowImpl_put_FullScreenMode(IVideoWindow
*iface
, LONG FullScreenMode
);
158 HRESULT WINAPI
BaseControlWindowImpl_SetWindowForeground(IVideoWindow
*iface
, LONG Focus
);
159 HRESULT WINAPI
BaseControlWindowImpl_SetWindowPosition(IVideoWindow
*iface
, LONG Left
, LONG Top
, LONG Width
, LONG Height
);
160 HRESULT WINAPI
BaseControlWindowImpl_GetWindowPosition(IVideoWindow
*iface
, LONG
*pLeft
, LONG
*pTop
, LONG
*pWidth
, LONG
*pHeight
);
161 HRESULT WINAPI
BaseControlWindowImpl_NotifyOwnerMessage(IVideoWindow
*iface
, OAHWND hwnd
, LONG uMsg
, LONG_PTR wParam
, LONG_PTR lParam
);
162 HRESULT WINAPI
BaseControlWindowImpl_GetMinIdealImageSize(IVideoWindow
*iface
, LONG
*pWidth
, LONG
*pHeight
);
163 HRESULT WINAPI
BaseControlWindowImpl_GetMaxIdealImageSize(IVideoWindow
*iface
, LONG
*pWidth
, LONG
*pHeight
);
164 HRESULT WINAPI
BaseControlWindowImpl_GetRestorePosition(IVideoWindow
*iface
, LONG
*pLeft
, LONG
*pTop
, LONG
*pWidth
, LONG
*pHeight
);
165 HRESULT WINAPI
BaseControlWindowImpl_HideCursor(IVideoWindow
*iface
, LONG HideCursor
);
166 HRESULT WINAPI
BaseControlWindowImpl_IsCursorHidden(IVideoWindow
*iface
, LONG
*CursorHidden
);
168 #endif /* __QUARTZ_PRIVATE_INCLUDED__ */