25 { {&IID_IUnknown,0}, {&IID_IBaseFilter,0} })
32 dshowdebug(
"libAVFilter_GetClassID(%p)\n",
this);
40 this->
state = State_Stopped;
47 this->
state = State_Paused;
53 dshowdebug(
"libAVFilter_Run(%p) %"PRId64
"\n",
this, start);
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);
147 this->info.pGraph =
graph;
149 wcscpy(this->info.achName, name);
156 dshowdebug(
"libAVFilter_QueryVendorInfo(%p)\n",
this);
160 *info = wcsdup(
L"libAV");
169 IBaseFilterVtbl *vtbl = this->vtbl;
188 this->priv_data = priv_data;
libAVPin * libAVPin_Create(libAVFilter *filter)
#define DECLARE_DESTROY(class, func)
unsigned long WINAPI libAVPin_Release(libAVPin *)
#define DECLARE_CREATE(class, setup,...)
long WINAPI libAVFilter_GetState(libAVFilter *this, DWORD ms, FILTER_STATE *state)
static int64_t start_time
long WINAPI libAVFilter_SetSyncSource(libAVFilter *this, IReferenceClock *clock)
#define DECLARE_RELEASE(class)
long WINAPI libAVFilter_GetSyncSource(libAVFilter *this, IReferenceClock **clock)
unsigned long WINAPI libAVPin_AddRef(libAVPin *)
long WINAPI libAVFilter_Stop(libAVFilter *this)
static void callback(void *priv_data, int index, uint8_t *buf, int buf_size, int64_t time, enum dshowDeviceType devtype)
static int libAVFilter_Setup(libAVFilter *this, void *priv_data, void *callback, enum dshowDeviceType type)
static int libAVFilter_Cleanup(libAVFilter *this)
long WINAPI libAVFilter_Run(libAVFilter *this, REFERENCE_TIME start)
#define SETVTBL(vtbl, class, fn)
DECLARE_QUERYINTERFACE(libAVFilter,{{&IID_IUnknown, 0},{&IID_IBaseFilter, 0}})
libAVEnumPins * libAVEnumPins_Create(libAVPin *pin, libAVFilter *filter)
long WINAPI libAVFilter_Pause(libAVFilter *this)
long WINAPI libAVFilter_QueryFilterInfo(libAVFilter *this, FILTER_INFO *info)
long WINAPI libAVFilter_EnumPins(libAVFilter *this, IEnumPins **enumpin)
long WINAPI libAVFilter_GetClassID(libAVFilter *, CLSID *)
#define DECLARE_ADDREF(class)
long WINAPI libAVFilter_QueryVendorInfo(libAVFilter *this, wchar_t **info)
long WINAPI libAVFilter_JoinFilterGraph(libAVFilter *this, IFilterGraph *graph, const wchar_t *name)
long WINAPI libAVFilter_FindPin(libAVFilter *this, const wchar_t *id, IPin **pin)