Go to the documentation of this file.
25 { {&IID_IUnknown,0}, {&IID_IBaseFilter,0} })
32 dshowdebug(
"libAVFilter_GetClassID(%p)\n",
this);
40 this->
state = State_Stopped;
47 this->
state = State_Paused;
54 this->
state = State_Running;
61 dshowdebug(
"libAVFilter_GetState(%p)\n",
this);
70 dshowdebug(
"libAVFilter_SetSyncSource(%p)\n",
this);
72 if (this->clock != clock) {
74 IReferenceClock_Release(this->clock);
77 IReferenceClock_AddRef(clock);
85 dshowdebug(
"libAVFilter_GetSyncSource(%p)\n",
this);
90 IReferenceClock_AddRef(this->clock);
99 dshowdebug(
"libAVFilter_EnumPins(%p)\n",
this);
107 *enumpin = (IEnumPins *)
new;
114 dshowdebug(
"libAVFilter_FindPin(%p)\n",
this);
118 if (!wcscmp(
id,
L"In")) {
122 *pin = (IPin *) found;
124 return VFW_E_NOT_FOUND;
131 dshowdebug(
"libAVFilter_QueryFilterInfo(%p)\n",
this);
135 if (this->info.pGraph)
136 IFilterGraph_AddRef(this->info.pGraph);
145 dshowdebug(
"libAVFilter_JoinFilterGraph(%p)\n",
this);
149 wcscpy(this->
info.achName, name);
156 dshowdebug(
"libAVFilter_QueryVendorInfo(%p)\n",
this);
167 IBaseFilterVtbl *vtbl = this->vtbl;
186 this->priv_data = priv_data;
long WINAPI libAVFilter_JoinFilterGraph(libAVFilter *this, IFilterGraph *graph, const wchar_t *name)
unsigned long WINAPI libAVPin_AddRef(libAVPin *)
#define DECLARE_RELEASE(class)
DECLARE_QUERYINTERFACE(libAVFilter, { {&IID_IUnknown, 0}, {&IID_IBaseFilter, 0} })
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf type
long WINAPI libAVFilter_GetState(libAVFilter *this, DWORD ms, FILTER_STATE *state)
#define DECLARE_ADDREF(class)
long WINAPI libAVFilter_Stop(libAVFilter *this)
libAVPin * libAVPin_Create(libAVFilter *filter)
#define DECLARE_CREATE(class, setup,...)
long WINAPI libAVFilter_GetSyncSource(libAVFilter *this, IReferenceClock **clock)
static void callback(void *priv_data, int index, uint8_t *buf, int buf_size, int64_t time, enum dshowDeviceType devtype)
unsigned long WINAPI libAVPin_Release(libAVPin *)
long WINAPI libAVFilter_SetSyncSource(libAVFilter *this, IReferenceClock *clock)
long WINAPI libAVFilter_Run(libAVFilter *this, REFERENCE_TIME start)
#define SETVTBL(vtbl, class, fn)
static int libAVFilter_Setup(libAVFilter *this, void *priv_data, void *callback, enum dshowDeviceType type)
long WINAPI libAVFilter_GetClassID(libAVFilter *, CLSID *)
static int64_t start_time
static int libAVFilter_Cleanup(libAVFilter *this)
long WINAPI libAVFilter_Pause(libAVFilter *this)
long WINAPI libAVFilter_EnumPins(libAVFilter *this, IEnumPins **enumpin)
#define DECLARE_DESTROY(class, func)
long WINAPI libAVFilter_FindPin(libAVFilter *this, const wchar_t *id, IPin **pin)
long WINAPI libAVFilter_QueryVendorInfo(libAVFilter *this, wchar_t **info)
libAVEnumPins * libAVEnumPins_Create(libAVPin *pin, libAVFilter *filter)
long WINAPI libAVFilter_QueryFilterInfo(libAVFilter *this, FILTER_INFO *info)