ReactOS 0.4.17-dev-934-g091855f
videorenderer.c File Reference
#include "quartz_private.h"
#include "uuids.h"
#include "vfwmsgs.h"
#include "amvideo.h"
#include "windef.h"
#include "winbase.h"
#include "dshow.h"
#include "evcode.h"
#include "strmif.h"
#include "ddraw.h"
#include "dvdmedia.h"
#include <assert.h>
#include "wine/debug.h"
Include dependency graph for videorenderer.c:

Go to the source code of this file.

Classes

struct  video_renderer
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (quartz)
 
static struct video_renderer * impl_from_video_window (struct video_window *iface)
 
static struct video_renderer * impl_from_strmbase_renderer (struct strmbase_renderer *iface)
 
static struct video_renderer * impl_from_IVideoWindow (IVideoWindow *iface)
 
static const BITMAPINFOHEADER * get_bitmap_header (const AM_MEDIA_TYPE *mt)
 
static void VideoRenderer_AutoShowWindow (struct video_renderer *This)
 
static HRESULT video_renderer_render (struct strmbase_renderer *iface, IMediaSample *pSample)
 
static HRESULT video_renderer_query_accept (struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt)
 
static void video_renderer_destroy (struct strmbase_renderer *iface)
 
static HRESULT video_renderer_query_interface (struct strmbase_renderer *iface, REFIID iid, void **out)
 
static HRESULT video_renderer_pin_query_interface (struct strmbase_renderer *iface, REFIID iid, void **out)
 
static void video_renderer_stop_stream (struct strmbase_renderer *iface)
 
static void video_renderer_init_stream (struct strmbase_renderer *iface)
 
static HRESULT video_renderer_connect (struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt)
 
static void video_renderer_get_default_rect (struct video_window *iface, RECT *rect)
 
static HRESULT video_renderer_get_current_image (struct video_window *iface, LONG *size, LONG *image)
 
static HRESULT WINAPI VideoWindow_get_FullScreenMode (IVideoWindow *iface, LONG *FullScreenMode)
 
static HRESULT WINAPI VideoWindow_put_FullScreenMode (IVideoWindow *iface, LONG fullscreen)
 
static struct video_renderer * impl_from_IOverlay (IOverlay *iface)
 
static HRESULT WINAPI overlay_QueryInterface (IOverlay *iface, REFIID iid, void **out)
 
static ULONG WINAPI overlay_AddRef (IOverlay *iface)
 
static ULONG WINAPI overlay_Release (IOverlay *iface)
 
static HRESULT WINAPI overlay_GetPalette (IOverlay *iface, DWORD *count, PALETTEENTRY **palette)
 
static HRESULT WINAPI overlay_SetPalette (IOverlay *iface, DWORD count, PALETTEENTRY *palette)
 
static HRESULT WINAPI overlay_GetDefaultColorKey (IOverlay *iface, COLORKEY *key)
 
static HRESULT WINAPI overlay_GetColorKey (IOverlay *iface, COLORKEY *key)
 
static HRESULT WINAPI overlay_SetColorKey (IOverlay *iface, COLORKEY *key)
 
static HRESULT WINAPI overlay_GetWindowHandle (IOverlay *iface, HWND *window)
 
static HRESULT WINAPI overlay_GetClipList (IOverlay *iface, RECT *source, RECT *dest, RGNDATA **region)
 
static HRESULT WINAPI overlay_GetVideoPosition (IOverlay *iface, RECT *source, RECT *dest)
 
static HRESULT WINAPI overlay_Advise (IOverlay *iface, IOverlayNotify *sink, DWORD flags)
 
static HRESULT WINAPI overlay_Unadvise (IOverlay *iface)
 
HRESULT video_renderer_create (IUnknown *outer, IUnknown **out)
 
HRESULT video_renderer_default_create (IUnknown *outer, IUnknown **out)
 

Variables

static const struct strmbase_renderer_ops renderer_ops
 
static const struct video_window_ops window_ops
 
static const IVideoWindowVtbl IVideoWindow_VTable
 
static const IOverlayVtbl overlay_vtbl
 

Function Documentation

◆ get_bitmap_header()

static const BITMAPINFOHEADER * get_bitmap_header ( const AM_MEDIA_TYPE *  mt)
static

Definition at line 68 of file videorenderer.c.

69{
70 if (IsEqualGUID(&mt->formattype, &FORMAT_VideoInfo))
71 return &((VIDEOINFOHEADER *)mt->pbFormat)->bmiHeader;
72 else
73 return &((VIDEOINFOHEADER2 *)mt->pbFormat)->bmiHeader;
74}
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147

Referenced by video_renderer_connect(), video_renderer_get_current_image(), and video_renderer_render().

◆ impl_from_IOverlay()

static struct video_renderer * impl_from_IOverlay ( IOverlay *  iface)
inlinestatic

Definition at line 371 of file videorenderer.c.

372{
373 return CONTAINING_RECORD(iface, struct video_renderer, IOverlay_iface);
374}
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260

Referenced by overlay_AddRef(), overlay_GetWindowHandle(), overlay_QueryInterface(), and overlay_Release().

◆ impl_from_IVideoWindow()

static struct video_renderer * impl_from_IVideoWindow ( IVideoWindow *  iface)
inlinestatic

Definition at line 63 of file videorenderer.c.

64{
65 return CONTAINING_RECORD(iface, struct video_renderer, window.IVideoWindow_iface);
66}
static IHTMLWindow2 * window
Definition: events.c:77

Referenced by VideoWindow_get_FullScreenMode(), and VideoWindow_put_FullScreenMode().

◆ impl_from_strmbase_renderer()

◆ impl_from_video_window()

static struct video_renderer * impl_from_video_window ( struct video_window *  iface)
inlinestatic

Definition at line 53 of file videorenderer.c.

54{
55 return CONTAINING_RECORD(iface, struct video_renderer, window);
56}

Referenced by video_renderer_get_current_image(), and video_renderer_get_default_rect().

◆ overlay_AddRef()

static ULONG WINAPI overlay_AddRef ( IOverlay *  iface)
static

Definition at line 382 of file videorenderer.c.

383{
385 return IPin_AddRef(&filter->renderer.sink.pin.IPin_iface);
386}
static struct video_renderer * impl_from_IOverlay(IOverlay *iface)
Definition: filter.c:165

◆ overlay_Advise()

static HRESULT WINAPI overlay_Advise ( IOverlay *  iface,
IOverlayNotify *  sink,
DWORD  flags 
)
static

Definition at line 446 of file videorenderer.c.

447{
448 FIXME("iface %p, sink %p, flags %#lx, stub!\n", iface, sink, flags);
449 return E_NOTIMPL;
450}
#define FIXME(fmt,...)
Definition: precomp.h:53
#define E_NOTIMPL
Definition: ddrawi.h:99
GLbitfield flags
Definition: glext.h:7161
GLsizei GLenum GLboolean sink
Definition: glext.h:5672

◆ overlay_GetClipList()

static HRESULT WINAPI overlay_GetClipList ( IOverlay *  iface,
RECT *  source,
RECT *  dest,
RGNDATA **  region 
)
static

Definition at line 434 of file videorenderer.c.

435{
436 FIXME("iface %p, source %p, dest %p, region %p, stub!\n", iface, source, dest, region);
437 return E_NOTIMPL;
438}
static char * dest
Definition: rtl.c:149

◆ overlay_GetColorKey()

static HRESULT WINAPI overlay_GetColorKey ( IOverlay *  iface,
COLORKEY *  key 
)
static

Definition at line 412 of file videorenderer.c.

413{
414 FIXME("iface %p, key %p, stub!\n", iface, key);
415 return E_NOTIMPL;
416}
Definition: copy.c:22

◆ overlay_GetDefaultColorKey()

static HRESULT WINAPI overlay_GetDefaultColorKey ( IOverlay *  iface,
COLORKEY *  key 
)
static

Definition at line 406 of file videorenderer.c.

407{
408 FIXME("iface %p, key %p, stub!\n", iface, key);
409 return E_NOTIMPL;
410}

◆ overlay_GetPalette()

static HRESULT WINAPI overlay_GetPalette ( IOverlay *  iface,
DWORD *  count,
PALETTEENTRY **  palette 
)
static

Definition at line 394 of file videorenderer.c.

395{
396 FIXME("iface %p, count %p, palette %p, stub!\n", iface, count, palette);
397 return E_NOTIMPL;
398}
GLuint GLuint GLsizei count
Definition: gl.h:1545
static HPALETTE palette
Definition: clipboard.c:1457

◆ overlay_GetVideoPosition()

static HRESULT WINAPI overlay_GetVideoPosition ( IOverlay *  iface,
RECT *  source,
RECT *  dest 
)
static

Definition at line 440 of file videorenderer.c.

441{
442 FIXME("iface %p, source %p, dest %p, stub!\n", iface, source, dest);
443 return E_NOTIMPL;
444}

◆ overlay_GetWindowHandle()

static HRESULT WINAPI overlay_GetWindowHandle ( IOverlay *  iface,
HWND *  window 
)
static

Definition at line 424 of file videorenderer.c.

425{
427
428 TRACE("filter %p, window %p.\n", filter, window);
429
430 *window = filter->window.hwnd;
431 return S_OK;
432}
#define S_OK
Definition: intsafe.h:52
#define TRACE(s)
Definition: solgame.cpp:4

◆ overlay_QueryInterface()

static HRESULT WINAPI overlay_QueryInterface ( IOverlay *  iface,
REFIID  iid,
void **  out 
)
static

Definition at line 376 of file videorenderer.c.

377{
379 return IPin_QueryInterface(&filter->renderer.sink.pin.IPin_iface, iid, out);
380}
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383

◆ overlay_Release()

static ULONG WINAPI overlay_Release ( IOverlay *  iface)
static

Definition at line 388 of file videorenderer.c.

389{
391 return IPin_Release(&filter->renderer.sink.pin.IPin_iface);
392}

◆ overlay_SetColorKey()

static HRESULT WINAPI overlay_SetColorKey ( IOverlay *  iface,
COLORKEY *  key 
)
static

Definition at line 418 of file videorenderer.c.

419{
420 FIXME("iface %p, key %p, stub!\n", iface, key);
421 return E_NOTIMPL;
422}

◆ overlay_SetPalette()

static HRESULT WINAPI overlay_SetPalette ( IOverlay *  iface,
DWORD  count,
PALETTEENTRY *  palette 
)
static

Definition at line 400 of file videorenderer.c.

401{
402 FIXME("iface %p, count %lu, palette %p, stub!\n", iface, count, palette);
403 return E_NOTIMPL;
404}

◆ overlay_Unadvise()

static HRESULT WINAPI overlay_Unadvise ( IOverlay *  iface)
static

Definition at line 452 of file videorenderer.c.

453{
454 FIXME("iface %p, stub!\n", iface);
455 return E_NOTIMPL;
456}

◆ video_renderer_connect()

static HRESULT video_renderer_connect ( struct strmbase_renderer *  iface,
const AM_MEDIA_TYPE *  mt 
)
static

Definition at line 181 of file videorenderer.c.

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}
RECT rect
Definition: combotst.c:67
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
static const BITMAPINFOHEADER * get_bitmap_header(const AM_MEDIA_TYPE *mt)
Definition: videorenderer.c:68
static struct video_renderer * impl_from_strmbase_renderer(struct strmbase_renderer *iface)
Definition: videorenderer.c:58
#define abs(i)
Definition: fconv.c:206
#define SWP_NOACTIVATE
Definition: winuser.h:1253
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
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)
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
#define SWP_NOZORDER
Definition: winuser.h:1258
#define GWL_STYLE
Definition: winuser.h:863
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
#define GWL_EXSTYLE
Definition: winuser.h:862
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

◆ video_renderer_create()

HRESULT video_renderer_create ( IUnknown *  outer,
IUnknown **  out 
)

Definition at line 475 of file videorenderer.c.

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}
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define free
Definition: debug_ros.c:5
HRESULT hr
Definition: delayimp.cpp:582
static const struct video_window_ops window_ops
static const struct strmbase_renderer_ops renderer_ops
static const IOverlayVtbl overlay_vtbl
static const IVideoWindowVtbl IVideoWindow_VTable
#define L(x)
Definition: resources.c:13
#define FAILED(hr)
Definition: intsafe.h:51
static IUnknown * outer
Definition: compobj.c:82
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 video_window_create_window(struct video_window *window)
Definition: window.c:98
void video_window_cleanup(struct video_window *window)
Definition: window.c:1288
#define calloc
Definition: rosglue.h:14
wcscpy
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

Referenced by video_renderer_default_create().

◆ video_renderer_default_create()

HRESULT video_renderer_default_create ( IUnknown *  outer,
IUnknown **  out 
)

Definition at line 504 of file videorenderer.c.

505{
506 HRESULT hr;
507
509 return hr;
510
512}
HRESULT video_renderer_create(IUnknown *outer, IUnknown **out)
#define SUCCEEDED(hr)
Definition: intsafe.h:50
HRESULT vmr7_create(IUnknown *outer, IUnknown **out)
Definition: vmr7.c:1553

◆ video_renderer_destroy()

static void video_renderer_destroy ( struct strmbase_renderer *  iface)
static

Definition at line 126 of file videorenderer.c.

127{
129
132 free(filter);
133}

◆ video_renderer_get_current_image()

static HRESULT video_renderer_get_current_image ( struct video_window *  iface,
LONG *  size,
LONG *  image 
)
static

Definition at line 221 of file videorenderer.c.

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}
static struct video_renderer * impl_from_video_window(struct video_window *iface)
Definition: videorenderer.c:53
GLsizeiptr size
Definition: glext.h:5919
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
IBaseFilter * filter
Definition: filtergraph.c:75
Definition: image.c:84
#define VFW_E_NOT_PAUSED
Definition: vfwmsgs.h:76
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
#define E_UNEXPECTED
Definition: winerror.h:3528
unsigned char BYTE
Definition: xxhash.c:193

◆ video_renderer_get_default_rect()

static void video_renderer_get_default_rect ( struct video_window *  iface,
RECT *  rect 
)
static

Definition at line 202 of file videorenderer.c.

203{
205
206 SetRect(rect, 0, 0, filter->VideoWidth, filter->VideoHeight);
207}

◆ video_renderer_init_stream()

static void video_renderer_init_stream ( struct strmbase_renderer *  iface)
static

Definition at line 174 of file videorenderer.c.

175{
177
179}
static void VideoRenderer_AutoShowWindow(struct video_renderer *This)
Definition: videorenderer.c:76

◆ video_renderer_pin_query_interface()

static HRESULT video_renderer_pin_query_interface ( struct strmbase_renderer *  iface,
REFIID  iid,
void **  out 
)
static

Definition at line 150 of file videorenderer.c.

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}
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ video_renderer_query_accept()

static HRESULT video_renderer_query_accept ( struct strmbase_renderer *  iface,
const AM_MEDIA_TYPE *  mt 
)
static

Definition at line 108 of file videorenderer.c.

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}
#define S_FALSE
Definition: winerror.h:3451

◆ video_renderer_query_interface()

static HRESULT video_renderer_query_interface ( struct strmbase_renderer *  iface,
REFIID  iid,
void **  out 
)
static

Definition at line 135 of file videorenderer.c.

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}

◆ video_renderer_render()

static HRESULT video_renderer_render ( struct strmbase_renderer *  iface,
IMediaSample *  pSample 
)
static

Definition at line 82 of file videorenderer.c.

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}
#define ERR(fmt,...)
Definition: precomp.h:57
HDC dc
Definition: cylfrac.c:34
GLenum src
Definition: glext.h:6340
GLenum GLenum dst
Definition: glext.h:6340
static HDC
Definition: imagelist.c:88
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
HDC WINAPI GetDC(_In_opt_ HWND)
unsigned char * LPBYTE
Definition: typedefs.h:53
#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)

◆ video_renderer_stop_stream()

static void video_renderer_stop_stream ( struct strmbase_renderer *  iface)
static

Definition at line 163 of file videorenderer.c.

164{
166
167 TRACE("(%p)->()\n", This);
168
169 if (This->window.AutoShow)
170 /* Black it out */
172}
BOOL WINAPI RedrawWindow(_In_opt_ HWND, _In_opt_ LPCRECT, _In_opt_ HRGN, _In_ UINT)
#define RDW_ERASE
Definition: winuser.h:1222
#define RDW_INVALIDATE
Definition: winuser.h:1225

◆ VideoRenderer_AutoShowWindow()

static void VideoRenderer_AutoShowWindow ( struct video_renderer *  This)
static

Definition at line 76 of file videorenderer.c.

77{
78 if (This->window.AutoShow)
79 ShowWindow(This->window.hwnd, SW_SHOW);
80}
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
#define SW_SHOW
Definition: winuser.h:786

Referenced by video_renderer_init_stream().

◆ VideoWindow_get_FullScreenMode()

static HRESULT WINAPI VideoWindow_get_FullScreenMode ( IVideoWindow *  iface,
LONG *  FullScreenMode 
)
static

Definition at line 272 of file videorenderer.c.

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}
static struct video_renderer * impl_from_IVideoWindow(IVideoWindow *iface)
Definition: videorenderer.c:63
#define E_POINTER
Definition: winerror.h:3480

◆ VideoWindow_put_FullScreenMode()

static HRESULT WINAPI VideoWindow_put_FullScreenMode ( IVideoWindow *  iface,
LONG  fullscreen 
)
static

Definition at line 287 of file videorenderer.c.

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}
BOOL fullscreen
Definition: 3dtext.c:44
#define WS_POPUP
Definition: pedump.c:616
#define SW_HIDE
Definition: winuser.h:779
#define SM_CYSCREEN
Definition: winuser.h:971
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
HWND WINAPI SetParent(_In_ HWND, _In_opt_ HWND)
LONG WINAPI SetWindowLongW(_In_ HWND, _In_ int, _In_ LONG)
#define HWND_TOP
Definition: winuser.h:1218
#define SWP_SHOWWINDOW
Definition: winuser.h:1259
#define SM_CXSCREEN
Definition: winuser.h:970
int WINAPI GetSystemMetrics(_In_ int)

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( quartz  )

Variable Documentation

◆ IVideoWindow_VTable

const IVideoWindowVtbl IVideoWindow_VTable
static

Definition at line 321 of file videorenderer.c.

Referenced by video_renderer_create().

◆ overlay_vtbl

const IOverlayVtbl overlay_vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI overlay_GetColorKey(IOverlay *iface, COLORKEY *key)
static HRESULT WINAPI overlay_GetWindowHandle(IOverlay *iface, HWND *window)
static ULONG WINAPI overlay_AddRef(IOverlay *iface)
static HRESULT WINAPI overlay_QueryInterface(IOverlay *iface, REFIID iid, void **out)
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)
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 HRESULT WINAPI overlay_GetClipList(IOverlay *iface, RECT *source, RECT *dest, RGNDATA **region)
static ULONG WINAPI overlay_Release(IOverlay *iface)
static HRESULT WINAPI overlay_GetPalette(IOverlay *iface, DWORD *count, PALETTEENTRY **palette)

Definition at line 458 of file videorenderer.c.

Referenced by video_renderer_create().

◆ renderer_ops

const struct strmbase_renderer_ops renderer_ops
static
Initial value:
=
{
.renderer_query_accept = video_renderer_query_accept,
.renderer_render = video_renderer_render,
.renderer_init_stream = video_renderer_init_stream,
.renderer_stop_stream = video_renderer_stop_stream,
.renderer_destroy = video_renderer_destroy,
.renderer_query_interface = video_renderer_query_interface,
.renderer_pin_query_interface = video_renderer_pin_query_interface,
.renderer_connect = video_renderer_connect,
}
static HRESULT video_renderer_pin_query_interface(struct strmbase_renderer *iface, REFIID iid, void **out)
static void video_renderer_destroy(struct strmbase_renderer *iface)
static void video_renderer_stop_stream(struct strmbase_renderer *iface)
static HRESULT video_renderer_render(struct strmbase_renderer *iface, IMediaSample *pSample)
Definition: videorenderer.c:82
static void video_renderer_init_stream(struct strmbase_renderer *iface)
static HRESULT video_renderer_query_interface(struct strmbase_renderer *iface, REFIID iid, void **out)
static HRESULT video_renderer_connect(struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt)
static HRESULT video_renderer_query_accept(struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt)

Definition at line 209 of file videorenderer.c.

Referenced by video_renderer_create().

◆ window_ops

const struct video_window_ops window_ops
static
Initial value:
=
{
.get_default_rect = video_renderer_get_default_rect,
.get_current_image = video_renderer_get_current_image,
}
static HRESULT video_renderer_get_current_image(struct video_window *iface, LONG *size, LONG *image)
static void video_renderer_get_default_rect(struct video_window *iface, RECT *rect)

Definition at line 266 of file videorenderer.c.

Referenced by video_renderer_create().