ReactOS 0.4.17-dev-966-gf06eace
quartz_private.h File Reference
#include <stdarg.h>
#include <stdbool.h>
#include <wchar.h>
#include "windef.h"
#include "winbase.h"
#include "wtypes.h"
#include "wingdi.h"
#include "winuser.h"
#include "dshow.h"
#include "dvdmedia.h"
#include "wine/debug.h"
#include "wine/heap.h"
#include "wine/strmbase.h"
#include "wine/list.h"
Include dependency graph for quartz_private.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  video_window
 
struct  video_window_ops
 

Macros

#define COBJMACROS
 
#define DECLARE_CRITICAL_SECTION(cs)
 
#define MEDIATIME_FROM_BYTES(x)   ((LONGLONG)(x) * 10000000)
 
#define BYTES_FROM_MEDIATIME(time)   ((time) / 10000000)
 

Functions

bool array_reserve (void **elements, size_t *capacity, size_t count, size_t size)
 
HRESULT acm_wrapper_create (IUnknown *outer, IUnknown **out)
 
HRESULT async_reader_create (IUnknown *outer, IUnknown **out)
 
HRESULT avi_dec_create (IUnknown *outer, IUnknown **out)
 
HRESULT avi_splitter_create (IUnknown *outer, IUnknown **out)
 
HRESULT dsound_render_create (IUnknown *outer, IUnknown **out)
 
HRESULT filter_graph_create (IUnknown *outer, IUnknown **out)
 
HRESULT filter_graph_no_thread_create (IUnknown *outer, IUnknown **out)
 
HRESULT filter_mapper_create (IUnknown *outer, IUnknown **out)
 
HRESULT mem_allocator_create (IUnknown *outer, IUnknown **out)
 
HRESULT mpeg_audio_codec_create (IUnknown *outer, IUnknown **out)
 
HRESULT mpeg_layer3_decoder_create (IUnknown *outer, IUnknown **out)
 
HRESULT mpeg_video_codec_create (IUnknown *outer, IUnknown **out)
 
HRESULT mpeg1_splitter_create (IUnknown *outer, IUnknown **out)
 
HRESULT system_clock_create (IUnknown *outer, IUnknown **out)
 
HRESULT seeking_passthrough_create (IUnknown *outer, IUnknown **out)
 
HRESULT video_renderer_create (IUnknown *outer, IUnknown **out)
 
HRESULT video_renderer_default_create (IUnknown *outer, IUnknown **out)
 
HRESULT vmr7_presenter_create (IUnknown *outer, IUnknown **out)
 
HRESULT vmr7_create (IUnknown *outer, IUnknown **out)
 
HRESULT vmr9_create (IUnknown *outer, IUnknown **out)
 
HRESULT wave_parser_create (IUnknown *outer, IUnknown **out)
 
const char * qzdebugstr_guid (const GUID *id)
 
void video_unregister_windowclass (void)
 
BOOL get_media_type (const WCHAR *filename, GUID *majortype, GUID *subtype, GUID *source_clsid)
 
void video_window_cleanup (struct video_window *window)
 
HRESULT video_window_create_window (struct video_window *window)
 
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)
 
void video_window_unregister_class (void)
 
HRESULT WINAPI BaseControlWindowImpl_QueryInterface (IVideoWindow *iface, REFIID iid, void **out)
 
ULONG WINAPI BaseControlWindowImpl_AddRef (IVideoWindow *iface)
 
ULONG WINAPI BaseControlWindowImpl_Release (IVideoWindow *iface)
 
HRESULT WINAPI BaseControlWindowImpl_GetTypeInfoCount (IVideoWindow *iface, UINT *pctinfo)
 
HRESULT WINAPI BaseControlWindowImpl_GetTypeInfo (IVideoWindow *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
 
HRESULT WINAPI BaseControlWindowImpl_GetIDsOfNames (IVideoWindow *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
 
HRESULT WINAPI BaseControlWindowImpl_Invoke (IVideoWindow *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExepInfo, UINT *puArgErr)
 
HRESULT WINAPI BaseControlWindowImpl_put_Caption (IVideoWindow *iface, BSTR strCaption)
 
HRESULT WINAPI BaseControlWindowImpl_get_Caption (IVideoWindow *iface, BSTR *strCaption)
 
HRESULT WINAPI BaseControlWindowImpl_put_WindowStyle (IVideoWindow *iface, LONG WindowStyle)
 
HRESULT WINAPI BaseControlWindowImpl_get_WindowStyle (IVideoWindow *iface, LONG *WindowStyle)
 
HRESULT WINAPI BaseControlWindowImpl_put_WindowStyleEx (IVideoWindow *iface, LONG WindowStyleEx)
 
HRESULT WINAPI BaseControlWindowImpl_get_WindowStyleEx (IVideoWindow *iface, LONG *WindowStyleEx)
 
HRESULT WINAPI BaseControlWindowImpl_put_AutoShow (IVideoWindow *iface, LONG AutoShow)
 
HRESULT WINAPI BaseControlWindowImpl_get_AutoShow (IVideoWindow *iface, LONG *AutoShow)
 
HRESULT WINAPI BaseControlWindowImpl_put_WindowState (IVideoWindow *iface, LONG WindowState)
 
HRESULT WINAPI BaseControlWindowImpl_get_WindowState (IVideoWindow *iface, LONG *WindowState)
 
HRESULT WINAPI BaseControlWindowImpl_put_BackgroundPalette (IVideoWindow *iface, LONG BackgroundPalette)
 
HRESULT WINAPI BaseControlWindowImpl_get_BackgroundPalette (IVideoWindow *iface, LONG *pBackgroundPalette)
 
HRESULT WINAPI BaseControlWindowImpl_put_Visible (IVideoWindow *iface, LONG Visible)
 
HRESULT WINAPI BaseControlWindowImpl_get_Visible (IVideoWindow *iface, LONG *pVisible)
 
HRESULT WINAPI BaseControlWindowImpl_put_Left (IVideoWindow *iface, LONG Left)
 
HRESULT WINAPI BaseControlWindowImpl_get_Left (IVideoWindow *iface, LONG *pLeft)
 
HRESULT WINAPI BaseControlWindowImpl_put_Width (IVideoWindow *iface, LONG Width)
 
HRESULT WINAPI BaseControlWindowImpl_get_Width (IVideoWindow *iface, LONG *pWidth)
 
HRESULT WINAPI BaseControlWindowImpl_put_Top (IVideoWindow *iface, LONG Top)
 
HRESULT WINAPI BaseControlWindowImpl_get_Top (IVideoWindow *iface, LONG *pTop)
 
HRESULT WINAPI BaseControlWindowImpl_put_Height (IVideoWindow *iface, LONG Height)
 
HRESULT WINAPI BaseControlWindowImpl_get_Height (IVideoWindow *iface, LONG *pHeight)
 
HRESULT WINAPI BaseControlWindowImpl_put_Owner (IVideoWindow *iface, OAHWND Owner)
 
HRESULT WINAPI BaseControlWindowImpl_get_Owner (IVideoWindow *iface, OAHWND *Owner)
 
HRESULT WINAPI BaseControlWindowImpl_put_MessageDrain (IVideoWindow *iface, OAHWND Drain)
 
HRESULT WINAPI BaseControlWindowImpl_get_MessageDrain (IVideoWindow *iface, OAHWND *Drain)
 
HRESULT WINAPI BaseControlWindowImpl_get_BorderColor (IVideoWindow *iface, LONG *Color)
 
HRESULT WINAPI BaseControlWindowImpl_put_BorderColor (IVideoWindow *iface, LONG Color)
 
HRESULT WINAPI BaseControlWindowImpl_get_FullScreenMode (IVideoWindow *iface, LONG *FullScreenMode)
 
HRESULT WINAPI BaseControlWindowImpl_put_FullScreenMode (IVideoWindow *iface, LONG FullScreenMode)
 
HRESULT WINAPI BaseControlWindowImpl_SetWindowForeground (IVideoWindow *iface, LONG Focus)
 
HRESULT WINAPI BaseControlWindowImpl_SetWindowPosition (IVideoWindow *iface, LONG Left, LONG Top, LONG Width, LONG Height)
 
HRESULT WINAPI BaseControlWindowImpl_GetWindowPosition (IVideoWindow *iface, LONG *pLeft, LONG *pTop, LONG *pWidth, LONG *pHeight)
 
HRESULT WINAPI BaseControlWindowImpl_NotifyOwnerMessage (IVideoWindow *iface, OAHWND hwnd, LONG uMsg, LONG_PTR wParam, LONG_PTR lParam)
 
HRESULT WINAPI BaseControlWindowImpl_GetMinIdealImageSize (IVideoWindow *iface, LONG *pWidth, LONG *pHeight)
 
HRESULT WINAPI BaseControlWindowImpl_GetMaxIdealImageSize (IVideoWindow *iface, LONG *pWidth, LONG *pHeight)
 
HRESULT WINAPI BaseControlWindowImpl_GetRestorePosition (IVideoWindow *iface, LONG *pLeft, LONG *pTop, LONG *pWidth, LONG *pHeight)
 
HRESULT WINAPI BaseControlWindowImpl_HideCursor (IVideoWindow *iface, LONG HideCursor)
 
HRESULT WINAPI BaseControlWindowImpl_IsCursorHidden (IVideoWindow *iface, LONG *CursorHidden)
 

Macro Definition Documentation

◆ BYTES_FROM_MEDIATIME

#define BYTES_FROM_MEDIATIME (   time)    ((time) / 10000000)

Definition at line 50 of file quartz_private.h.

◆ COBJMACROS

#define COBJMACROS

Definition at line 27 of file quartz_private.h.

◆ DECLARE_CRITICAL_SECTION

#define DECLARE_CRITICAL_SECTION (   cs)
Value:
static CRITICAL_SECTION cs; \
static CRITICAL_SECTION_DEBUG cs##_debug = \
{ 0, 0, &cs, { &cs##_debug.ProcessLocksList, &cs##_debug.ProcessLocksList }, \
0, 0, { (DWORD_PTR)(__FILE__ ": " # cs) }}; \
static CRITICAL_SECTION cs = { &cs##_debug, -1, 0, 0, 0, 0 };
#define cs
Definition: i386-dis.c:442
#define DWORD_PTR
Definition: treelist.c:76

Definition at line 41 of file quartz_private.h.

◆ MEDIATIME_FROM_BYTES

#define MEDIATIME_FROM_BYTES (   x)    ((LONGLONG)(x) * 10000000)

Definition at line 49 of file quartz_private.h.

Function Documentation

◆ acm_wrapper_create()

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

Definition at line 513 of file acmwrapper.c.

514{
515 struct acm_wrapper *object;
516
517 if (!(object = calloc(1, sizeof(*object))))
518 return E_OUTOFMEMORY;
519
520 strmbase_filter_init(&object->filter, outer, &CLSID_ACMWrapper, &filter_ops);
521
522 strmbase_sink_init(&object->sink, &object->filter, L"In", &sink_ops, NULL);
523 wcscpy(object->sink.pin.name, L"Input");
524
525 strmbase_source_init(&object->source, &object->filter, L"Out", &source_ops);
526 wcscpy(object->source.pin.name, L"Output");
527
528 object->source_IQualityControl_iface.lpVtbl = &source_qc_vtbl;
529 strmbase_passthrough_init(&object->passthrough, (IUnknown *)&object->source.pin.IPin_iface);
530 ISeekingPassThru_Init(&object->passthrough.ISeekingPassThru_iface, FALSE,
531 &object->sink.pin.IPin_iface);
532
533 object->lasttime_real = object->lasttime_sent = -1;
534
535 TRACE("Created ACM wrapper %p.\n", object);
536 *out = &object->filter.IUnknown_inner;
537
538 return S_OK;
539}
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
static const IQualityControlVtbl source_qc_vtbl
Definition: acmwrapper.c:445
static const struct strmbase_source_ops source_ops
Definition: acmwrapper.c:378
static const struct strmbase_sink_ops sink_ops
Definition: acmwrapper.c:314
static const struct strmbase_filter_ops filter_ops
Definition: acmwrapper.c:505
#define L(x)
Definition: resources.c:13
#define S_OK
Definition: intsafe.h:52
static IUnknown * outer
Definition: compobj.c:82
#define calloc
Definition: rosglue.h:14
wcscpy
#define TRACE(s)
Definition: solgame.cpp:4
void strmbase_source_init(struct strmbase_source *pin, struct strmbase_filter *filter, const WCHAR *name, const struct strmbase_source_ops *func_table)
Definition: pin.c:765
void strmbase_sink_init(struct strmbase_sink *pin, struct strmbase_filter *filter, const WCHAR *name, const struct strmbase_sink_ops *ops, IMemAllocator *allocator)
Definition: pin.c:1168
void strmbase_passthrough_init(struct strmbase_passthrough *passthrough, IUnknown *outer)
Definition: pospass.c:725
void strmbase_filter_init(struct strmbase_filter *filter, IUnknown *outer, const CLSID *clsid, const struct strmbase_filter_ops *func_table)
Definition: filter.c:517
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383

◆ array_reserve()

bool array_reserve ( void **  elements,
size_t *  capacity,
size_t  count,
size_t  size 
)

Definition at line 31 of file main.c.

32{
33 unsigned int new_capacity, max_capacity;
34 void *new_elements;
35
36 if (count <= *capacity)
37 return true;
38
39 max_capacity = ~(size_t)0 / size;
40 if (count > max_capacity)
41 return false;
42
43 new_capacity = max(4, *capacity);
44 while (new_capacity < count && new_capacity <= max_capacity / 2)
45 new_capacity *= 2;
46 if (new_capacity < count)
47 new_capacity = max_capacity;
48
49 if (!(new_elements = realloc(*elements, new_capacity * size)))
50 return false;
51
52 *elements = new_elements;
53 *capacity = new_capacity;
54
55 return true;
56}
#define realloc
Definition: debug_ros.c:6
unsigned int size_t
Definition: corecrt.h:203
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLsizeiptr size
Definition: glext.h:5919
#define max(a, b)
Definition: svc.c:63

◆ async_reader_create()

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

Definition at line 430 of file filesource.c.

431{
432 struct async_reader *object;
433
434 if (!(object = calloc(1, sizeof(*object))))
435 return E_OUTOFMEMORY;
436
437 strmbase_filter_init(&object->filter, outer, &CLSID_AsyncReader, &filter_ops);
438
439 object->IFileSourceFilter_iface.lpVtbl = &FileSource_Vtbl;
440 object->IAsyncReader_iface.lpVtbl = &FileAsyncReader_Vtbl;
441
443 object->sample_cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": FileAsyncReader.sample_cs");
445 object->port = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 0);
446 object->io_thread = CreateThread(NULL, 0, io_thread, object, 0, NULL);
447
448 TRACE("Created file source %p.\n", object);
449 *out = &object->filter.IUnknown_inner;
450 return S_OK;
451}
static const IAsyncReaderVtbl FileAsyncReader_Vtbl
Definition: filesource.c:102
static DWORD CALLBACK io_thread(void *arg)
Definition: filesource.c:392
static const IFileSourceFilterVtbl FileSource_Vtbl
Definition: filesource.c:101
static const struct strmbase_filter_ops filter_ops
Definition: filesource.c:385
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
Definition: thread.c:137
VOID WINAPI InitializeConditionVariable(PCONDITION_VARIABLE ConditionVariable)
Definition: sync.c:22
BOOL WINAPI InitializeCriticalSectionEx(OUT LPCRITICAL_SECTION lpCriticalSection, IN DWORD dwSpinCount, IN DWORD flags)
Definition: sync.c:107
HANDLE WINAPI CreateIoCompletionPort(IN HANDLE FileHandle, IN HANDLE ExistingCompletionPort, IN ULONG_PTR CompletionKey, IN DWORD NumberOfConcurrentThreads)
Definition: iocompl.c:65
#define RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO
Definition: winnt_old.h:1156

◆ avi_dec_create()

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

Definition at line 613 of file avidec.c.

614{
615 struct avi_decompressor *object;
616
617 if (!(object = calloc(1, sizeof(*object))))
618 return E_OUTOFMEMORY;
619
620 strmbase_filter_init(&object->filter, outer, &CLSID_AVIDec, &filter_ops);
621
622 strmbase_sink_init(&object->sink, &object->filter, L"In", &sink_ops, NULL);
623 wcscpy(object->sink.pin.name, L"XForm In");
624
625 strmbase_source_init(&object->source, &object->filter, L"Out", &source_ops);
626 wcscpy(object->source.pin.name, L"XForm Out");
627
628 object->source_IQualityControl_iface.lpVtbl = &source_qc_vtbl;
629 strmbase_passthrough_init(&object->passthrough, (IUnknown *)&object->source.pin.IPin_iface);
630 ISeekingPassThru_Init(&object->passthrough.ISeekingPassThru_iface, FALSE,
631 &object->sink.pin.IPin_iface);
632
634 object->late_cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": object.late_cs");
635
636 TRACE("Created AVI decompressor %p.\n", object);
637 *out = &object->filter.IUnknown_inner;
638
639 return S_OK;
640}
static const IQualityControlVtbl source_qc_vtbl
Definition: avidec.c:510
static const struct strmbase_source_ops source_ops
Definition: avidec.c:449
static const struct strmbase_sink_ops sink_ops
Definition: avidec.c:275
static const struct strmbase_filter_ops filter_ops
Definition: avidec.c:605

◆ avi_splitter_create()

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

Definition at line 21 of file parser.c.

22{
23 static const GUID CLSID_wg_avi_splitter = {0x272bfbfb,0x50d0,0x4078,{0xb6,0x00,0x1e,0x95,0x9c,0x30,0x13,0x37}};
24 return CoCreateInstance(&CLSID_wg_avi_splitter, outer, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void **)out);
25}
const GUID IID_IUnknown
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
Definition: combase.c:1685

◆ BaseControlWindowImpl_AddRef()

ULONG WINAPI BaseControlWindowImpl_AddRef ( IVideoWindow *  iface)

Definition at line 131 of file window.c.

132{
134 return IUnknown_AddRef(window->pFilter->outer_unk);
135}
static struct video_window * impl_from_IVideoWindow(IVideoWindow *iface)
Definition: window.c:29
static IHTMLWindow2 * window
Definition: events.c:77

◆ BaseControlWindowImpl_get_AutoShow()

HRESULT WINAPI BaseControlWindowImpl_get_AutoShow ( IVideoWindow *  iface,
LONG *  AutoShow 
)

Definition at line 288 of file window.c.

289{
291
292 TRACE("(%p/%p)->(%p)\n", This, iface, AutoShow);
293
294 *AutoShow = This->AutoShow;
295
296 return S_OK;
297}

◆ BaseControlWindowImpl_get_BackgroundPalette()

HRESULT WINAPI BaseControlWindowImpl_get_BackgroundPalette ( IVideoWindow *  iface,
LONG *  pBackgroundPalette 
)

Definition at line 338 of file window.c.

339{
341
342 FIXME("(%p/%p)->(%p): stub !!!\n", This, iface, pBackgroundPalette);
343
344 return S_OK;
345}
#define FIXME(fmt,...)
Definition: precomp.h:53

◆ BaseControlWindowImpl_get_BorderColor()

HRESULT WINAPI BaseControlWindowImpl_get_BorderColor ( IVideoWindow *  iface,
LONG *  Color 
)

Definition at line 540 of file window.c.

541{
543
544 FIXME("(%p/%p)->(%p): stub !!!\n", This, iface, Color);
545
546 return S_OK;
547}

◆ BaseControlWindowImpl_get_Caption()

HRESULT WINAPI BaseControlWindowImpl_get_Caption ( IVideoWindow *  iface,
BSTR *  strCaption 
)

Definition at line 206 of file window.c.

207{
209 WCHAR *str;
210 int len;
211
212 TRACE("window %p, caption %p.\n", window, caption);
213
214 *caption = NULL;
215
216 len = GetWindowTextLengthW(window->hwnd) + 1;
217 if (!(str = heap_alloc(len * sizeof(WCHAR))))
218 return E_OUTOFMEMORY;
219
220 GetWindowTextW(window->hwnd, str, len);
221 *caption = SysAllocString(str);
222 heap_free(str);
223 return *caption ? S_OK : E_OUTOFMEMORY;
224}
static void * heap_alloc(size_t len)
Definition: appwiz.h:66
static BOOL heap_free(void *mem)
Definition: appwiz.h:76
GLenum GLsizei len
Definition: glext.h:6722
BSTR WINAPI SysAllocString(LPCOLESTR str)
Definition: oleaut.c:240
short WCHAR
Definition: pedump.c:58
int WINAPI GetWindowTextLengthW(_In_ HWND)
const WCHAR * str
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
Definition: window.c:1382

◆ BaseControlWindowImpl_get_FullScreenMode()

HRESULT WINAPI BaseControlWindowImpl_get_FullScreenMode ( IVideoWindow *  iface,
LONG *  FullScreenMode 
)

Definition at line 558 of file window.c.

559{
560 TRACE("(%p)->(%p)\n", iface, FullScreenMode);
561
562 return E_NOTIMPL;
563}
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ BaseControlWindowImpl_get_Height()

HRESULT WINAPI BaseControlWindowImpl_get_Height ( IVideoWindow *  iface,
LONG *  pHeight 
)

Definition at line 469 of file window.c.

470{
472 RECT rect;
473
474 TRACE("window %p, height %p.\n", window, height);
475
476 GetWindowRect(window->hwnd, &rect);
478 return S_OK;
479}
RECT rect
Definition: combotst.c:67
GLint GLint GLsizei GLsizei height
Definition: gl.h:1546
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
Definition: dcommon.idl:28
long bottom
Definition: dcommon.idl:29
long top
Definition: dcommon.idl:29

◆ BaseControlWindowImpl_get_Left()

HRESULT WINAPI BaseControlWindowImpl_get_Left ( IVideoWindow *  iface,
LONG *  pLeft 
)

Definition at line 388 of file window.c.

389{
391 RECT rect;
392
393 TRACE("window %p, left %p.\n", window, left);
394
395 GetWindowRect(window->hwnd, &rect);
396 *left = rect.left;
397 return S_OK;
398}
GLint left
Definition: glext.h:7726
long left
Definition: dcommon.idl:29

◆ BaseControlWindowImpl_get_MessageDrain()

HRESULT WINAPI BaseControlWindowImpl_get_MessageDrain ( IVideoWindow *  iface,
OAHWND *  Drain 
)

Definition at line 529 of file window.c.

530{
532
533 TRACE("(%p/%p)->(%p)\n", This, iface, Drain);
534
535 *Drain = (OAHWND)This->hwndDrain;
536
537 return S_OK;
538}
LONG_PTR OAHWND
Definition: control.idl:31

◆ BaseControlWindowImpl_get_Owner()

HRESULT WINAPI BaseControlWindowImpl_get_Owner ( IVideoWindow *  iface,
OAHWND *  Owner 
)

Definition at line 504 of file window.c.

505{
507
508 TRACE("(%p/%p)->(%p)\n", This, iface, Owner);
509
510 *(HWND*)Owner = This->hwndOwner;
511
512 return S_OK;
513}
_Out_writes_bytes_to_opt_ AbsoluteSecurityDescriptorSize PSECURITY_DESCRIPTOR _Inout_ PULONG _Out_writes_bytes_to_opt_ DaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ SaclSize PACL _Inout_ PULONG _Out_writes_bytes_to_opt_ OwnerSize PSID Owner
Definition: rtlfuncs.h:1629

◆ BaseControlWindowImpl_get_Top()

HRESULT WINAPI BaseControlWindowImpl_get_Top ( IVideoWindow *  iface,
LONG *  pTop 
)

Definition at line 442 of file window.c.

443{
445 RECT rect;
446
447 TRACE("window %p, top %p.\n", window, top);
448
449 GetWindowRect(window->hwnd, &rect);
450 *top = rect.top;
451 return S_OK;
452}
GLdouble GLdouble GLdouble GLdouble top
Definition: glext.h:10859

◆ BaseControlWindowImpl_get_Visible()

HRESULT WINAPI BaseControlWindowImpl_get_Visible ( IVideoWindow *  iface,
LONG *  pVisible 
)

Definition at line 360 of file window.c.

361{
363
364 TRACE("window %p, visible %p.\n", window, visible);
365
366 if (!visible)
367 return E_POINTER;
368
369 *visible = IsWindowVisible(window->hwnd) ? OATRUE : OAFALSE;
370 return S_OK;
371}
#define OAFALSE
Definition: dshow.h:53
#define OATRUE
Definition: dshow.h:49
BOOL WINAPI IsWindowVisible(_In_ HWND)
#define E_POINTER
Definition: winerror.h:3480

◆ BaseControlWindowImpl_get_Width()

HRESULT WINAPI BaseControlWindowImpl_get_Width ( IVideoWindow *  iface,
LONG *  pWidth 
)

Definition at line 415 of file window.c.

416{
418 RECT rect;
419
420 TRACE("window %p, width %p.\n", window, width);
421
422 GetWindowRect(window->hwnd, &rect);
423 *width = rect.right - rect.left;
424 return S_OK;
425}
GLint GLint GLsizei width
Definition: gl.h:1546
long right
Definition: dcommon.idl:29

◆ BaseControlWindowImpl_get_WindowState()

HRESULT WINAPI BaseControlWindowImpl_get_WindowState ( IVideoWindow *  iface,
LONG *  WindowState 
)

Definition at line 309 of file window.c.

310{
312 DWORD style;
313
314 TRACE("window %p, state %p.\n", window, state);
315
317 if (!(style & WS_VISIBLE))
318 *state = SW_HIDE;
319 else if (style & WS_MINIMIZE)
321 else if (style & WS_MAXIMIZE)
323 else
324 *state = SW_SHOW;
325
326 return S_OK;
327}
static int state
Definition: maze.c:121
unsigned long DWORD
Definition: ntddk_ex.h:95
#define WS_MAXIMIZE
Definition: pedump.c:623
#define WS_MINIMIZE
Definition: pedump.c:622
#define WS_VISIBLE
Definition: pedump.c:620
#define SW_HIDE
Definition: winuser.h:779
#define GetWindowLongPtrW
Definition: winuser.h:4983
#define SW_MINIMIZE
Definition: winuser.h:787
#define SW_SHOW
Definition: winuser.h:786
#define SW_MAXIMIZE
Definition: winuser.h:783
#define GWL_STYLE
Definition: winuser.h:863
Definition: style.c:91

◆ BaseControlWindowImpl_get_WindowStyle()

HRESULT WINAPI BaseControlWindowImpl_get_WindowStyle ( IVideoWindow *  iface,
LONG *  WindowStyle 
)

Definition at line 243 of file window.c.

244{
246
247 TRACE("window %p, style %p.\n", window, style);
248
250 return S_OK;
251}
LONG WINAPI GetWindowLongW(_In_ HWND, _In_ int)

◆ BaseControlWindowImpl_get_WindowStyleEx()

HRESULT WINAPI BaseControlWindowImpl_get_WindowStyleEx ( IVideoWindow *  iface,
LONG *  WindowStyleEx 
)

Definition at line 264 of file window.c.

265{
267
268 TRACE("window %p, style %p.\n", window, style);
269
271 return S_OK;
272}
#define GWL_EXSTYLE
Definition: winuser.h:862

◆ BaseControlWindowImpl_GetIDsOfNames()

HRESULT WINAPI BaseControlWindowImpl_GetIDsOfNames ( IVideoWindow *  iface,
REFIID  riid,
LPOLESTR *  rgszNames,
UINT  cNames,
LCID  lcid,
DISPID *  rgDispId 
)

Definition at line 157 of file window.c.

159{
161 HRESULT hr;
162
163 TRACE("iface %p, iid %s, names %p, count %u, lcid %#lx, ids %p.\n",
164 iface, debugstr_guid(iid), names, count, lcid, ids);
165
167 {
168 hr = ITypeInfo_GetIDsOfNames(typeinfo, names, count, ids);
169 ITypeInfo_Release(typeinfo);
170 }
171 return hr;
172}
HRESULT hr
Definition: delayimp.cpp:582
LCID lcid
Definition: locale.c:5660
GLuint * ids
Definition: glext.h:5907
GLuint GLuint * names
Definition: glext.h:11545
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define debugstr_guid
Definition: kernel32.h:35
@ IVideoWindow_tid
Definition: strmbase.h:230
HRESULT strmbase_get_typeinfo(enum strmbase_type_id tid, ITypeInfo **typeinfo)
Definition: dispatch.c:38

◆ BaseControlWindowImpl_GetMaxIdealImageSize()

HRESULT WINAPI BaseControlWindowImpl_GetMaxIdealImageSize ( IVideoWindow *  iface,
LONG *  pWidth,
LONG *  pHeight 
)

Definition at line 664 of file window.c.

665{
667 RECT rect;
668
669 TRACE("window %p, width %p, height %p.\n", window, width, height);
670
671 window->ops->get_default_rect(window, &rect);
672 *width = rect.right - rect.left;
674 return S_OK;
675}

◆ BaseControlWindowImpl_GetMinIdealImageSize()

HRESULT WINAPI BaseControlWindowImpl_GetMinIdealImageSize ( IVideoWindow *  iface,
LONG *  pWidth,
LONG *  pHeight 
)

Definition at line 651 of file window.c.

652{
654 RECT rect;
655
656 TRACE("window %p, width %p, height %p.\n", window, width, height);
657
658 window->ops->get_default_rect(window, &rect);
659 *width = rect.right - rect.left;
661 return S_OK;
662}

◆ BaseControlWindowImpl_GetRestorePosition()

HRESULT WINAPI BaseControlWindowImpl_GetRestorePosition ( IVideoWindow *  iface,
LONG *  pLeft,
LONG *  pTop,
LONG *  pWidth,
LONG *  pHeight 
)

Definition at line 677 of file window.c.

678{
680
681 FIXME("(%p/%p)->(%p, %p, %p, %p): stub !!!\n", This, iface, pLeft, pTop, pWidth, pHeight);
682
683 return S_OK;
684}

◆ BaseControlWindowImpl_GetTypeInfo()

HRESULT WINAPI BaseControlWindowImpl_GetTypeInfo ( IVideoWindow *  iface,
UINT  iTInfo,
LCID  lcid,
ITypeInfo **  ppTInfo 
)

Definition at line 150 of file window.c.

152{
153 TRACE("iface %p, index %u, lcid %#lx, typeinfo %p.\n", iface, index, lcid, typeinfo);
155}
GLuint index
Definition: glext.h:6031

◆ BaseControlWindowImpl_GetTypeInfoCount()

HRESULT WINAPI BaseControlWindowImpl_GetTypeInfoCount ( IVideoWindow *  iface,
UINT *  pctinfo 
)

Definition at line 143 of file window.c.

144{
145 TRACE("iface %p, count %p.\n", iface, count);
146 *count = 1;
147 return S_OK;
148}

◆ BaseControlWindowImpl_GetWindowPosition()

HRESULT WINAPI BaseControlWindowImpl_GetWindowPosition ( IVideoWindow *  iface,
LONG *  pLeft,
LONG *  pTop,
LONG *  pWidth,
LONG *  pHeight 
)

Definition at line 609 of file window.c.

611{
613 RECT rect;
614
615 TRACE("window %p, left %p, top %p, width %p, height %p.\n", window, left, top, width, height);
616
617 GetWindowRect(window->hwnd, &rect);
618 *left = rect.left;
619 *top = rect.top;
620 *width = rect.right - rect.left;
622 return S_OK;
623}

◆ BaseControlWindowImpl_HideCursor()

HRESULT WINAPI BaseControlWindowImpl_HideCursor ( IVideoWindow *  iface,
LONG  HideCursor 
)

Definition at line 686 of file window.c.

687{
689
690 FIXME("window %p, hide %ld, stub!\n", window, hide);
691
692 return S_OK;
693}

◆ BaseControlWindowImpl_Invoke()

HRESULT WINAPI BaseControlWindowImpl_Invoke ( IVideoWindow *  iface,
DISPID  dispIdMember,
REFIID  riid,
LCID  lcid,
WORD  wFlags,
DISPPARAMS *  pDispParams,
VARIANT *  pVarResult,
EXCEPINFO *  pExepInfo,
UINT *  puArgErr 
)

Definition at line 174 of file window.c.

176{
178 HRESULT hr;
179
180 TRACE("iface %p, id %ld, iid %s, lcid %#lx, flags %#x, params %p, result %p, excepinfo %p, error_arg %p.\n",
181 iface, id, debugstr_guid(iid), lcid, flags, params, result, excepinfo, error_arg);
182
184 {
185 hr = ITypeInfo_Invoke(typeinfo, iface, id, flags, params, result, excepinfo, error_arg);
186 ITypeInfo_Release(typeinfo);
187 }
188 return hr;
189}
GLenum const GLfloat * params
Definition: glext.h:5645
GLbitfield flags
Definition: glext.h:7161
GLuint64EXT * result
Definition: glext.h:11304
static EXCEPINFO excepinfo
Definition: automation.c:47

◆ BaseControlWindowImpl_IsCursorHidden()

HRESULT WINAPI BaseControlWindowImpl_IsCursorHidden ( IVideoWindow *  iface,
LONG *  CursorHidden 
)

Definition at line 695 of file window.c.

696{
698
699 FIXME("(%p/%p)->(%p): stub !!!\n", This, iface, CursorHidden);
700
701 return S_OK;
702}

◆ BaseControlWindowImpl_NotifyOwnerMessage()

HRESULT WINAPI BaseControlWindowImpl_NotifyOwnerMessage ( IVideoWindow *  iface,
OAHWND  hwnd,
LONG  uMsg,
LONG_PTR  wParam,
LONG_PTR  lParam 
)

Definition at line 625 of file window.c.

627{
629
630 TRACE("window %p, hwnd %#Ix, message %#lx, wparam %#Ix, lparam %#Ix.\n",
632
633 /* That these messages are forwarded, and no others, is stated by the
634 * DirectX documentation, and supported by manual testing. */
635 switch (message)
636 {
637 case WM_ACTIVATEAPP:
638 case WM_DEVMODECHANGE:
639 case WM_DISPLAYCHANGE:
645 break;
646 }
647
648 return S_OK;
649}
@ lparam
Definition: SystemMenu.c:31
@ wparam
Definition: SystemMenu.c:30
#define WM_QUERYNEWPALETTE
Definition: winuser.h:1906
#define WM_PALETTECHANGED
Definition: winuser.h:1905
#define WM_DEVMODECHANGE
Definition: winuser.h:1659
#define WM_SYSCOLORCHANGE
Definition: winuser.h:1654
#define WM_ACTIVATEAPP
Definition: winuser.h:1660
#define WM_PALETTEISCHANGING
Definition: winuser.h:1904
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
Definition: tftpd.h:60
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023

◆ BaseControlWindowImpl_put_AutoShow()

HRESULT WINAPI BaseControlWindowImpl_put_AutoShow ( IVideoWindow *  iface,
LONG  AutoShow 
)

Definition at line 274 of file window.c.

275{
277
278 TRACE("window %p, AutoShow %ld.\n", window, AutoShow);
279
280 if (!window->pPin->peer)
281 return VFW_E_NOT_CONNECTED;
282
283 window->AutoShow = AutoShow;
284
285 return S_OK;
286}
#define VFW_E_NOT_CONNECTED
Definition: vfwmsgs.h:48

◆ BaseControlWindowImpl_put_BackgroundPalette()

HRESULT WINAPI BaseControlWindowImpl_put_BackgroundPalette ( IVideoWindow *  iface,
LONG  BackgroundPalette 
)

Definition at line 329 of file window.c.

330{
332
333 FIXME("window %p, palette %ld, stub!\n", This, BackgroundPalette);
334
335 return S_OK;
336}

◆ BaseControlWindowImpl_put_BorderColor()

HRESULT WINAPI BaseControlWindowImpl_put_BorderColor ( IVideoWindow *  iface,
LONG  Color 
)

Definition at line 549 of file window.c.

550{
552
553 TRACE("window %p, colour %#lx.\n", This, Color);
554
555 return S_OK;
556}

◆ BaseControlWindowImpl_put_Caption()

HRESULT WINAPI BaseControlWindowImpl_put_Caption ( IVideoWindow *  iface,
BSTR  strCaption 
)

Definition at line 191 of file window.c.

192{
194
195 TRACE("window %p, caption %s.\n", window, debugstr_w(caption));
196
197 if (!window->pPin->peer)
198 return VFW_E_NOT_CONNECTED;
199
200 if (!SetWindowTextW(window->hwnd, caption))
201 return E_FAIL;
202
203 return S_OK;
204}
#define E_FAIL
Definition: ddrawi.h:102
#define debugstr_w
Definition: kernel32.h:32
BOOL WINAPI SetWindowTextW(_In_ HWND, _In_opt_ LPCWSTR)

◆ BaseControlWindowImpl_put_FullScreenMode()

HRESULT WINAPI BaseControlWindowImpl_put_FullScreenMode ( IVideoWindow *  iface,
LONG  FullScreenMode 
)

Definition at line 565 of file window.c.

566{
568
569 TRACE("window %p, fullscreen %ld.\n", window, fullscreen);
570
571 return E_NOTIMPL;
572}
BOOL fullscreen
Definition: 3dtext.c:44

◆ BaseControlWindowImpl_put_Height()

HRESULT WINAPI BaseControlWindowImpl_put_Height ( IVideoWindow *  iface,
LONG  Height 
)

Definition at line 454 of file window.c.

455{
457 RECT rect;
458
459 TRACE("window %p, height %ld.\n", window, height);
460
461 GetWindowRect(window->hwnd, &rect);
462 if (!SetWindowPos(window->hwnd, NULL, 0, 0, rect.right - rect.left,
464 return E_FAIL;
465
466 return S_OK;
467}
#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)
#define SWP_NOMOVE
Definition: winuser.h:1255
#define SWP_NOZORDER
Definition: winuser.h:1258

◆ BaseControlWindowImpl_put_Left()

HRESULT WINAPI BaseControlWindowImpl_put_Left ( IVideoWindow *  iface,
LONG  Left 
)

Definition at line 373 of file window.c.

374{
376 RECT rect;
377
378 TRACE("window %p, left %ld.\n", window, left);
379
380 GetWindowRect(window->hwnd, &rect);
381 if (!SetWindowPos(window->hwnd, NULL, left, rect.top, 0, 0,
383 return E_FAIL;
384
385 return S_OK;
386}
#define SWP_NOSIZE
Definition: winuser.h:1256

◆ BaseControlWindowImpl_put_MessageDrain()

HRESULT WINAPI BaseControlWindowImpl_put_MessageDrain ( IVideoWindow *  iface,
OAHWND  Drain 
)

Definition at line 515 of file window.c.

516{
518
519 TRACE("window %p, drain %#Ix.\n", window, Drain);
520
521 if (!window->pPin->peer)
522 return VFW_E_NOT_CONNECTED;
523
524 window->hwndDrain = (HWND)Drain;
525
526 return S_OK;
527}
HANDLE HWND
Definition: compat.h:19

◆ BaseControlWindowImpl_put_Owner()

HRESULT WINAPI BaseControlWindowImpl_put_Owner ( IVideoWindow *  iface,
OAHWND  Owner 
)

Definition at line 481 of file window.c.

482{
484 HWND hwnd = window->hwnd;
485
486 TRACE("window %p, owner %#Ix.\n", window, owner);
487
488 if (!window->pPin->peer)
489 return VFW_E_NOT_CONNECTED;
490
491 /* Make sure we are marked as WS_CHILD before reparenting ourselves, so that
492 * we do not steal focus. LEGO Island depends on this. */
493
494 window->hwndOwner = (HWND)owner;
495 if (owner)
497 else
499 SetParent(hwnd, (HWND)owner);
500
501 return S_OK;
502}
#define WS_CHILD
Definition: pedump.c:617
HWND WINAPI SetParent(_In_ HWND, _In_opt_ HWND)
#define SetWindowLongPtrW
Definition: winuser.h:5512

◆ BaseControlWindowImpl_put_Top()

HRESULT WINAPI BaseControlWindowImpl_put_Top ( IVideoWindow *  iface,
LONG  Top 
)

Definition at line 427 of file window.c.

428{
430 RECT rect;
431
432 TRACE("window %p, top %ld.\n", window, top);
433
434 GetWindowRect(window->hwnd, &rect);
435 if (!SetWindowPos(window->hwnd, NULL, rect.left, top, 0, 0,
437 return E_FAIL;
438
439 return S_OK;
440}

◆ BaseControlWindowImpl_put_Visible()

HRESULT WINAPI BaseControlWindowImpl_put_Visible ( IVideoWindow *  iface,
LONG  Visible 
)

Definition at line 347 of file window.c.

348{
350
351 TRACE("window %p, visible %ld.\n", window, visible);
352
353 if (!window->pPin->peer)
354 return VFW_E_NOT_CONNECTED;
355
356 ShowWindow(window->hwnd, visible ? SW_SHOW : SW_HIDE);
357 return S_OK;
358}
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)

◆ BaseControlWindowImpl_put_Width()

HRESULT WINAPI BaseControlWindowImpl_put_Width ( IVideoWindow *  iface,
LONG  Width 
)

Definition at line 400 of file window.c.

401{
403 RECT rect;
404
405 TRACE("window %p, width %ld.\n", window, width);
406
407 GetWindowRect(window->hwnd, &rect);
408 if (!SetWindowPos(window->hwnd, NULL, 0, 0, width, rect.bottom - rect.top,
410 return E_FAIL;
411
412 return S_OK;
413}

◆ BaseControlWindowImpl_put_WindowState()

HRESULT WINAPI BaseControlWindowImpl_put_WindowState ( IVideoWindow *  iface,
LONG  WindowState 
)

Definition at line 299 of file window.c.

300{
302
303 TRACE("window %p, state %ld.\n", window, state);
304
305 ShowWindow(window->hwnd, state);
306 return S_OK;
307}

◆ BaseControlWindowImpl_put_WindowStyle()

HRESULT WINAPI BaseControlWindowImpl_put_WindowStyle ( IVideoWindow *  iface,
LONG  WindowStyle 
)

Definition at line 226 of file window.c.

227{
229
230 TRACE("window %p, style %#lx.\n", window, style);
231
233 return E_INVALIDARG;
234 if (!window->pPin->peer)
235 return VFW_E_NOT_CONNECTED;
236
238 SetWindowPos(window->hwnd, 0, 0, 0, 0, 0,
240 return S_OK;
241}
#define E_INVALIDARG
Definition: ddrawi.h:101
#define WS_VSCROLL
Definition: pedump.c:627
#define WS_DISABLED
Definition: pedump.c:621
#define WS_HSCROLL
Definition: pedump.c:628
#define SWP_FRAMECHANGED
Definition: winuser.h:1251
LONG WINAPI SetWindowLongW(_In_ HWND, _In_ int, _In_ LONG)

◆ BaseControlWindowImpl_put_WindowStyleEx()

HRESULT WINAPI BaseControlWindowImpl_put_WindowStyleEx ( IVideoWindow *  iface,
LONG  WindowStyleEx 
)

Definition at line 253 of file window.c.

254{
256
257 TRACE("window %p, style %#lx.\n", window, style);
258
260 return E_FAIL;
261 return S_OK;
262}

◆ BaseControlWindowImpl_QueryInterface()

HRESULT WINAPI BaseControlWindowImpl_QueryInterface ( IVideoWindow *  iface,
REFIID  iid,
void **  out 
)

Definition at line 125 of file window.c.

126{
128 return IUnknown_QueryInterface(window->pFilter->outer_unk, iid, out);
129}

◆ BaseControlWindowImpl_Release()

ULONG WINAPI BaseControlWindowImpl_Release ( IVideoWindow *  iface)

Definition at line 137 of file window.c.

138{
140 return IUnknown_Release(window->pFilter->outer_unk);
141}

◆ BaseControlWindowImpl_SetWindowForeground()

HRESULT WINAPI BaseControlWindowImpl_SetWindowForeground ( IVideoWindow *  iface,
LONG  Focus 
)

Definition at line 574 of file window.c.

575{
578
579 TRACE("window %p, focus %ld.\n", window, focus);
580
581 if (focus != OAFALSE && focus != OATRUE)
582 return E_INVALIDARG;
583
584 if (!window->pPin->peer)
585 return VFW_E_NOT_CONNECTED;
586
587 if (!focus)
589 SetWindowPos(window->hwnd, HWND_TOP, 0, 0, 0, 0, flags);
590
591 return S_OK;
592}
unsigned int UINT
Definition: sysinfo.c:13
#define HWND_TOP
Definition: winuser.h:1218

◆ BaseControlWindowImpl_SetWindowPosition()

HRESULT WINAPI BaseControlWindowImpl_SetWindowPosition ( IVideoWindow *  iface,
LONG  Left,
LONG  Top,
LONG  Width,
LONG  Height 
)

Definition at line 594 of file window.c.

596{
598
599 TRACE("window %p, left %ld, top %ld, width %ld, height %ld.\n", window, left, top, width, height);
600
601 if (!window->pPin->peer)
602 return VFW_E_NOT_CONNECTED;
603
605 return E_FAIL;
606 return S_OK;
607}

◆ dsound_render_create()

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

Definition at line 1057 of file dsoundrender.c.

1058{
1059 static const DSBUFFERDESC buffer_desc =
1060 {
1061 .dwSize = sizeof(DSBUFFERDESC),
1063 };
1064
1065 struct dsound_render *object;
1066 IDirectSoundBuffer *buffer;
1067 HRESULT hr;
1068
1069 TRACE("outer %p, out %p.\n", outer, out);
1070
1071 if (!(object = calloc(1, sizeof(*object))))
1072 return E_OUTOFMEMORY;
1073
1074 strmbase_filter_init(&object->filter, outer, &CLSID_DSoundRender, &filter_ops);
1075
1076 if (FAILED(hr = system_clock_create(&object->filter.IUnknown_inner, &object->system_clock)))
1077 {
1079 free(object);
1080 return hr;
1081 }
1082
1083 if (FAILED(hr = DirectSoundCreate8(NULL, &object->dsound, NULL)))
1084 {
1085 IUnknown_Release(object->system_clock);
1087 free(object);
1089 }
1090
1093 {
1095 IUnknown_Release(object->system_clock);
1097 free(object);
1098 return hr;
1099 }
1100
1102 &buffer_desc, &buffer, NULL)))
1103 {
1106 }
1107
1108 strmbase_passthrough_init(&object->passthrough, (IUnknown *)&object->filter.IBaseFilter_iface);
1109 ISeekingPassThru_Init(&object->passthrough.ISeekingPassThru_iface, TRUE, &object->sink.pin.IPin_iface);
1110
1111 strmbase_sink_init(&object->sink, &object->filter, L"Audio Input pin (rendered)", &sink_ops, NULL);
1112
1113 object->state_event = CreateEventW(NULL, TRUE, TRUE, NULL);
1114 object->flush_event = CreateEventW(NULL, TRUE, TRUE, NULL);
1115
1116 object->IBasicAudio_iface.lpVtbl = &basic_audio_vtbl;
1117 object->IAMDirectSound_iface.lpVtbl = &direct_sound_vtbl;
1118 object->IQualityControl_iface.lpVtbl = &quality_control_vtbl;
1119
1121 object->render_cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": dsound_render.render_cs");
1123
1124 TRACE("Created DirectSound renderer %p.\n", object);
1125 *out = &object->filter.IUnknown_inner;
1126
1127 return S_OK;
1128}
#define free
Definition: debug_ros.c:5
HRESULT WINAPI DirectSoundCreate8(LPCGUID lpcGUID, LPDIRECTSOUND8 *ppDS, IUnknown *pUnkOuter)
Definition: directsound.c:504
#define TRUE
Definition: types.h:120
static const IAMDirectSoundVtbl direct_sound_vtbl
Definition: dsoundrender.c:989
static const IQualityControlVtbl quality_control_vtbl
static const struct strmbase_sink_ops sink_ops
Definition: dsoundrender.c:578
static const struct strmbase_filter_ops filter_ops
Definition: dsoundrender.c:741
static const IBasicAudioVtbl basic_audio_vtbl
Definition: dsoundrender.c:884
#define IDirectSound8_CreateSoundBuffer(p, a, b, c)
Definition: dsound.h:509
struct _DSBUFFERDESC DSBUFFERDESC
#define DSSCL_PRIORITY
Definition: dsound.h:248
#define IDirectSound8_Release(p)
Definition: dsound.h:507
#define IDirectSoundBuffer_Play(p, a, b, c)
Definition: dsound.h:585
#define DSBPLAY_LOOPING
Definition: dsound.h:189
#define IDirectSoundBuffer_Release(p)
Definition: dsound.h:574
#define DSERR_NODRIVER
Definition: dsound.h:128
#define DSBCAPS_PRIMARYBUFFER
Definition: dsound.h:206
#define IDirectSound8_SetCooperativeLevel(p, a, b)
Definition: dsound.h:512
GLuint buffer
Definition: glext.h:5915
#define FAILED(hr)
Definition: intsafe.h:51
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141
HWND WINAPI GetDesktopWindow(void)
Definition: window.c:628
HRESULT system_clock_create(IUnknown *outer, IUnknown **out)
Definition: systemclock.c:327
void strmbase_filter_cleanup(struct strmbase_filter *filter)
Definition: filter.c:540
DWORD dwSize
Definition: dsound.h:288
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
Definition: synch.c:587
#define VFW_E_NO_AUDIO_HARDWARE
Definition: vfwmsgs.h:109

◆ filter_graph_create()

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

Definition at line 5752 of file filtergraph.c.

5753{
5755}
static HRESULT filter_graph_common_create(IUnknown *outer, IUnknown **out, BOOL threaded)
Definition: filtergraph.c:5682

◆ filter_graph_no_thread_create()

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

Definition at line 5757 of file filtergraph.c.

5758{
5760}

◆ filter_mapper_create()

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

Definition at line 1676 of file filtermapper.c.

1677{
1678 FilterMapper3Impl * pFM2impl;
1679
1680 pFM2impl = CoTaskMemAlloc(sizeof(*pFM2impl));
1681 if (!pFM2impl)
1682 return E_OUTOFMEMORY;
1683
1684 pFM2impl->IUnknown_inner.lpVtbl = &IInner_VTable;
1685 pFM2impl->IFilterMapper3_iface.lpVtbl = &fm3vtbl;
1686 pFM2impl->IFilterMapper_iface.lpVtbl = &fmvtbl;
1687 pFM2impl->IAMFilterData_iface.lpVtbl = &AMFilterDataVtbl;
1688 pFM2impl->ref = 1;
1689
1690 if (pUnkOuter)
1691 pFM2impl->outer_unk = pUnkOuter;
1692 else
1693 pFM2impl->outer_unk = &pFM2impl->IUnknown_inner;
1694
1695 TRACE("Created filter mapper %p.\n", pFM2impl);
1696 *out = &pFM2impl->IUnknown_inner;
1697 return S_OK;
1698}
static const IAMFilterDataVtbl AMFilterDataVtbl
static const IFilterMapperVtbl fmvtbl
static const IFilterMapper3Vtbl fm3vtbl
static const IUnknownVtbl IInner_VTable
Definition: filtermapper.c:493
void *WINAPI CoTaskMemAlloc(SIZE_T size)
Definition: malloc.c:381
IFilterMapper3 IFilterMapper3_iface
Definition: filtermapper.c:338
IUnknown * outer_unk
Definition: filtermapper.c:341
IUnknown IUnknown_inner
Definition: filtermapper.c:337
IFilterMapper IFilterMapper_iface
Definition: filtermapper.c:339
IAMFilterData IAMFilterData_iface
Definition: filtermapper.c:340

◆ get_media_type()

BOOL get_media_type ( const WCHAR *  filename,
GUID *  majortype,
GUID *  subtype,
GUID *  source_clsid 
)

Definition at line 198 of file filesource.c.

199{
200 WCHAR extensions_path[278] = L"Media Type\\Extensions\\";
201 DWORD majortype_idx, size;
202 const WCHAR *ext;
203 HKEY parent_key;
204 HANDLE file;
205
206 if ((ext = wcsrchr(filename, '.')))
207 {
208 WCHAR guidstr[39];
209 HKEY key;
210
211 wcscat(extensions_path, ext);
212 if (!RegOpenKeyExW(HKEY_CLASSES_ROOT, extensions_path, 0, KEY_READ, &key))
213 {
214 size = sizeof(guidstr);
215 if (majortype && !RegQueryValueExW(key, L"Media Type", NULL, NULL, (BYTE *)guidstr, &size))
216 CLSIDFromString(guidstr, majortype);
217
218 size = sizeof(guidstr);
219 if (subtype && !RegQueryValueExW(key, L"Subtype", NULL, NULL, (BYTE *)guidstr, &size))
220 CLSIDFromString(guidstr, subtype);
221
222 size = sizeof(guidstr);
223 if (source_clsid && !RegQueryValueExW(key, L"Source Filter", NULL, NULL, (BYTE *)guidstr, &size))
224 CLSIDFromString(guidstr, source_clsid);
225
227 return FALSE;
228 }
229 }
230
233 {
234 WARN("Failed to open file %s, error %lu.\n", debugstr_w(filename), GetLastError());
235 return FALSE;
236 }
237
238 if (RegOpenKeyExW(HKEY_CLASSES_ROOT, L"Media Type", 0, KEY_READ, &parent_key))
239 {
241 return FALSE;
242 }
243
244 for (majortype_idx = 0; ; ++majortype_idx)
245 {
246 WCHAR majortype_str[39];
247 HKEY majortype_key;
248 DWORD subtype_idx;
249
250 size = ARRAY_SIZE(majortype_str);
251 if (RegEnumKeyExW(parent_key, majortype_idx, majortype_str, &size, NULL, NULL, NULL, NULL))
252 break;
253
254 if (!wcscmp(majortype_str, L"Extensions"))
255 continue;
256
257 if (RegOpenKeyExW(parent_key, majortype_str, 0, KEY_READ, &majortype_key))
258 continue;
259
260 for (subtype_idx = 0; ; ++subtype_idx)
261 {
262 WCHAR subtype_str[39], *pattern;
263 DWORD value_idx, max_size;
264 HKEY subtype_key;
265
266 size = ARRAY_SIZE(subtype_str);
267 if (RegEnumKeyExW(majortype_key, subtype_idx, subtype_str, &size, NULL, NULL, NULL, NULL))
268 break;
269
270 if (RegOpenKeyExW(majortype_key, subtype_str, 0, KEY_READ, &subtype_key))
271 continue;
272
273 if (RegQueryInfoKeyW(subtype_key, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &max_size, NULL, NULL))
274 continue;
275
277
278 for (value_idx = 0; ; ++value_idx)
279 {
280 /* The longest name we should encounter is "Source Filter". */
281 WCHAR value_name[14], source_clsid_str[39];
282 DWORD value_len = ARRAY_SIZE(value_name);
283
284 size = max_size;
285 if (RegEnumValueW(subtype_key, value_idx, value_name, &value_len,
286 NULL, NULL, (BYTE *)pattern, &max_size))
287 break;
288
289 if (!wcscmp(value_name, L"Source Filter"))
290 continue;
291
293 continue;
294
295 if (majortype)
296 CLSIDFromString(majortype_str, majortype);
297 if (subtype)
298 CLSIDFromString(subtype_str, subtype);
299 size = sizeof(source_clsid_str);
300 if (source_clsid && !RegQueryValueExW(subtype_key, L"Source Filter",
301 NULL, NULL, (BYTE *)source_clsid_str, &size))
302 CLSIDFromString(source_clsid_str, source_clsid);
303
305 RegCloseKey(subtype_key);
306 RegCloseKey(majortype_key);
307 RegCloseKey(parent_key);
309 return TRUE;
310 }
311
313 RegCloseKey(subtype_key);
314 }
315
316 RegCloseKey(majortype_key);
317 }
318
319 RegCloseKey(parent_key);
321 return FALSE;
322}
#define ARRAY_SIZE(A)
Definition: main.h:20
static INT max_size
Definition: history.c:51
#define WARN(fmt,...)
Definition: precomp.h:61
#define RegCloseKey(hKey)
Definition: registry.h:49
static BOOL process_pattern_string(const WCHAR *pattern, HANDLE file)
Definition: filesource.c:112
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3333
LONG WINAPI RegEnumKeyExW(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_ LPWSTR lpName, _Inout_ LPDWORD lpcbName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPWSTR lpClass, _Inout_opt_ LPDWORD lpcbClass, _Out_opt_ PFILETIME lpftLastWriteTime)
Definition: reg.c:2504
LONG WINAPI RegEnumValueW(_In_ HKEY hKey, _In_ DWORD index, _Out_ LPWSTR value, _Inout_ PDWORD val_count, _Reserved_ PDWORD reserved, _Out_opt_ PDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ PDWORD count)
Definition: reg.c:2830
LONG WINAPI RegQueryInfoKeyW(HKEY hKey, LPWSTR lpClass, LPDWORD lpcClass, LPDWORD lpReserved, LPDWORD lpcSubKeys, LPDWORD lpcMaxSubKeyLen, LPDWORD lpcMaxClassLen, LPDWORD lpcValues, LPDWORD lpcMaxValueNameLen, LPDWORD lpcMaxValueLen, LPDWORD lpcbSecurityDescriptor, PFILETIME lpftLastWriteTime)
Definition: reg.c:3662
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
Definition: reg.c:4103
HRESULT WINAPI CLSIDFromString(LPCOLESTR str, LPCLSID clsid)
Definition: combase.c:1470
#define CloseHandle
Definition: compat.h:739
#define wcsrchr
Definition: compat.h:16
#define OPEN_EXISTING
Definition: compat.h:775
#define GENERIC_READ
Definition: compat.h:135
#define CreateFileW
Definition: compat.h:741
#define FILE_SHARE_READ
Definition: compat.h:136
static const WCHAR *const ext[]
Definition: module.c:53
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
Definition: wcs.c:1977
GLubyte * pattern
Definition: glext.h:7787
const char * filename
Definition: ioapi.h:137
const GUID * subtype
Definition: mpegvideo.c:120
#define KEY_READ
Definition: nt_native.h:1026
#define FILE_SHARE_DELETE
Definition: nt_native.h:682
wcscat
Definition: fci.c:123
Definition: copy.c:22
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
#define HKEY_CLASSES_ROOT
Definition: winreg.h:10
unsigned char BYTE
Definition: xxhash.c:193

Referenced by FileSource_Load(), FilterGraph2_AddSourceFilter(), and source_get_media_type().

◆ mem_allocator_create()

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

Definition at line 912 of file memallocator.c.

913{
914 StdMemAllocator * pMemAlloc;
915 HRESULT hr;
916
917 if (lpUnkOuter)
919
920 if (!(pMemAlloc = CoTaskMemAlloc(sizeof(*pMemAlloc))))
921 return E_OUTOFMEMORY;
922
924 pMemAlloc->csState.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": StdMemAllocator.csState");
925
926 pMemAlloc->pMemory = NULL;
927
929 *out = (IUnknown *)&pMemAlloc->base.IMemAllocator_iface;
930 else
931 CoTaskMemFree(pMemAlloc);
932
933 return hr;
934}
static HRESULT StdMemAllocator_Alloc(IMemAllocator *iface)
Definition: memallocator.c:831
static HRESULT BaseMemAllocator_Init(HRESULT(*fnAlloc)(IMemAllocator *), HRESULT(*fnFree)(IMemAllocator *), HRESULT(*fnVerify)(IMemAllocator *, ALLOCATOR_PROPERTIES *), HRESULT(*fnBufferPrepare)(IMemAllocator *, StdMediaSample2 *, DWORD), HRESULT(*fnBufferReleased)(IMemAllocator *, StdMediaSample2 *), void(*fnDestroyed)(IMemAllocator *), CRITICAL_SECTION *pCritSect, BaseMemAllocator *pMemAlloc)
Definition: memallocator.c:78
static HRESULT StdMemAllocator_Free(IMemAllocator *iface)
Definition: memallocator.c:869
static void StdMemAllocator_Destroy(IMemAllocator *iface)
Definition: memallocator.c:902
void WINAPI CoTaskMemFree(void *ptr)
Definition: malloc.c:389
IMemAllocator IMemAllocator_iface
Definition: memallocator.c:48
CRITICAL_SECTION csState
Definition: memallocator.c:822
BaseMemAllocator base
Definition: memallocator.c:821
PRTL_CRITICAL_SECTION_DEBUG DebugInfo
Definition: rtltypes.h:1478
#define CLASS_E_NOAGGREGATION
Definition: winerror.h:3771

◆ mpeg1_splitter_create()

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

Definition at line 27 of file parser.c.

28{
29 static const GUID CLSID_wg_mpeg1_splitter = {0xa8edbf98,0x2442,0x42c5,{0x85,0xa1,0xab,0x05,0xa5,0x80,0xdf,0x53}};
30 return CoCreateInstance(&CLSID_wg_mpeg1_splitter, outer, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void **)out);
31}

◆ mpeg_audio_codec_create()

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

Definition at line 21 of file decoder.c.

22{
23 static const GUID CLSID_wg_mpeg_audio_decoder = {0xc9f285f8,0x4380,0x4121,{0x97,0x1f,0x49,0xa9,0x53,0x16,0xc2,0x7b}};
24 return CoCreateInstance(&CLSID_wg_mpeg_audio_decoder, outer, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void **)out);
25}

◆ mpeg_layer3_decoder_create()

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

◆ mpeg_video_codec_create()

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

Definition at line 27 of file decoder.c.

28{
29 static const GUID CLSID_wg_mpeg_video_decoder = {0x5ed2e5f6,0xbf3e,0x4180,{0x83,0xa4,0x48,0x47,0xcc,0x5b,0x4e,0xa3}};
30 return CoCreateInstance(&CLSID_wg_mpeg_video_decoder, outer, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void **)out);
31}

◆ qzdebugstr_guid()

const char * qzdebugstr_guid ( const GUID *  id)

Definition at line 671 of file main.c.

672{
673 int i;
674
675 for (i=0; InterfaceDesc[i].name; i++)
676 if (IsEqualGUID(&InterfaceDesc[i].riid, id)) return InterfaceDesc[i].name;
677
678 return debugstr_guid(id);
679}
static const struct @330 InterfaceDesc[]
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
REFIID riid
Definition: atlbase.h:39
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147

Referenced by BaseMemAllocator_QueryInterface(), EnumFilters_QueryInterface(), StdMediaSample2_QueryInterface(), and VMR9_ImagePresenter_QueryInterface().

◆ seeking_passthrough_create()

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

Definition at line 94 of file passthrough.c.

95{
97
98 TRACE("outer %p, out %p.\n", outer, out);
99
100 if (!(object = calloc(1, sizeof(*object))))
101 return E_OUTOFMEMORY;
102
103 object->IUnknown_inner.lpVtbl = &seeking_passthrough_vtbl;
104 object->outer_unk = outer ? outer : &object->IUnknown_inner;
105 object->refcount = 1;
106
107 strmbase_passthrough_init(&object->passthrough, object->outer_unk);
108
109 TRACE("Created seeking passthrough %p.\n", object);
110 *out = &object->IUnknown_inner;
111 return S_OK;
112}
static const IUnknownVtbl seeking_passthrough_vtbl
Definition: passthrough.c:87

◆ system_clock_create()

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

Definition at line 327 of file systemclock.c.

328{
329 struct system_clock *object;
330
331 TRACE("outer %p, out %p.\n", outer, out);
332
333 if (!(object = heap_alloc_zero(sizeof(*object))))
334 {
335 *out = NULL;
336 return E_OUTOFMEMORY;
337 }
338
339 object->IReferenceClock_iface.lpVtbl = &SystemClock_vtbl;
340 object->IUnknown_inner.lpVtbl = &system_clock_inner_vtbl;
341 object->outer_unk = outer ? outer : &object->IUnknown_inner;
342 object->refcount = 1;
343 list_init(&object->sinks);
345 object->cs.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": SystemClockImpl.cs");
346
347 TRACE("Created system clock %p.\n", object);
348 *out = &object->IUnknown_inner;
349
350 return S_OK;
351}
static void list_init(struct list_entry *head)
Definition: list.h:51
static const IUnknownVtbl system_clock_inner_vtbl
Definition: systemclock.c:128
static const IReferenceClockVtbl SystemClock_vtbl
Definition: systemclock.c:316

Referenced by dsound_render_create().

◆ 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}
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
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
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)
HRESULT vmr7_create(IUnknown *outer, IUnknown **out)
Definition: vmr7.c:1553

◆ video_unregister_windowclass()

void video_unregister_windowclass ( void  )

◆ video_window_cleanup()

void video_window_cleanup ( struct video_window *  window)

Definition at line 1288 of file window.c.

1289{
1290 if (window->hwnd)
1291 {
1292 /* Media Player Classic deadlocks if WM_PARENTNOTIFY is sent, so clear
1293 * the child style first. Just like Windows, we don't actually unparent
1294 * the window, to prevent extra focus events from being generated since
1295 * it would become top-level for a brief period before being destroyed. */
1297
1299 window->hwnd = NULL;
1300 }
1301}
#define WM_QUARTZ_DESTROY
Definition: window.c:23

Referenced by filter_config_SetRenderingMode(), video_renderer_create(), video_renderer_destroy(), vmr7_create(), vmr9_create(), VMR9FilterConfig_SetRenderingMode(), and vmr_destroy().

◆ video_window_create_window()

HRESULT video_window_create_window ( struct video_window *  window)

Definition at line 98 of file window.c.

99{
100 WNDCLASSW winclass = {0};
101
102 winclass.lpfnWndProc = WndProcW;
103 winclass.cbWndExtra = sizeof(window);
104 winclass.lpszClassName = class_name;
106 {
107 ERR("Failed to register class, error %lu.\n", GetLastError());
108 return E_FAIL;
109 }
110
111 if (!(window->hwnd = CreateWindowExW(0, class_name, L"ActiveMovie Window",
114 NULL, NULL, NULL, NULL)))
115 {
116 ERR("Unable to create window\n");
117 return E_FAIL;
118 }
119
121
122 return S_OK;
123}
#define ERR(fmt,...)
Definition: precomp.h:57
static const WCHAR class_name[]
Definition: window.c:27
static LRESULT CALLBACK WndProcW(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
Definition: window.c:34
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
#define WS_OVERLAPPEDWINDOW
Definition: pedump.c:637
#define WS_CLIPSIBLINGS
Definition: pedump.c:618
#define WS_CLIPCHILDREN
Definition: pedump.c:619
ATOM WINAPI RegisterClassW(_In_ CONST WNDCLASSW *)
HWND WINAPI CreateWindowExW(_In_ DWORD dwExStyle, _In_opt_ LPCWSTR lpClassName, _In_opt_ LPCWSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
#define CW_USEDEFAULT
Definition: winuser.h:225
LPCWSTR lpszClassName
Definition: winuser.h:3293
WNDPROC lpfnWndProc
Definition: winuser.h:3285
int cbWndExtra
Definition: winuser.h:3287
#define ERROR_CLASS_ALREADY_EXISTS
Definition: winerror.h:1236

Referenced by video_renderer_create(), vmr7_create(), and vmr9_create().

◆ video_window_init()

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 at line 1275 of file window.c.

1277{
1278 memset(window, 0, sizeof(*window));
1279 window->ops = ops;
1280 window->IVideoWindow_iface.lpVtbl = vtbl;
1281 window->IBasicVideo_iface.lpVtbl = &basic_video_vtbl;
1282 window->default_dst = TRUE;
1283 window->AutoShow = OATRUE;
1284 window->pFilter = owner;
1285 window->pPin = pin;
1286}
static const IBasicVideoVtbl basic_video_vtbl
Definition: window.c:1226
#define memset(x, y, z)
Definition: compat.h:39

Referenced by video_renderer_create(), vmr7_create(), and vmr9_create().

◆ video_window_unregister_class()

void video_window_unregister_class ( void  )

Definition at line 1269 of file window.c.

1270{
1272 ERR("Failed to unregister class, error %lu.\n", GetLastError());
1273}
BOOL WINAPI UnregisterClassW(_In_ LPCWSTR, HINSTANCE)
#define ERROR_CLASS_DOES_NOT_EXIST
Definition: winerror.h:1237

Referenced by DllMain().

◆ vmr7_create()

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

Definition at line 1553 of file vmr7.c.

1554{
1555 struct vmr7 *object;
1556 HRESULT hr;
1557
1558 if (!(object = calloc(1, sizeof(*object))))
1559 return E_OUTOFMEMORY;
1560
1561 strmbase_renderer_init(&object->renderer, outer, &CLSID_VideoMixingRenderer, L"VMR Input0", &renderer_ops);
1562 object->IAMCertifiedOutputProtection_iface.lpVtbl = &certified_output_protection_vtbl;
1563 object->IAMFilterMiscFlags_iface.lpVtbl = &misc_flags_vtbl;
1564 object->IVMRFilterConfig_iface.lpVtbl = &filter_config_vtbl;
1565 object->IVMRMonitorConfig_iface.lpVtbl = &monitor_config_vtbl;
1566 object->IVMRSurfaceAllocatorNotify_iface.lpVtbl = &surface_allocator_notify_vtbl;
1567 object->IVMRWindowlessControl_iface.lpVtbl = &windowless_control_vtbl;
1568
1569 object->IAMVideoAccelerator_iface.lpVtbl = &video_accelerator_vtbl;
1570 object->IOverlay_iface.lpVtbl = &overlay_vtbl;
1571
1573 &object->renderer.filter, &object->renderer.sink.pin, &window_ops);
1574
1575 if (FAILED(hr = video_window_create_window(&object->window)))
1576 {
1577 video_window_cleanup(&object->window);
1579 free(object);
1580 return hr;
1581 }
1582
1583 object->mixing_prefs = MixerPref9_NoDecimation | MixerPref9_ARAdjustXorY
1585
1586 TRACE("Created VMR %p.\n", object);
1587 *out = &object->renderer.filter.IUnknown_inner;
1588 return S_OK;
1589}
static const IAMVideoAcceleratorVtbl video_accelerator_vtbl
Definition: vmr7.c:1424
static const struct video_window_ops window_ops
Definition: vmr7.c:524
static const struct strmbase_renderer_ops renderer_ops
Definition: vmr7.c:496
static const IAMFilterMiscFlagsVtbl misc_flags_vtbl
Definition: vmr7.c:667
static const IAMCertifiedOutputProtectionVtbl certified_output_protection_vtbl
Definition: vmr7.c:630
static const IVMRMonitorConfigVtbl monitor_config_vtbl
Definition: vmr7.c:989
static const IOverlayVtbl overlay_vtbl
Definition: vmr7.c:1536
static const IVMRWindowlessControlVtbl windowless_control_vtbl
Definition: vmr7.c:1178
static const IVideoWindowVtbl IVideoWindow_VTable
Definition: vmr7.c:530
static const IVMRSurfaceAllocatorNotifyVtbl surface_allocator_notify_vtbl
Definition: vmr7.c:1294
static const IVMRFilterConfigVtbl filter_config_vtbl
Definition: vmr7.c:813
Definition: vmr7.c:52
@ MixerPref9_NoDecimation
Definition: vmr9.idl:182
@ MixerPref9_RenderTargetRGB
Definition: vmr9.idl:198
@ MixerPref9_BiLinearFiltering
Definition: vmr9.idl:189
@ MixerPref9_ARAdjustXorY
Definition: vmr9.idl:184

Referenced by video_renderer_default_create().

◆ vmr7_presenter_create()

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

Definition at line 444 of file vmr7_presenter.c.

445{
446 struct vmr7_presenter *object;
447 HRESULT hr;
448
449 DDSURFACEDESC2 primary_desc =
450 {
451 .dwSize = sizeof(DDSURFACEDESC2),
453 .ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE,
454 };
455
456 TRACE("outer %p, out %p.\n", outer, out);
457
458 if (outer)
459 FIXME("Ignoring outer %p.\n", outer);
460
461 if (!(object = calloc(1, sizeof(*object))))
462 return E_OUTOFMEMORY;
463 object->IVMRImagePresenter_iface.lpVtbl = &image_presenter_vtbl;
464 object->IVMRSurfaceAllocator_iface.lpVtbl = &surface_allocator_vtbl;
465 object->IVMRWindowlessControl_iface.lpVtbl = &windowless_control_vtbl;
466 object->refcount = 1;
467
468 if (FAILED(hr = DirectDrawCreateEx(NULL, (void **)&object->ddraw, &IID_IDirectDraw7, NULL)))
469 {
470 ERR("Failed to create ddraw object, hr %#lx.\n", hr);
471 free(object);
472 return hr;
473 }
474
475 if (FAILED(hr = IDirectDraw7_SetCooperativeLevel(object->ddraw, NULL, DDSCL_NORMAL)))
476 ERR("Failed to set cooperative level, hr %#lx.\n", hr);
477
478 if (FAILED(hr = IDirectDraw7_CreateSurface(object->ddraw, &primary_desc, &object->primary, NULL)))
479 ERR("Failed to create primary surface, hr %#lx.\n", hr);
480
481 TRACE("Created VMR7 default presenter %p.\n", object);
482 *out = (IUnknown *)&object->IVMRSurfaceAllocator_iface;
483 return S_OK;
484}
HRESULT WINAPI DirectDrawCreateEx(LPGUID lpGUID, LPVOID *lplpDD, REFIID id, LPUNKNOWN pUnkOuter)
Definition: main.c:139
#define DDSCL_NORMAL
Definition: ddraw.h:537
struct _DDSURFACEDESC2 DDSURFACEDESC2
#define DDSCAPS_PRIMARYSURFACE
Definition: ddraw.h:260
#define DDSD_CAPS
Definition: ddraw.h:210
DWORD dwSize
Definition: ddraw.h:1154
static const IVMRSurfaceAllocatorVtbl surface_allocator_vtbl
static const IVMRWindowlessControlVtbl windowless_control_vtbl
static const IVMRImagePresenterVtbl image_presenter_vtbl

Referenced by filter_config_SetRenderingMode().

◆ vmr9_create()

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

Definition at line 2169 of file vmr9.c.

2170{
2171 struct quartz_vmr *object;
2172 HRESULT hr;
2173
2174 if (!(object = calloc(1, sizeof(*object))))
2175 return E_OUTOFMEMORY;
2176
2177 object->hD3d9 = LoadLibraryA("d3d9.dll");
2178 if (!object->hD3d9)
2179 {
2180 WARN("Could not load d3d9.dll\n");
2181 free(object);
2183 }
2184
2185 strmbase_renderer_init(&object->renderer, outer, &CLSID_VideoMixingRenderer9, L"VMR Input0", &renderer_ops);
2186 object->IAMCertifiedOutputProtection_iface.lpVtbl = &IAMCertifiedOutputProtection_Vtbl;
2187 object->IAMFilterMiscFlags_iface.lpVtbl = &IAMFilterMiscFlags_Vtbl;
2188 object->IVMRAspectRatioControl9_iface.lpVtbl = &aspect_ratio_control9_vtbl;
2189 object->IVMRFilterConfig9_iface.lpVtbl = &VMR9_FilterConfig_Vtbl;
2190 object->IVMRMixerBitmap9_iface.lpVtbl = &mixer_bitmap9_vtbl;
2191 object->IVMRMixerControl9_iface.lpVtbl = &mixer_control9_vtbl;
2192 object->IVMRMonitorConfig9_iface.lpVtbl = &VMR9_MonitorConfig_Vtbl;
2193 object->IVMRSurfaceAllocatorNotify9_iface.lpVtbl = &VMR9_SurfaceAllocatorNotify_Vtbl;
2194 object->IVMRWindowlessControl9_iface.lpVtbl = &VMR9_WindowlessControl_Vtbl;
2195
2196 object->IAMVideoAccelerator_iface.lpVtbl = &video_accelerator_vtbl;
2197 object->IOverlay_iface.lpVtbl = &overlay_vtbl;
2198
2200 &object->renderer.filter, &object->renderer.sink.pin, &window_ops);
2201
2202 if (FAILED(hr = video_window_create_window(&object->window)))
2203 {
2204 video_window_cleanup(&object->window);
2206 FreeLibrary(object->hD3d9);
2207 free(object);
2208 return hr;
2209 }
2210
2211 object->mixing_prefs = MixerPref9_NoDecimation | MixerPref9_ARAdjustXorY
2213
2214 TRACE("Created VMR %p.\n", object);
2215 *out = &object->renderer.filter.IUnknown_inner;
2216 return S_OK;
2217}
static const IVMRMixerBitmap9Vtbl mixer_bitmap9_vtbl
Definition: vmr9.c:1863
static const IAMCertifiedOutputProtectionVtbl IAMCertifiedOutputProtection_Vtbl
Definition: vmr9.c:808
static const IVMRFilterConfig9Vtbl VMR9_FilterConfig_Vtbl
Definition: vmr9.c:1172
static const IAMVideoAcceleratorVtbl video_accelerator_vtbl
Definition: vmr9.c:2043
static const struct video_window_ops window_ops
Definition: vmr9.c:695
static const struct strmbase_renderer_ops renderer_ops
Definition: vmr9.c:612
static const IOverlayVtbl overlay_vtbl
Definition: vmr9.c:2152
static const IVMRMonitorConfig9Vtbl VMR9_MonitorConfig_Vtbl
Definition: vmr9.c:1008
static const IVMRAspectRatioControl9Vtbl aspect_ratio_control9_vtbl
Definition: vmr9.c:1920
static const IVMRWindowlessControl9Vtbl VMR9_WindowlessControl_Vtbl
Definition: vmr9.c:1391
static const IVideoWindowVtbl IVideoWindow_VTable
Definition: vmr9.c:701
static const IVMRSurfaceAllocatorNotify9Vtbl VMR9_SurfaceAllocatorNotify_Vtbl
Definition: vmr9.c:1633
static const IVMRMixerControl9Vtbl mixer_control9_vtbl
Definition: vmr9.c:1796
static const IAMFilterMiscFlagsVtbl IAMFilterMiscFlags_Vtbl
Definition: vmr9.c:838
#define FreeLibrary(x)
Definition: compat.h:748
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
Definition: loader.c:111
#define VFW_E_DDRAW_CAPS_NOT_SUITABLE
Definition: vfwmsgs.h:124

◆ wave_parser_create()

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

Definition at line 33 of file parser.c.

34{
35 static const GUID CLSID_wg_wave_parser = {0x3f839ec7,0x5ea6,0x49e1,{0x80,0xc2,0x1e,0xa3,0x00,0xf8,0xb0,0xe0}};
36 return CoCreateInstance(&CLSID_wg_wave_parser, outer, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void **)out);
37}