ReactOS 0.4.17-dev-966-gf06eace
qcap_main.c File Reference
#include "qcap_private.h"
#include "rpcproxy.h"
Include dependency graph for qcap_main.c:

Go to the source code of this file.

Classes

struct  class_factory
 

Macros

#define WINE_NO_NAMELESS_EXTENSION
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (quartz)
 
static struct class_factory * impl_from_IClassFactory (IClassFactory *iface)
 
static HRESULT WINAPI class_factory_QueryInterface (IClassFactory *iface, REFIID iid, void **out)
 
static ULONG WINAPI class_factory_AddRef (IClassFactory *iface)
 
static ULONG WINAPI class_factory_Release (IClassFactory *iface)
 
static HRESULT WINAPI class_factory_CreateInstance (IClassFactory *iface, IUnknown *outer, REFIID iid, void **out)
 
static HRESULT WINAPI class_factory_LockServer (IClassFactory *iface, BOOL lock)
 
HRESULT WINAPI DllGetClassObject (REFCLSID clsid, REFIID iid, void **out)
 
HRESULT WINAPI DllRegisterServer (void)
 
HRESULT WINAPI DllUnregisterServer (void)
 

Variables

static const IClassFactoryVtbl class_factory_vtbl
 
static struct class_factory audio_record_cf = {{&class_factory_vtbl}, audio_record_create}
 
static struct class_factory avi_compressor_cf = {{&class_factory_vtbl}, avi_compressor_create}
 
static struct class_factory avi_mux_cf = {{&class_factory_vtbl}, avi_mux_create}
 
static struct class_factory capture_graph_cf = {{&class_factory_vtbl}, capture_graph_create}
 
static struct class_factory file_writer_cf = {{&class_factory_vtbl}, file_writer_create}
 
static struct class_factory smart_tee_cf = {{&class_factory_vtbl}, smart_tee_create}
 
static struct class_factory vfw_capture_cf = {{&class_factory_vtbl}, vfw_capture_create}
 
static const REGPINTYPES reg_avi_mux_sink_mt = {&MEDIATYPE_Stream, &MEDIASUBTYPE_Avi}
 
static const REGFILTERPINS2 reg_avi_mux_pins [1]
 
static const REGFILTER2 reg_avi_mux
 
static const REGPINTYPES reg_video_mt = {&MEDIATYPE_Video, &GUID_NULL}
 
static const REGFILTERPINS2 reg_smart_tee_pins [3]
 
static const REGFILTER2 reg_smart_tee
 
static const REGPINTYPES reg_file_writer_sink_mt = {&GUID_NULL, &GUID_NULL}
 
static const REGFILTERPINS2 reg_file_writer_pins [1]
 
static const REGFILTER2 reg_file_writer
 

Macro Definition Documentation

◆ WINE_NO_NAMELESS_EXTENSION

#define WINE_NO_NAMELESS_EXTENSION

Definition at line 23 of file qcap_main.c.

Function Documentation

◆ class_factory_AddRef()

static ULONG WINAPI class_factory_AddRef ( IClassFactory *  iface)
static

Definition at line 57 of file qcap_main.c.

58{
59 return 2;
60}

◆ class_factory_CreateInstance()

static HRESULT WINAPI class_factory_CreateInstance ( IClassFactory *  iface,
IUnknown *  outer,
REFIID  iid,
void **  out 
)
static

Definition at line 67 of file qcap_main.c.

68{
70 IUnknown *unk;
71 HRESULT hr;
72
73 TRACE("iface %p, outer %p, iid %s, out %p.\n", iface, outer, debugstr_guid(iid), out);
74
75 if (outer && !IsEqualGUID(iid, &IID_IUnknown))
76 return E_NOINTERFACE;
77
78 *out = NULL;
79 if (SUCCEEDED(hr = factory->create_instance(outer, &unk)))
80 {
81 hr = IUnknown_QueryInterface(unk, iid, out);
82 IUnknown_Release(unk);
83 }
84 return hr;
85}
const GUID IID_IUnknown
HRESULT hr
Definition: delayimp.cpp:582
#define NULL
Definition: types.h:112
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define debugstr_guid
Definition: kernel32.h:35
static IUnknown * outer
Definition: compobj.c:82
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
static struct class_factory * impl_from_IClassFactory(IClassFactory *iface)
Definition: qcap_main.c:36
#define TRACE(s)
Definition: solgame.cpp:4
Definition: main.c:439
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ class_factory_LockServer()

static HRESULT WINAPI class_factory_LockServer ( IClassFactory *  iface,
BOOL  lock 
)
static

Definition at line 87 of file qcap_main.c.

88{
89 TRACE("iface %p, lock %d.\n", iface, lock);
90 return S_OK;
91}
#define S_OK
Definition: intsafe.h:52
rwlock_t lock
Definition: tcpcore.h:0

◆ class_factory_QueryInterface()

static HRESULT WINAPI class_factory_QueryInterface ( IClassFactory *  iface,
REFIID  iid,
void **  out 
)
static

Definition at line 41 of file qcap_main.c.

42{
43 TRACE("iface %p, iid %s, out %p.\n", iface, debugstr_guid(iid), out);
44
46 {
47 *out = iface;
48 IClassFactory_AddRef(iface);
49 return S_OK;
50 }
51
52 *out = NULL;
53 WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid));
54 return E_NOINTERFACE;
55}
#define WARN(fmt,...)
Definition: precomp.h:61
const GUID IID_IClassFactory

◆ class_factory_Release()

static ULONG WINAPI class_factory_Release ( IClassFactory *  iface)
static

Definition at line 62 of file qcap_main.c.

63{
64 return 1;
65}

◆ DllGetClassObject()

HRESULT WINAPI DllGetClassObject ( REFCLSID  clsid,
REFIID  iid,
void **  out 
)

Definition at line 110 of file qcap_main.c.

111{
112 struct class_factory *factory;
113
114 TRACE("clsid %s, iid %s, out %p.\n", debugstr_guid(clsid), debugstr_guid(iid), out);
115
116 if (IsEqualGUID(clsid, &CLSID_AudioRecord))
118 else if (IsEqualGUID(clsid, &CLSID_AVICo))
120 else if (IsEqualGUID(clsid, &CLSID_AviDest))
122 else if (IsEqualGUID(clsid, &CLSID_CaptureGraphBuilder))
124 else if (IsEqualGUID(clsid, &CLSID_CaptureGraphBuilder2))
126 else if (IsEqualGUID(clsid, &CLSID_FileWriter))
128 else if (IsEqualGUID(clsid, &CLSID_SmartTee))
130 else if (IsEqualGUID(clsid, &CLSID_VfwCapture))
132 else
133 {
134 FIXME("%s not implemented, returning CLASS_E_CLASSNOTAVAILABLE.\n", debugstr_guid(clsid));
136 }
137
138 return IClassFactory_QueryInterface(&factory->IClassFactory_iface, iid, out);
139}
#define FIXME(fmt,...)
Definition: precomp.h:53
const CLSID * clsid
Definition: msctf.cpp:50
static struct class_factory avi_compressor_cf
Definition: qcap_main.c:103
static struct class_factory capture_graph_cf
Definition: qcap_main.c:105
static struct class_factory audio_record_cf
Definition: qcap_main.c:102
static struct class_factory smart_tee_cf
Definition: qcap_main.c:107
static struct class_factory file_writer_cf
Definition: qcap_main.c:106
static struct class_factory vfw_capture_cf
Definition: qcap_main.c:108
static struct class_factory avi_mux_cf
Definition: qcap_main.c:104
IClassFactory IClassFactory_iface
Definition: main.c:440
#define CLASS_E_CLASSNOTAVAILABLE
Definition: winerror.h:3772

◆ DllRegisterServer()

HRESULT WINAPI DllRegisterServer ( void  )

Definition at line 213 of file qcap_main.c.

214{
215 IFilterMapper2 *mapper;
216 HRESULT hr;
217
219 return hr;
220
221 if (FAILED(hr = CoCreateInstance(&CLSID_FilterMapper2, NULL, CLSCTX_INPROC_SERVER,
222 &IID_IFilterMapper2, (void **)&mapper)))
223 return hr;
224
225 IFilterMapper2_RegisterFilter(mapper, &CLSID_AviDest, L"AVI Mux",
227 IFilterMapper2_RegisterFilter(mapper, &CLSID_FileWriter, L"File writer",
229 IFilterMapper2_RegisterFilter(mapper, &CLSID_SmartTee, L"Smart Tee",
231
232 IFilterMapper2_Release(mapper);
233 return S_OK;
234}
HRESULT __wine_register_resources(HMODULE module)
Definition: register.c:112
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
Definition: combase.c:1685
#define L(x)
Definition: resources.c:13
#define FAILED(hr)
Definition: intsafe.h:51
static const REGFILTER2 reg_avi_mux
Definition: qcap_main.c:152
static const REGFILTER2 reg_file_writer
Definition: qcap_main.c:202
static const REGFILTER2 reg_smart_tee
Definition: qcap_main.c:183

◆ DllUnregisterServer()

HRESULT WINAPI DllUnregisterServer ( void  )

Definition at line 239 of file qcap_main.c.

240{
241 IFilterMapper2 *mapper;
242 HRESULT hr;
243
245 return hr;
246
247 if (FAILED(hr = CoCreateInstance(&CLSID_FilterMapper2, NULL, CLSCTX_INPROC_SERVER,
248 &IID_IFilterMapper2, (void **)&mapper)))
249 return hr;
250
251 IFilterMapper2_UnregisterFilter(mapper, NULL, NULL, &CLSID_AviDest);
252 IFilterMapper2_UnregisterFilter(mapper, NULL, NULL, &CLSID_FileWriter);
253 IFilterMapper2_UnregisterFilter(mapper, NULL, NULL, &CLSID_SmartTee);
254
255 IFilterMapper2_Release(mapper);
256 return S_OK;
257}
HRESULT __wine_unregister_resources(HMODULE module)
Definition: register.c:124

◆ impl_from_IClassFactory()

static struct class_factory * impl_from_IClassFactory ( IClassFactory *  iface)
inlinestatic

Definition at line 36 of file qcap_main.c.

37{
38 return CONTAINING_RECORD(iface, struct class_factory, IClassFactory_iface);
39}
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260

Referenced by class_factory_CreateInstance().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( quartz  )

Variable Documentation

◆ audio_record_cf

Definition at line 102 of file qcap_main.c.

Referenced by DllGetClassObject().

◆ avi_compressor_cf

Definition at line 103 of file qcap_main.c.

Referenced by DllGetClassObject().

◆ avi_mux_cf

Definition at line 104 of file qcap_main.c.

Referenced by DllGetClassObject().

◆ capture_graph_cf

Definition at line 105 of file qcap_main.c.

Referenced by DllGetClassObject().

◆ class_factory_vtbl

const IClassFactoryVtbl class_factory_vtbl
static
Initial value:
=
{
}
static ULONG WINAPI class_factory_Release(IClassFactory *iface)
Definition: qcap_main.c:62
static HRESULT WINAPI class_factory_LockServer(IClassFactory *iface, BOOL lock)
Definition: qcap_main.c:87
static HRESULT WINAPI class_factory_CreateInstance(IClassFactory *iface, IUnknown *outer, REFIID iid, void **out)
Definition: qcap_main.c:67
static ULONG WINAPI class_factory_AddRef(IClassFactory *iface)
Definition: qcap_main.c:57
static HRESULT WINAPI class_factory_QueryInterface(IClassFactory *iface, REFIID iid, void **out)
Definition: qcap_main.c:41

Definition at line 93 of file qcap_main.c.

◆ file_writer_cf

Definition at line 106 of file qcap_main.c.

Referenced by DllGetClassObject().

◆ reg_avi_mux

const REGFILTER2 reg_avi_mux
static
Initial value:
=
{
.dwVersion = 2,
.dwMerit = MERIT_DO_NOT_USE,
.u.s2.cPins2 = 1,
.u.s2.rgPins2 = reg_avi_mux_pins,
}
#define MERIT_DO_NOT_USE
Definition: precomp.h:18
static const REGFILTERPINS2 reg_avi_mux_pins[1]
Definition: qcap_main.c:143

Definition at line 152 of file qcap_main.c.

Referenced by DllRegisterServer().

◆ reg_avi_mux_pins

const REGFILTERPINS2 reg_avi_mux_pins[1]
static
Initial value:
=
{
{
.cInstances = 1,
.nMediaTypes = 1,
.lpMediaType = &reg_avi_mux_sink_mt,
},
}
static const REGPINTYPES reg_avi_mux_sink_mt
Definition: qcap_main.c:141

Definition at line 143 of file qcap_main.c.

◆ reg_avi_mux_sink_mt

const REGPINTYPES reg_avi_mux_sink_mt = {&MEDIATYPE_Stream, &MEDIASUBTYPE_Avi}
static

Definition at line 141 of file qcap_main.c.

◆ reg_file_writer

const REGFILTER2 reg_file_writer
static
Initial value:
=
{
.dwVersion = 2,
.dwMerit = MERIT_DO_NOT_USE,
.u.s2.cPins2 = 1,
.u.s2.rgPins2 = reg_file_writer_pins,
}
static const REGFILTERPINS2 reg_file_writer_pins[1]
Definition: qcap_main.c:193

Definition at line 202 of file qcap_main.c.

Referenced by DllRegisterServer().

◆ reg_file_writer_pins

const REGFILTERPINS2 reg_file_writer_pins[1]
static
Initial value:
=
{
{
.cInstances = 1,
.nMediaTypes = 1,
.lpMediaType = &reg_file_writer_sink_mt,
},
}
static const REGPINTYPES reg_file_writer_sink_mt
Definition: qcap_main.c:191

Definition at line 193 of file qcap_main.c.

◆ reg_file_writer_sink_mt

const REGPINTYPES reg_file_writer_sink_mt = {&GUID_NULL, &GUID_NULL}
static

Definition at line 191 of file qcap_main.c.

◆ reg_smart_tee

const REGFILTER2 reg_smart_tee
static
Initial value:
=
{
.dwVersion = 2,
.dwMerit = MERIT_DO_NOT_USE,
.u.s2.cPins2 = 3,
.u.s2.rgPins2 = reg_smart_tee_pins,
}
static const REGFILTERPINS2 reg_smart_tee_pins[3]
Definition: qcap_main.c:162

Definition at line 183 of file qcap_main.c.

Referenced by DllRegisterServer().

◆ reg_smart_tee_pins

const REGFILTERPINS2 reg_smart_tee_pins[3]
static
Initial value:
=
{
{
.cInstances = 1,
.nMediaTypes = 1,
.lpMediaType = &reg_video_mt,
},
{
.cInstances = 1,
.nMediaTypes = 1,
.lpMediaType = &reg_video_mt,
},
{
.cInstances = 1,
.nMediaTypes = 1,
.lpMediaType = &reg_video_mt,
},
}
@ REG_PINFLAG_B_OUTPUT
Definition: axextend.idl:221
static const REGPINTYPES reg_video_mt
Definition: qcap_main.c:160

Definition at line 162 of file qcap_main.c.

◆ reg_video_mt

const REGPINTYPES reg_video_mt = {&MEDIATYPE_Video, &GUID_NULL}
static

Definition at line 160 of file qcap_main.c.

◆ smart_tee_cf

Definition at line 107 of file qcap_main.c.

Referenced by DllGetClassObject().

◆ vfw_capture_cf

Definition at line 108 of file qcap_main.c.

Referenced by DllGetClassObject().