ReactOS 0.4.17-dev-966-gf06eace
videorenderer.c
Go to the documentation of this file.
1/*
2 * Video Renderer (Fullscreen and Windowed using Direct Draw)
3 *
4 * Copyright 2004 Christian Costa
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 */
20
21#include "quartz_private.h"
22
23#include "uuids.h"
24#include "vfwmsgs.h"
25#include "amvideo.h"
26#include "windef.h"
27#include "winbase.h"
28#include "dshow.h"
29#include "evcode.h"
30#include "strmif.h"
31#include "ddraw.h"
32#include "dvdmedia.h"
33
34#include <assert.h>
35#include "wine/debug.h"
36
38
40{
43
45
49
51};
52
53static inline struct video_renderer *impl_from_video_window(struct video_window *iface)
54{
55 return CONTAINING_RECORD(iface, struct video_renderer, window);
56}
57
59{
60 return CONTAINING_RECORD(iface, struct video_renderer, renderer);
61}
62
63static inline struct video_renderer *impl_from_IVideoWindow(IVideoWindow *iface)
64{
65 return CONTAINING_RECORD(iface, struct video_renderer, window.IVideoWindow_iface);
66}
67
69{
70 if (IsEqualGUID(&mt->formattype, &FORMAT_VideoInfo))
71 return &((VIDEOINFOHEADER *)mt->pbFormat)->bmiHeader;
72 else
73 return &((VIDEOINFOHEADER2 *)mt->pbFormat)->bmiHeader;
74}
75
77{
78 if (This->window.AutoShow)
79 ShowWindow(This->window.hwnd, SW_SHOW);
80}
81
83{
85 RECT src = filter->window.src, dst = filter->window.dst;
86 LPBYTE pbSrcStream = NULL;
87 HRESULT hr;
88 HDC dc;
89
90 TRACE("filter %p, sample %p.\n", filter, pSample);
91
92 hr = IMediaSample_GetPointer(pSample, &pbSrcStream);
93 if (FAILED(hr))
94 {
95 ERR("Failed to get buffer pointer, hr %#lx.\n", hr);
96 return hr;
97 }
98
99 dc = GetDC(filter->window.hwnd);
100 StretchDIBits(dc, dst.left, dst.top, dst.right - dst.left, dst.bottom - dst.top,
101 src.left, src.top, src.right - src.left, src.bottom - src.top, pbSrcStream,
102 (BITMAPINFO *)get_bitmap_header(&filter->renderer.sink.pin.mt), DIB_RGB_COLORS, SRCCOPY);
103 ReleaseDC(filter->window.hwnd, dc);
104
105 return S_OK;
106}
107
109{
110 if (!IsEqualGUID(&mt->majortype, &MEDIATYPE_Video))
111 return S_FALSE;
112
113 if (!IsEqualGUID(&mt->subtype, &MEDIASUBTYPE_RGB32)
114 && !IsEqualGUID(&mt->subtype, &MEDIASUBTYPE_RGB24)
115 && !IsEqualGUID(&mt->subtype, &MEDIASUBTYPE_RGB565)
116 && !IsEqualGUID(&mt->subtype, &MEDIASUBTYPE_RGB8))
117 return S_FALSE;
118
119 if (!IsEqualGUID(&mt->formattype, &FORMAT_VideoInfo)
120 && !IsEqualGUID(&mt->formattype, &FORMAT_VideoInfo2))
121 return S_FALSE;
122
123 return S_OK;
124}
125
127{
129
132 free(filter);
133}
134
136{
138
139 if (IsEqualGUID(iid, &IID_IBasicVideo))
140 *out = &filter->window.IBasicVideo_iface;
141 else if (IsEqualGUID(iid, &IID_IVideoWindow))
142 *out = &filter->window.IVideoWindow_iface;
143 else
144 return E_NOINTERFACE;
145
146 IUnknown_AddRef((IUnknown *)*out);
147 return S_OK;
148}
149
151{
153
154 if (IsEqualGUID(iid, &IID_IOverlay))
155 *out = &filter->IOverlay_iface;
156 else
157 return E_NOINTERFACE;
158
159 IUnknown_AddRef((IUnknown *)*out);
160 return S_OK;
161}
162
164{
166
167 TRACE("(%p)->()\n", This);
168
169 if (This->window.AutoShow)
170 /* Black it out */
172}
173
175{
177
179}
180
182{
184 const BITMAPINFOHEADER *bitmap_header = get_bitmap_header(mt);
185 HWND window = filter->window.hwnd;
186 RECT rect;
187
188 filter->VideoWidth = bitmap_header->biWidth;
189 filter->VideoHeight = abs(bitmap_header->biHeight);
190 SetRect(&rect, 0, 0, filter->VideoWidth, filter->VideoHeight);
191 filter->window.src = rect;
192
197 GetClientRect(window, &filter->window.dst);
198
199 return S_OK;
200}
201
203{
205
206 SetRect(rect, 0, 0, filter->VideoWidth, filter->VideoHeight);
207}
208
210{
211 .renderer_query_accept = video_renderer_query_accept,
212 .renderer_render = video_renderer_render,
213 .renderer_init_stream = video_renderer_init_stream,
214 .renderer_stop_stream = video_renderer_stop_stream,
215 .renderer_destroy = video_renderer_destroy,
216 .renderer_query_interface = video_renderer_query_interface,
217 .renderer_pin_query_interface = video_renderer_pin_query_interface,
218 .renderer_connect = video_renderer_connect,
219};
220
222{
224 const BITMAPINFOHEADER *bih;
225 size_t image_size;
227
228 EnterCriticalSection(&filter->renderer.filter.stream_cs);
229
230 bih = get_bitmap_header(&filter->renderer.sink.pin.mt);
231 image_size = bih->biWidth * bih->biHeight * bih->biBitCount / 8;
232
233 if (!image)
234 {
235 LeaveCriticalSection(&filter->renderer.filter.stream_cs);
236 *size = sizeof(BITMAPINFOHEADER) + image_size;
237 return S_OK;
238 }
239
240 if (filter->renderer.filter.state != State_Paused)
241 {
242 LeaveCriticalSection(&filter->renderer.filter.stream_cs);
243 return VFW_E_NOT_PAUSED;
244 }
245
246 if (!filter->renderer.current_sample)
247 {
248 LeaveCriticalSection(&filter->renderer.filter.stream_cs);
249 return E_UNEXPECTED;
250 }
251
252 if (*size < sizeof(BITMAPINFOHEADER) + image_size)
253 {
254 LeaveCriticalSection(&filter->renderer.filter.stream_cs);
255 return E_OUTOFMEMORY;
256 }
257
258 memcpy(image, bih, sizeof(BITMAPINFOHEADER));
259 IMediaSample_GetPointer(filter->renderer.current_sample, &sample_data);
261
262 LeaveCriticalSection(&filter->renderer.filter.stream_cs);
263 return S_OK;
264}
265
266static const struct video_window_ops window_ops =
267{
268 .get_default_rect = video_renderer_get_default_rect,
269 .get_current_image = video_renderer_get_current_image,
270};
271
273 LONG *FullScreenMode)
274{
276
277 TRACE("window %p, fullscreen %p.\n", This, FullScreenMode);
278
279 if (!FullScreenMode)
280 return E_POINTER;
281
282 *FullScreenMode = This->FullScreenMode;
283
284 return S_OK;
285}
286
288{
290 HWND window = filter->window.hwnd;
291
292 FIXME("filter %p, fullscreen %ld.\n", filter, fullscreen);
293
294 if (fullscreen == filter->FullScreenMode)
295 return S_FALSE;
296
297 if (fullscreen)
298 {
299 filter->saved_style = GetWindowLongW(window, GWL_STYLE);
305 GetWindowRect(window, &filter->window.dst);
306 }
307 else
308 {
310 SetParent(window, filter->window.hwndOwner);
311 SetWindowLongW(window, GWL_STYLE, filter->saved_style);
312 GetClientRect(window, &filter->window.dst);
313 SetWindowPos(window, 0, filter->window.dst.left, filter->window.dst.top,
314 filter->window.dst.right, filter->window.dst.bottom, SWP_NOZORDER | SWP_SHOWWINDOW);
315 }
316 filter->FullScreenMode = fullscreen;
317
318 return S_OK;
319}
320
321static const IVideoWindowVtbl IVideoWindow_VTable =
322{
369};
370
371static inline struct video_renderer *impl_from_IOverlay(IOverlay *iface)
372{
373 return CONTAINING_RECORD(iface, struct video_renderer, IOverlay_iface);
374}
375
377{
379 return IPin_QueryInterface(&filter->renderer.sink.pin.IPin_iface, iid, out);
380}
381
383{
385 return IPin_AddRef(&filter->renderer.sink.pin.IPin_iface);
386}
387
389{
391 return IPin_Release(&filter->renderer.sink.pin.IPin_iface);
392}
393
395{
396 FIXME("iface %p, count %p, palette %p, stub!\n", iface, count, palette);
397 return E_NOTIMPL;
398}
399
401{
402 FIXME("iface %p, count %lu, palette %p, stub!\n", iface, count, palette);
403 return E_NOTIMPL;
404}
405
407{
408 FIXME("iface %p, key %p, stub!\n", iface, key);
409 return E_NOTIMPL;
410}
411
413{
414 FIXME("iface %p, key %p, stub!\n", iface, key);
415 return E_NOTIMPL;
416}
417
419{
420 FIXME("iface %p, key %p, stub!\n", iface, key);
421 return E_NOTIMPL;
422}
423
425{
427
428 TRACE("filter %p, window %p.\n", filter, window);
429
430 *window = filter->window.hwnd;
431 return S_OK;
432}
433
435{
436 FIXME("iface %p, source %p, dest %p, region %p, stub!\n", iface, source, dest, region);
437 return E_NOTIMPL;
438}
439
441{
442 FIXME("iface %p, source %p, dest %p, stub!\n", iface, source, dest);
443 return E_NOTIMPL;
444}
445
447{
448 FIXME("iface %p, sink %p, flags %#lx, stub!\n", iface, sink, flags);
449 return E_NOTIMPL;
450}
451
453{
454 FIXME("iface %p, stub!\n", iface);
455 return E_NOTIMPL;
456}
457
458static const IOverlayVtbl overlay_vtbl =
459{
473};
474
476{
477 struct video_renderer *object;
478 HRESULT hr;
479
480 if (!(object = calloc(1, sizeof(*object))))
481 return E_OUTOFMEMORY;
482
483 strmbase_renderer_init(&object->renderer, outer, &CLSID_VideoRenderer, L"In", &renderer_ops);
484 wcscpy(object->renderer.sink.pin.name, L"Input");
485
486 object->IOverlay_iface.lpVtbl = &overlay_vtbl;
487
489 &object->renderer.filter, &object->renderer.sink.pin, &window_ops);
490
492 {
495 free(object);
496 return hr;
497 }
498
499 TRACE("Created video renderer %p.\n", object);
500 *out = &object->renderer.filter.IUnknown_inner;
501 return S_OK;
502}
503
505{
506 HRESULT hr;
507
509 return hr;
510
512}
BOOL fullscreen
Definition: 3dtext.c:44
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
#define FIXME(fmt,...)
Definition: precomp.h:53
#define ERR(fmt,...)
Definition: precomp.h:57
RECT rect
Definition: combotst.c:67
HDC dc
Definition: cylfrac.c:34
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_NOTIMPL
Definition: ddrawi.h:99
#define free
Definition: debug_ros.c:5
HRESULT hr
Definition: delayimp.cpp:582
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
static HRESULT WINAPI VideoWindow_get_FullScreenMode(IVideoWindow *iface, LONG *FullScreenMode)
static HRESULT WINAPI overlay_GetColorKey(IOverlay *iface, COLORKEY *key)
static struct video_renderer * impl_from_video_window(struct video_window *iface)
Definition: videorenderer.c:53
static HRESULT video_renderer_pin_query_interface(struct strmbase_renderer *iface, REFIID iid, void **out)
static const BITMAPINFOHEADER * get_bitmap_header(const AM_MEDIA_TYPE *mt)
Definition: videorenderer.c:68
static HRESULT WINAPI VideoWindow_put_FullScreenMode(IVideoWindow *iface, LONG fullscreen)
static const struct video_window_ops window_ops
static const struct strmbase_renderer_ops renderer_ops
static HRESULT WINAPI overlay_GetWindowHandle(IOverlay *iface, HWND *window)
static void VideoRenderer_AutoShowWindow(struct video_renderer *This)
Definition: videorenderer.c:76
static void video_renderer_destroy(struct strmbase_renderer *iface)
static void video_renderer_stop_stream(struct strmbase_renderer *iface)
static struct video_renderer * impl_from_IOverlay(IOverlay *iface)
static HRESULT video_renderer_get_current_image(struct video_window *iface, LONG *size, LONG *image)
static const IOverlayVtbl overlay_vtbl
static ULONG WINAPI overlay_AddRef(IOverlay *iface)
static HRESULT video_renderer_render(struct strmbase_renderer *iface, IMediaSample *pSample)
Definition: videorenderer.c:82
static HRESULT WINAPI overlay_QueryInterface(IOverlay *iface, REFIID iid, void **out)
static struct video_renderer * impl_from_IVideoWindow(IVideoWindow *iface)
Definition: videorenderer.c:63
static void video_renderer_get_default_rect(struct video_window *iface, RECT *rect)
static void video_renderer_init_stream(struct strmbase_renderer *iface)
HRESULT video_renderer_create(IUnknown *outer, IUnknown **out)
static const IVideoWindowVtbl IVideoWindow_VTable
static HRESULT WINAPI overlay_SetColorKey(IOverlay *iface, COLORKEY *key)
static HRESULT WINAPI overlay_SetPalette(IOverlay *iface, DWORD count, PALETTEENTRY *palette)
static HRESULT WINAPI overlay_GetVideoPosition(IOverlay *iface, RECT *source, RECT *dest)
HRESULT video_renderer_default_create(IUnknown *outer, IUnknown **out)
static HRESULT video_renderer_query_interface(struct strmbase_renderer *iface, REFIID iid, void **out)
static HRESULT WINAPI overlay_GetDefaultColorKey(IOverlay *iface, COLORKEY *key)
static HRESULT WINAPI overlay_Advise(IOverlay *iface, IOverlayNotify *sink, DWORD flags)
static HRESULT WINAPI overlay_Unadvise(IOverlay *iface)
static struct video_renderer * impl_from_strmbase_renderer(struct strmbase_renderer *iface)
Definition: videorenderer.c:58
static HRESULT WINAPI overlay_GetClipList(IOverlay *iface, RECT *source, RECT *dest, RGNDATA **region)
static HRESULT video_renderer_connect(struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt)
static ULONG WINAPI overlay_Release(IOverlay *iface)
static HRESULT WINAPI overlay_GetPalette(IOverlay *iface, DWORD *count, PALETTEENTRY **palette)
static HRESULT video_renderer_query_accept(struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt)
#define L(x)
Definition: resources.c:13
#define abs(i)
Definition: fconv.c:206
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLenum src
Definition: glext.h:6340
GLsizeiptr size
Definition: glext.h:5919
GLenum GLenum dst
Definition: glext.h:6340
GLbitfield flags
Definition: glext.h:7161
GLsizei GLenum GLboolean sink
Definition: glext.h:5672
#define S_OK
Definition: intsafe.h:52
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define FAILED(hr)
Definition: intsafe.h:51
JSAMPARRAY sample_data
Definition: jdct.h:183
static GLint image_size(GLint width, GLint height, GLenum format, GLenum type)
Definition: mipmap.c:4858
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
static HDC
Definition: imagelist.c:88
static IHTMLWindow2 * window
Definition: events.c:77
static char * dest
Definition: rtl.c:149
static IUnknown * outer
Definition: compobj.c:82
static HPALETTE palette
Definition: clipboard.c:1457
#define WS_POPUP
Definition: pedump.c:616
long LONG
Definition: pedump.c:60
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define REFIID
Definition: guiddef.h:118
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
#define SW_HIDE
Definition: winuser.h:779
#define SWP_NOACTIVATE
Definition: winuser.h:1253
BOOL WINAPI RedrawWindow(_In_opt_ HWND, _In_opt_ LPCRECT, _In_opt_ HRGN, _In_ UINT)
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
#define SM_CYSCREEN
Definition: winuser.h:971
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
HWND WINAPI SetParent(_In_ HWND, _In_opt_ HWND)
LONG WINAPI SetWindowLongW(_In_ HWND, _In_ int, _In_ LONG)
LONG WINAPI GetWindowLongW(_In_ HWND, _In_ int)
#define SWP_NOMOVE
Definition: winuser.h:1255
BOOL WINAPI AdjustWindowRectEx(_Inout_ LPRECT, _In_ DWORD, _In_ BOOL, _In_ DWORD)
#define RDW_ERASE
Definition: winuser.h:1222
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
#define HWND_TOP
Definition: winuser.h:1218
#define SWP_SHOWWINDOW
Definition: winuser.h:1259
HDC WINAPI GetDC(_In_opt_ HWND)
#define SW_SHOW
Definition: winuser.h:786
#define SM_CXSCREEN
Definition: winuser.h:970
#define SWP_NOZORDER
Definition: winuser.h:1258
#define GWL_STYLE
Definition: winuser.h:863
int WINAPI GetSystemMetrics(_In_ int)
#define RDW_INVALIDATE
Definition: winuser.h:1225
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
#define GWL_EXSTYLE
Definition: winuser.h:862
ULONG WINAPI BaseControlWindowImpl_AddRef(IVideoWindow *iface)
Definition: window.c:131
ULONG WINAPI BaseControlWindowImpl_Release(IVideoWindow *iface)
Definition: window.c:137
void video_window_init(struct video_window *window, const IVideoWindowVtbl *vtbl, struct strmbase_filter *filter, struct strmbase_pin *pin, const struct video_window_ops *ops)
Definition: window.c:1275
HRESULT WINAPI BaseControlWindowImpl_HideCursor(IVideoWindow *iface, LONG HideCursor)
Definition: window.c:686
HRESULT WINAPI BaseControlWindowImpl_put_Visible(IVideoWindow *iface, LONG Visible)
Definition: window.c:347
HRESULT WINAPI BaseControlWindowImpl_GetTypeInfo(IVideoWindow *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
Definition: window.c:150
HRESULT WINAPI BaseControlWindowImpl_put_WindowState(IVideoWindow *iface, LONG WindowState)
Definition: window.c:299
HRESULT WINAPI BaseControlWindowImpl_get_Top(IVideoWindow *iface, LONG *pTop)
Definition: window.c:442
HRESULT WINAPI BaseControlWindowImpl_put_Height(IVideoWindow *iface, LONG Height)
Definition: window.c:454
HRESULT WINAPI BaseControlWindowImpl_get_Height(IVideoWindow *iface, LONG *pHeight)
Definition: window.c:469
HRESULT video_window_create_window(struct video_window *window)
Definition: window.c:98
HRESULT WINAPI BaseControlWindowImpl_get_Width(IVideoWindow *iface, LONG *pWidth)
Definition: window.c:415
HRESULT WINAPI BaseControlWindowImpl_put_AutoShow(IVideoWindow *iface, LONG AutoShow)
Definition: window.c:274
HRESULT WINAPI BaseControlWindowImpl_Invoke(IVideoWindow *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExepInfo, UINT *puArgErr)
Definition: window.c:174
HRESULT WINAPI BaseControlWindowImpl_QueryInterface(IVideoWindow *iface, REFIID iid, void **out)
Definition: window.c:125
HRESULT WINAPI BaseControlWindowImpl_get_Caption(IVideoWindow *iface, BSTR *strCaption)
Definition: window.c:206
HRESULT WINAPI BaseControlWindowImpl_put_Top(IVideoWindow *iface, LONG Top)
Definition: window.c:427
HRESULT WINAPI BaseControlWindowImpl_put_Owner(IVideoWindow *iface, OAHWND Owner)
Definition: window.c:481
HRESULT WINAPI BaseControlWindowImpl_get_WindowStyle(IVideoWindow *iface, LONG *WindowStyle)
Definition: window.c:243
HRESULT WINAPI BaseControlWindowImpl_GetWindowPosition(IVideoWindow *iface, LONG *pLeft, LONG *pTop, LONG *pWidth, LONG *pHeight)
Definition: window.c:609
HRESULT WINAPI BaseControlWindowImpl_get_WindowState(IVideoWindow *iface, LONG *WindowState)
Definition: window.c:309
HRESULT WINAPI BaseControlWindowImpl_GetMinIdealImageSize(IVideoWindow *iface, LONG *pWidth, LONG *pHeight)
Definition: window.c:651
HRESULT WINAPI BaseControlWindowImpl_put_Width(IVideoWindow *iface, LONG Width)
Definition: window.c:400
HRESULT WINAPI BaseControlWindowImpl_get_Left(IVideoWindow *iface, LONG *pLeft)
Definition: window.c:388
HRESULT WINAPI BaseControlWindowImpl_GetIDsOfNames(IVideoWindow *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
Definition: window.c:157
HRESULT WINAPI BaseControlWindowImpl_GetMaxIdealImageSize(IVideoWindow *iface, LONG *pWidth, LONG *pHeight)
Definition: window.c:664
HRESULT WINAPI BaseControlWindowImpl_get_WindowStyleEx(IVideoWindow *iface, LONG *WindowStyleEx)
Definition: window.c:264
HRESULT WINAPI BaseControlWindowImpl_put_Left(IVideoWindow *iface, LONG Left)
Definition: window.c:373
HRESULT vmr7_create(IUnknown *outer, IUnknown **out)
Definition: vmr7.c:1553
HRESULT WINAPI BaseControlWindowImpl_SetWindowPosition(IVideoWindow *iface, LONG Left, LONG Top, LONG Width, LONG Height)
Definition: window.c:594
HRESULT WINAPI BaseControlWindowImpl_put_BorderColor(IVideoWindow *iface, LONG Color)
Definition: window.c:549
HRESULT WINAPI BaseControlWindowImpl_get_Visible(IVideoWindow *iface, LONG *pVisible)
Definition: window.c:360
HRESULT WINAPI BaseControlWindowImpl_get_BackgroundPalette(IVideoWindow *iface, LONG *pBackgroundPalette)
Definition: window.c:338
HRESULT WINAPI BaseControlWindowImpl_get_MessageDrain(IVideoWindow *iface, OAHWND *Drain)
Definition: window.c:529
HRESULT WINAPI BaseControlWindowImpl_put_MessageDrain(IVideoWindow *iface, OAHWND Drain)
Definition: window.c:515
HRESULT WINAPI BaseControlWindowImpl_SetWindowForeground(IVideoWindow *iface, LONG Focus)
Definition: window.c:574
void video_window_cleanup(struct video_window *window)
Definition: window.c:1288
HRESULT WINAPI BaseControlWindowImpl_get_AutoShow(IVideoWindow *iface, LONG *AutoShow)
Definition: window.c:288
HRESULT WINAPI BaseControlWindowImpl_GetTypeInfoCount(IVideoWindow *iface, UINT *pctinfo)
Definition: window.c:143
HRESULT WINAPI BaseControlWindowImpl_put_WindowStyle(IVideoWindow *iface, LONG WindowStyle)
Definition: window.c:226
HRESULT WINAPI BaseControlWindowImpl_get_Owner(IVideoWindow *iface, OAHWND *Owner)
Definition: window.c:504
HRESULT WINAPI BaseControlWindowImpl_GetRestorePosition(IVideoWindow *iface, LONG *pLeft, LONG *pTop, LONG *pWidth, LONG *pHeight)
Definition: window.c:677
HRESULT WINAPI BaseControlWindowImpl_NotifyOwnerMessage(IVideoWindow *iface, OAHWND hwnd, LONG uMsg, LONG_PTR wParam, LONG_PTR lParam)
Definition: window.c:625
HRESULT WINAPI BaseControlWindowImpl_put_BackgroundPalette(IVideoWindow *iface, LONG BackgroundPalette)
Definition: window.c:329
HRESULT WINAPI BaseControlWindowImpl_IsCursorHidden(IVideoWindow *iface, LONG *CursorHidden)
Definition: window.c:695
HRESULT WINAPI BaseControlWindowImpl_get_BorderColor(IVideoWindow *iface, LONG *Color)
Definition: window.c:540
HRESULT WINAPI BaseControlWindowImpl_put_Caption(IVideoWindow *iface, BSTR strCaption)
Definition: window.c:191
HRESULT WINAPI BaseControlWindowImpl_put_WindowStyleEx(IVideoWindow *iface, LONG WindowStyleEx)
Definition: window.c:253
#define calloc
Definition: rosglue.h:14
wcscpy
#define TRACE(s)
Definition: solgame.cpp:4
void strmbase_renderer_init(struct strmbase_renderer *filter, IUnknown *outer, const CLSID *clsid, const WCHAR *sink_name, const struct strmbase_renderer_ops *ops)
Definition: renderer.c:584
void strmbase_renderer_cleanup(struct strmbase_renderer *filter)
Definition: renderer.c:568
Definition: dcommon.idl:28
long bottom
Definition: dcommon.idl:29
long right
Definition: dcommon.idl:29
long left
Definition: dcommon.idl:29
long top
Definition: dcommon.idl:29
Definition: filter.c:165
IBaseFilter * filter
Definition: filtergraph.c:75
Definition: image.c:84
Definition: copy.c:22
struct strmbase_renderer renderer
Definition: videorenderer.c:41
struct video_window window
Definition: videorenderer.c:42
IOverlay IOverlay_iface
Definition: videorenderer.c:44
unsigned char * LPBYTE
Definition: typedefs.h:53
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
uint32_t ULONG
Definition: typedefs.h:59
#define VFW_E_NOT_PAUSED
Definition: vfwmsgs.h:76
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
#define WINAPI
Definition: msvc.h:6
#define S_FALSE
Definition: winerror.h:3451
#define E_NOINTERFACE
Definition: winerror.h:3479
#define E_UNEXPECTED
Definition: winerror.h:3528
#define E_POINTER
Definition: winerror.h:3480
#define DIB_RGB_COLORS
Definition: wingdi.h:367
#define SRCCOPY
Definition: wingdi.h:333
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)
unsigned char BYTE
Definition: xxhash.c:193