Go to the documentation of this file.
25 { {&IID_IUnknown,0}, {&IID_IBaseFilter,0} })
31 dshowdebug(
"ff_dshow_filter_GetClassID(%p)\n",
this);
37 dshowdebug(
"ff_dshow_filter_Stop(%p)\n",
this);
38 this->
state = State_Stopped;
43 dshowdebug(
"ff_dshow_filter_Pause(%p)\n",
this);
44 this->
state = State_Paused;
49 dshowdebug(
"ff_dshow_filter_Run(%p) %"PRId64
"\n",
this, start);
50 this->
state = State_Running;
56 dshowdebug(
"ff_dshow_filter_GetState(%p)\n",
this);
64 dshowdebug(
"ff_dshow_filter_SetSyncSource(%p)\n",
this);
66 if (this->clock != clock) {
68 IReferenceClock_Release(this->clock);
71 IReferenceClock_AddRef(clock);
78 dshowdebug(
"ff_dshow_filter_GetSyncSource(%p)\n",
this);
83 IReferenceClock_AddRef(this->clock);
91 dshowdebug(
"ff_dshow_filter_EnumPins(%p)\n",
this);
99 *enumpin = (IEnumPins *)
new;
105 dshowdebug(
"ff_dshow_filter_FindPin(%p)\n",
this);
109 if (!wcscmp(
id,
L"In")) {
113 *pin = (IPin *) found;
115 return VFW_E_NOT_FOUND;
121 dshowdebug(
"ff_dshow_filter_QueryFilterInfo(%p)\n",
this);
125 if (this->info.pGraph)
126 IFilterGraph_AddRef(this->info.pGraph);
134 dshowdebug(
"ff_dshow_filter_JoinFilterGraph(%p)\n",
this);
138 wcscpy_s(this->
info.achName,
sizeof(this->info.achName) /
sizeof(
wchar_t),
name);
144 dshowdebug(
"ff_dshow_filter_QueryVendorInfo(%p)\n",
this);
155 IBaseFilterVtbl *vtbl = this->vtbl;
174 this->priv_data = priv_data;
long WINAPI ff_dshow_filter_JoinFilterGraph(DShowFilter *this, IFilterGraph *graph, const wchar_t *name)
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 default minimum maximum flags name is the option name
#define DECLARE_CREATE(prefix, class, setup,...)
DECLARE_QUERYINTERFACE(filter, DShowFilter, { {&IID_IUnknown, 0}, {&IID_IBaseFilter, 0} })
long WINAPI ff_dshow_filter_QueryVendorInfo(DShowFilter *this, wchar_t **info)
unsigned long WINAPI ff_dshow_pin_Release(DShowPin *)
long WINAPI ff_dshow_filter_Pause(DShowFilter *this)
long WINAPI ff_dshow_filter_GetSyncSource(DShowFilter *this, IReferenceClock **clock)
void(* filter)(uint8_t *src, int stride, int qscale)
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
#define DECLARE_ADDREF(prefix, class)
static int ff_dshow_filter_Cleanup(DShowFilter *this)
#define SETVTBL(vtbl, prefix, fn)
long WINAPI ff_dshow_filter_QueryFilterInfo(DShowFilter *this, FILTER_INFO *info)
static void callback(void *priv_data, int index, uint8_t *buf, int buf_size, int64_t time, enum dshowDeviceType devtype)
long WINAPI ff_dshow_filter_FindPin(DShowFilter *this, const wchar_t *id, IPin **pin)
long WINAPI ff_dshow_filter_GetState(DShowFilter *this, DWORD ms, FILTER_STATE *state)
static int64_t start_time
static int ff_dshow_filter_Setup(DShowFilter *this, void *priv_data, void *callback, enum dshowDeviceType type)
#define DECLARE_DESTROY(prefix, class, func)
long WINAPI ff_dshow_filter_GetClassID(DShowFilter *, CLSID *)
DShowEnumPins * ff_dshow_enumpins_Create(DShowPin *pin, DShowFilter *filter)
long WINAPI ff_dshow_filter_SetSyncSource(DShowFilter *this, IReferenceClock *clock)
#define DECLARE_RELEASE(prefix, class)
long WINAPI ff_dshow_filter_EnumPins(DShowFilter *this, IEnumPins **enumpin)
unsigned long WINAPI ff_dshow_pin_AddRef(DShowPin *)
DShowPin * ff_dshow_pin_Create(DShowFilter *filter)
long WINAPI ff_dshow_filter_Stop(DShowFilter *this)
long WINAPI ff_dshow_filter_Run(DShowFilter *this, REFERENCE_TIME start)