ReactOS 0.4.17-dev-966-gf06eace
devenum_private.h File Reference
#include "dshow.h"
#include "dmo.h"
#include "dmodshow.h"
Include dependency graph for devenum_private.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  moniker
 

Macros

#define COBJMACROS
 

Enumerations

enum  device_type { DEVICE_FILTER , DEVICE_CODEC , DEVICE_DMO }
 

Functions

HRESULT create_filter_data (VARIANT *var, REGFILTER2 *rgf)
 
struct moniker * dmo_moniker_create (const GUID class, const GUID clsid)
 
struct moniker * codec_moniker_create (const GUID *class, const WCHAR *name)
 
struct moniker * filter_moniker_create (const GUID *class, const WCHAR *name)
 
HRESULT enum_moniker_create (REFCLSID class, IEnumMoniker **enum_mon)
 

Variables

ICreateDevEnum devenum_factory
 
IParseDisplayName devenum_parser
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 25 of file devenum_private.h.

Enumeration Type Documentation

◆ device_type

Enumerator
DEVICE_FILTER 
DEVICE_CODEC 
DEVICE_DMO 

Definition at line 30 of file devenum_private.h.

31{
35};
@ DEVICE_FILTER
@ DEVICE_DMO
@ DEVICE_CODEC

Function Documentation

◆ codec_moniker_create()

struct moniker * codec_moniker_create ( const GUID *  class,
const WCHAR *  name 
)

Definition at line 815 of file mediacatenum.c.

816{
817 struct moniker *object;
818
819 if (!(object = calloc(1, sizeof(*object))))
820 return NULL;
821
822 object->IMoniker_iface.lpVtbl = &IMoniker_Vtbl;
823 object->IPropertyBag_iface.lpVtbl = &IPropertyBag_Vtbl;
824 object->ref = 1;
825 object->type = DEVICE_CODEC;
826 if (class)
827 object->class = *class;
828 object->has_class = !!class;
829 object->name = wcsdup(name);
830
831 return object;
832}
#define NULL
Definition: types.h:112
static wchar_t * wcsdup(const wchar_t *str)
Definition: string.h:94
static const IPropertyBagVtbl IPropertyBag_Vtbl
Definition: mediacatenum.c:384
static const IMonikerVtbl IMoniker_Vtbl
Definition: mediacatenum.c:769
#define calloc
Definition: rosglue.h:14
Definition: name.c:39

Referenced by devenum_parser_ParseDisplayName(), and enum_moniker_Next().

◆ create_filter_data()

HRESULT create_filter_data ( VARIANT *  var,
REGFILTER2 *  rgf 
)

Definition at line 346 of file createdevenum.c.

347{
348 IAMFilterData *fildata;
349 BYTE *data = NULL;
350 ULONG size;
351 HRESULT hr;
352
353 hr = CoCreateInstance(&CLSID_FilterMapper2, NULL, CLSCTX_INPROC, &IID_IAMFilterData, (void **)&fildata);
354 if (FAILED(hr))
355 return hr;
356
357 hr = IAMFilterData_CreateFilterData(fildata, rgf, &data, &size);
358 IAMFilterData_Release(fildata);
359 if (FAILED(hr))
360 return hr;
361
362 V_VT(var) = VT_ARRAY | VT_UI1;
364 {
367 return E_OUTOFMEMORY;
368 }
369
372 return S_OK;
373}
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
HRESULT hr
Definition: delayimp.cpp:582
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
Definition: combase.c:1685
void WINAPI CoTaskMemFree(void *ptr)
Definition: malloc.c:389
@ VT_ARRAY
Definition: compat.h:2341
@ VT_UI1
Definition: compat.h:2311
SAFEARRAY *WINAPI SafeArrayCreateVector(VARTYPE vt, LONG lLbound, ULONG cElements)
Definition: safearray.c:677
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLsizeiptr size
Definition: glext.h:5919
#define S_OK
Definition: intsafe.h:52
#define FAILED(hr)
Definition: intsafe.h:51
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
const char * var
Definition: shader.c:5879
_In_ LPWSTR _In_ DWORD _In_ LPCVOID pvData
Definition: netsh.h:116
#define V_ARRAY(A)
Definition: oleauto.h:222
#define V_VT(A)
Definition: oleauto.h:211
uint32_t ULONG
Definition: typedefs.h:59
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
Definition: variant.c:626
unsigned char BYTE
Definition: xxhash.c:193

Referenced by property_bag_Read(), and write_filter_data().

◆ dmo_moniker_create()

struct moniker * dmo_moniker_create ( const GUID  class,
const GUID  clsid 
)

Definition at line 834 of file mediacatenum.c.

835{
836 struct moniker *object;
837
838 if (!(object = calloc(1, sizeof(*object))))
839 return NULL;
840
841 object->IMoniker_iface.lpVtbl = &IMoniker_Vtbl;
842 object->IPropertyBag_iface.lpVtbl = &IPropertyBag_Vtbl;
843 object->ref = 1;
844 object->type = DEVICE_DMO;
845 object->class = class;
846 object->clsid = clsid;
847
848 return object;
849}
const CLSID * clsid
Definition: msctf.cpp:50

Referenced by devenum_parser_ParseDisplayName(), and get_dmo_moniker().

◆ enum_moniker_create()

HRESULT enum_moniker_create ( REFCLSID  class,
IEnumMoniker **  enum_mon 
)

Definition at line 1054 of file mediacatenum.c.

1055{
1057 WCHAR buffer[78];
1058
1059 if (!(object = calloc(1, sizeof(*object))))
1060 return E_OUTOFMEMORY;
1061
1062 object->IEnumMoniker_iface.lpVtbl = &IEnumMoniker_Vtbl;
1063 object->ref = 1;
1064 object->class = *class;
1065
1066 wcscpy(buffer, L"CLSID\\");
1068 wcscat(buffer, L"\\Instance");
1070 object->sw_key = NULL;
1071
1072 wcscpy(buffer, L"Software\\Microsoft\\ActiveMovie\\devenum\\");
1075 object->cm_key = NULL;
1076
1077 if (IsEqualGUID(class, &CLSID_LegacyAmFilterCategory))
1078 {
1079 if (FAILED(DMOEnum(&DMOCATEGORY_AUDIO_DECODER, 0, 0, NULL, 0, NULL, &object->dmo_enum)))
1080 object->dmo_enum = NULL;
1081 if (FAILED(DMOEnum(&DMOCATEGORY_VIDEO_DECODER, 0, 0, NULL, 0, NULL, &object->dmo_enum2)))
1082 object->dmo_enum2 = NULL;
1083 }
1084 else
1085 {
1086 if (FAILED(DMOEnum(class, 0, 0, NULL, 0, NULL, &object->dmo_enum)))
1087 object->dmo_enum = NULL;
1088 }
1089
1090 *out = &object->IEnumMoniker_iface;
1091
1092 return S_OK;
1093}
#define CHARS_IN_GUID
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3333
INT WINAPI StringFromGUID2(REFGUID guid, LPOLESTR str, INT cmax)
Definition: combase.c:1525
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
Definition: wcs.c:2988
HRESULT WINAPI DMOEnum(REFGUID category, DWORD flags, DWORD cInTypes, const DMO_PARTIAL_MEDIATYPE *pInTypes, DWORD cOutTypes, const DMO_PARTIAL_MEDIATYPE *pOutTypes, IEnumDMO **ppEnum)
Definition: dmoreg.c:674
#define L(x)
Definition: resources.c:13
GLuint buffer
Definition: glext.h:5915
static const IEnumMonikerVtbl IEnumMoniker_Vtbl
#define KEY_ENUMERATE_SUB_KEYS
Definition: nt_native.h:1022
short WCHAR
Definition: pedump.c:58
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
wcscat
wcscpy
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383
#define HKEY_CURRENT_USER
Definition: winreg.h:11
#define HKEY_CLASSES_ROOT
Definition: winreg.h:10

Referenced by devenum_factory_CreateClassEnumerator().

◆ filter_moniker_create()

struct moniker * filter_moniker_create ( const GUID *  class,
const WCHAR *  name 
)

Definition at line 796 of file mediacatenum.c.

797{
798 struct moniker *object;
799
800 if (!(object = calloc(1, sizeof(*object))))
801 return NULL;
802
803 object->IMoniker_iface.lpVtbl = &IMoniker_Vtbl;
804 object->IPropertyBag_iface.lpVtbl = &IPropertyBag_Vtbl;
805 object->ref = 1;
806 object->type = DEVICE_FILTER;
807 if (class)
808 object->class = *class;
809 object->has_class = !!class;
810 object->name = wcsdup(name);
811
812 return object;
813}

Referenced by devenum_parser_ParseDisplayName(), and enum_moniker_Next().

Variable Documentation

◆ devenum_factory

ICreateDevEnum devenum_factory
extern

Definition at line 834 of file createdevenum.c.

◆ devenum_parser

IParseDisplayName devenum_parser
extern

Definition at line 152 of file parsedisplayname.c.