118 *ret_iface = &
This->IUnknown_inner;
121 *ret_iface = &
This->filter.IBaseFilter_iface;
123 *ret_iface = &
This->IPersistPropertyBag_iface;
125 FIXME(
"IAMFilterMiscFlags not supported yet!\n");
127 FIXME(
"ISpecifyPropertyPages not supported yet!\n");
129 FIXME(
"IAMVfwCaptureDialogs not supported yet!\n");
131 *ret_iface = &
This->IAMStreamConfig_iface;
133 *ret_iface = &
This->IAMVideoProcAmp_iface;
140 IUnknown_AddRef((
IUnknown*)*ret_iface);
165 TRACE(
"destroying everything\n");
168 if (
This->filter.state != State_Stopped)
172 IPin_ConnectedTo(
This->pOutputPin, &conn);
175 IPin_Disconnect(conn);
176 IPin_Disconnect(
This->pOutputPin);
179 IPin_Release(
This->pOutputPin);
202 IPin_AddRef(
This->pOutputPin);
203 return This->pOutputPin;
221 TRACE(
"%p - %p\n", pUnkOuter, phr);
248 TRACE(
"-- created at %p\n", pVfwCapture);
259 return IUnknown_QueryInterface(
This->outer_unk,
riid, ret_iface);
266 return IUnknown_AddRef(
This->outer_unk);
273 return IUnknown_Release(
This->outer_unk);
333 return IUnknown_QueryInterface(
This->outer_unk,
riid, ret_iface);
340 return IUnknown_AddRef(
This->outer_unk);
347 return IUnknown_Release(
This->outer_unk);
357 TRACE(
"(%p): %p->%p\n", iface, pmt, pmt ? pmt->pbFormat :
NULL);
359 if (
This->filter.state != State_Stopped)
361 TRACE(
"Returning not stopped error\n");
367 TRACE(
"pmt is NULL\n");
376 hr = IPin_QueryAccept(
pin->pConnectedTo, pmt);
377 TRACE(
"Would accept: %d\n",
hr);
385 hr = IFilterGraph_Reconnect(
This->filter.filterInfo.pGraph,
This->pOutputPin);
387 TRACE(
"Reconnection completed, with new media format..\n");
398 TRACE(
"%p -> (%p)\n", iface, pmt);
406 FIXME(
"%p: %p %p - stub, intentional\n", iface, piCount, piSize);
415 FIXME(
"%p: %d %p %p - stub, intentional\n", iface, iIndex, pmt, pSCC);
435 return IUnknown_QueryInterface(
This->outer_unk,
riid, ret_iface);
442 return IUnknown_AddRef(
This->outer_unk);
449 return IUnknown_Release(
This->outer_unk);
459 pSteppingDelta, pDefault, pCapsFlags );
494 return IUnknown_QueryInterface(
This->outer_unk,
riid, ret_iface);
501 return IUnknown_AddRef(
This->outer_unk);
508 return IUnknown_Release(
This->outer_unk);
537 const OLECHAR VFWIndex[] = {
'V',
'F',
'W',
'I',
'n',
'd',
'e',
'x',0};
539 TRACE(
"%p/%p-> (%p, %p)\n", iface,
This, pPropBag, pErrorLog);
542 hr = IPropertyBag_Read(pPropBag, VFWIndex, &
var, pErrorLog);
549 var.__VARIANT_NAME_1.__VARIANT_NAME_2.__VARIANT_NAME_3.ulVal );
550 if (
This->driver_info)
566 BOOL fClearDirty,
BOOL fSaveAllProperties )
594 return IPin_QueryInterface(&
This->pin.pin.IPin_iface,
riid, ret_iface);
601 return IPin_AddRef(&
This->pin.pin.IPin_iface);
608 return IPin_Release(&
This->pin.pin.IPin_iface);
616 FIXME(
"%p: stub\n", iface);
629 if (!
IsEqualIID(guidPropSet, &ROPSETID_Pin))
631 if (pPropData ==
NULL && pcbReturned ==
NULL)
634 *pcbReturned =
sizeof(
GUID);
635 if (pPropData ==
NULL)
637 if (cbPropData <
sizeof(
GUID))
640 *pGuid = PIN_CATEGORY_CAPTURE;
641 FIXME(
"() Not adding a pin with PIN_CATEGORY_PREVIEW\n");
649 FIXME(
"%p: stub\n", iface);
701 ppropInputRequest->
cbBuffer = 230400;
702 if (!ppropInputRequest->
cbAlign)
703 ppropInputRequest->
cbAlign = 1;
705 return IMemAllocator_SetProperties(pAlloc, ppropInputRequest, &actual);
731 piOutput.pFilter = pBaseFilter;
761 *
ppv = &
This->IKsPropertySet_iface;
781 TRACE(
"() -> new refcount: %u\n", refCount);
810 TRACE(
"(%p)->(%p, %p)\n", iface, apPin, cPin);
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
HRESULT qcap_driver_set_prop(Capture *, VideoProcAmpProperty, LONG, LONG) DECLSPEC_HIDDEN
HRESULT qcap_driver_get_format(const Capture *, AM_MEDIA_TYPE **) DECLSPEC_HIDDEN
HRESULT qcap_driver_pause(Capture *, FILTER_STATE *) DECLSPEC_HIDDEN
HRESULT qcap_driver_set_format(Capture *, AM_MEDIA_TYPE *) DECLSPEC_HIDDEN
HRESULT qcap_driver_destroy(Capture *) DECLSPEC_HIDDEN
HRESULT qcap_driver_get_prop(Capture *, VideoProcAmpProperty, LONG *, LONG *) DECLSPEC_HIDDEN
HRESULT qcap_driver_stop(Capture *, FILTER_STATE *) DECLSPEC_HIDDEN
HRESULT qcap_driver_get_prop_range(Capture *, VideoProcAmpProperty, LONG *, LONG *, LONG *, LONG *, LONG *) DECLSPEC_HIDDEN
HRESULT qcap_driver_run(Capture *, FILTER_STATE *) DECLSPEC_HIDDEN
Capture * qcap_driver_init(IPin *, USHORT) DECLSPEC_HIDDEN
const GUID IID_IKsPropertySet
const GUID IID_IBaseFilter
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
static const WCHAR wszOutputPinName[]
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
VOID WINAPI CoTaskMemFree(LPVOID ptr)
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
static void DeleteMediaType(AM_MEDIA_TYPE *pMediaType)
static HRESULT CopyMediaType(AM_MEDIA_TYPE *pDest, const AM_MEDIA_TYPE *pSrc)
const GUID IID_ISpecifyPropertyPages
const GUID IID_IPersistPropertyBag
#define IsEqualIID(riid1, riid2)
DWORD ObjectRefCount(BOOL increment)
HRESULT WINAPI BasePinImpl_ConnectionMediaType(IPin *iface, AM_MEDIA_TYPE *pmt)
HRESULT WINAPI BaseFilterImpl_SetSyncSource(IBaseFilter *iface, IReferenceClock *pClock)
HRESULT WINAPI BaseOutputPinImpl_EndFlush(IPin *iface)
HRESULT WINAPI BasePinImpl_ConnectedTo(IPin *iface, IPin **ppPin)
HRESULT WINAPI BasePinImpl_NewSegment(IPin *iface, REFERENCE_TIME tStart, REFERENCE_TIME tStop, double dRate)
HRESULT WINAPI BaseFilterImpl_GetClassID(IBaseFilter *iface, CLSID *pClsid)
HRESULT WINAPI BaseFilterImpl_QueryFilterInfo(IBaseFilter *iface, FILTER_INFO *pInfo)
HRESULT WINAPI BasePinImpl_QueryId(IPin *iface, LPWSTR *Id)
HRESULT WINAPI BaseOutputPinImpl_AttemptConnection(BasePin *This, IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
HRESULT WINAPI BasePinImpl_QueryPinInfo(IPin *iface, PIN_INFO *pInfo)
HRESULT WINAPI BaseOutputPinImpl_EndOfStream(IPin *iface)
ULONG WINAPI BaseFilterImpl_AddRef(IBaseFilter *iface)
HRESULT WINAPI BaseFilter_Destroy(BaseFilter *This)
HRESULT WINAPI BaseOutputPinImpl_BeginFlush(IPin *iface)
HRESULT WINAPI BaseOutputPinImpl_DecideAllocator(BaseOutputPin *This, IMemInputPin *pPin, IMemAllocator **pAlloc)
HRESULT WINAPI BaseOutputPin_Destroy(BaseOutputPin *This)
HRESULT WINAPI BaseFilterImpl_GetState(IBaseFilter *iface, DWORD dwMilliSecsTimeout, FILTER_STATE *pState)
HRESULT WINAPI BaseOutputPin_Construct(const IPinVtbl *OutputPin_Vtbl, LONG outputpin_size, const PIN_INFO *pPinInfo, const BaseOutputPinFuncTable *pBaseOutputFuncsTable, LPCRITICAL_SECTION pCritSec, IPin **ppPin)
HRESULT WINAPI BasePinImpl_EnumMediaTypes(IPin *iface, IEnumMediaTypes **ppEnum)
HRESULT WINAPI BaseFilterImpl_JoinFilterGraph(IBaseFilter *iface, IFilterGraph *pGraph, LPCWSTR pName)
HRESULT WINAPI BaseOutputPinImpl_BreakConnect(BaseOutputPin *This)
HRESULT WINAPI BaseOutputPinImpl_Connect(IPin *iface, IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
HRESULT WINAPI BaseFilterImpl_QueryVendorInfo(IBaseFilter *iface, LPWSTR *pVendorInfo)
HRESULT WINAPI BaseFilterImpl_GetSyncSource(IBaseFilter *iface, IReferenceClock **ppClock)
HRESULT WINAPI BasePinImpl_QueryDirection(IPin *iface, PIN_DIRECTION *pPinDir)
HRESULT WINAPI BasePinImpl_QueryAccept(IPin *iface, const AM_MEDIA_TYPE *pmt)
HRESULT WINAPI BaseOutputPinImpl_ReceiveConnection(IPin *iface, IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
HRESULT WINAPI BaseOutputPinImpl_Disconnect(IPin *iface)
HRESULT WINAPI BaseFilterImpl_EnumPins(IBaseFilter *iface, IEnumPins **ppEnum)
HRESULT WINAPI BaseFilter_Init(BaseFilter *This, const IBaseFilterVtbl *Vtbl, const CLSID *pClsid, DWORD_PTR DebugInfo, const BaseFilterFuncTable *pBaseFuncsTable)
ULONG WINAPI BasePinImpl_AddRef(IPin *iface)
IBaseFilter IBaseFilter_iface
CRITICAL_SECTION csFilter
IAMStreamConfig IAMStreamConfig_iface
IAMVideoProcAmp IAMVideoProcAmp_iface
IPersistPropertyBag IPersistPropertyBag_iface
IKsPropertySet IKsPropertySet_iface
#define CONTAINING_RECORD(address, type, field)
static ULONG WINAPI VfwCapture_Release(IBaseFilter *iface)
static const IKsPropertySetVtbl IKsPropertySet_VTable
static ULONG WINAPI AMVideoProcAmp_AddRef(IAMVideoProcAmp *iface)
static HRESULT WINAPI PPB_InitNew(IPersistPropertyBag *iface)
static VfwPinImpl * impl_from_IKsPropertySet(IKsPropertySet *iface)
static VfwCapture * impl_from_IUnknown(IUnknown *iface)
static IPin *WINAPI VfwCapture_GetPin(BaseFilter *iface, int pos)
static HRESULT WINAPI VfwPin_DecideBufferSize(BaseOutputPin *iface, IMemAllocator *pAlloc, ALLOCATOR_PROPERTIES *ppropInputRequest)
static HRESULT WINAPI VfwPin_EnumMediaTypes(IPin *iface, IEnumMediaTypes **ppEnum)
static HRESULT WINAPI PPB_GetClassID(IPersistPropertyBag *iface, CLSID *pClassID)
static HRESULT WINAPI PPB_QueryInterface(IPersistPropertyBag *iface, REFIID riid, void **ret_iface)
static const IPersistPropertyBagVtbl IPersistPropertyBag_VTable
IUnknown *WINAPI QCAP_createVFWCaptureFilter(IUnknown *pUnkOuter, HRESULT *phr)
static HRESULT WINAPI PPB_Load(IPersistPropertyBag *iface, IPropertyBag *pPropBag, IErrorLog *pErrorLog)
static const IPinVtbl VfwPin_Vtbl
static HRESULT WINAPI KSP_Set(IKsPropertySet *iface, REFGUID guidPropSet, DWORD dwPropID, LPVOID pInstanceData, DWORD cbInstanceData, LPVOID pPropData, DWORD cbPropData)
static ULONG WINAPI AMStreamConfig_AddRef(IAMStreamConfig *iface)
static LONG WINAPI VfwCapture_GetPinCount(BaseFilter *iface)
static HRESULT WINAPI AMVideoProcAmp_Set(IAMVideoProcAmp *iface, LONG Property, LONG lValue, LONG Flags)
static HRESULT WINAPI VfwPin_QueryInterface(IPin *iface, REFIID riid, LPVOID *ppv)
static HRESULT WINAPI VfwPin_QueryInternalConnections(IPin *iface, IPin **apPin, ULONG *cPin)
static HRESULT WINAPI VfwCapture_QueryInterface(IBaseFilter *iface, REFIID riid, void **ret_iface)
static HRESULT WINAPI VfwCapture_Pause(IBaseFilter *iface)
static HRESULT WINAPI VfwCapture_Stop(IBaseFilter *iface)
static const BaseOutputPinFuncTable output_BaseOutputFuncTable
static HRESULT WINAPI AMVideoProcAmp_GetRange(IAMVideoProcAmp *iface, LONG Property, LONG *pMin, LONG *pMax, LONG *pSteppingDelta, LONG *pDefault, LONG *pCapsFlags)
static HRESULT WINAPI AMStreamConfig_GetNumberOfCapabilities(IAMStreamConfig *iface, int *piCount, int *piSize)
static HRESULT WINAPI AMStreamConfig_GetStreamCaps(IAMStreamConfig *iface, int iIndex, AM_MEDIA_TYPE **pmt, BYTE *pSCC)
static HRESULT WINAPI AMStreamConfig_SetFormat(IAMStreamConfig *iface, AM_MEDIA_TYPE *pmt)
static ULONG WINAPI AMVideoProcAmp_Release(IAMVideoProcAmp *iface)
static HRESULT WINAPI KSP_Get(IKsPropertySet *iface, REFGUID guidPropSet, DWORD dwPropID, LPVOID pInstanceData, DWORD cbInstanceData, LPVOID pPropData, DWORD cbPropData, DWORD *pcbReturned)
static ULONG WINAPI unknown_inner_Release(IUnknown *iface)
static VfwCapture * impl_from_IPersistPropertyBag(IPersistPropertyBag *iface)
static ULONG WINAPI PPB_AddRef(IPersistPropertyBag *iface)
static ULONG WINAPI AMStreamConfig_Release(IAMStreamConfig *iface)
static VfwCapture * impl_from_IAMVideoProcAmp(IAMVideoProcAmp *iface)
static VfwPinImpl * impl_from_IPin(IPin *iface)
static const IAMStreamConfigVtbl IAMStreamConfig_VTable
static ULONG WINAPI PPB_Release(IPersistPropertyBag *iface)
static const IBaseFilterVtbl VfwCapture_Vtbl
static HRESULT WINAPI AMStreamConfig_GetFormat(IAMStreamConfig *iface, AM_MEDIA_TYPE **pmt)
static ULONG WINAPI KSP_Release(IKsPropertySet *iface)
static const IUnknownVtbl unknown_inner_vtbl
static const BaseFilterFuncTable BaseFuncTable
static HRESULT WINAPI AMStreamConfig_QueryInterface(IAMStreamConfig *iface, REFIID riid, void **ret_iface)
static HRESULT WINAPI AMVideoProcAmp_QueryInterface(IAMVideoProcAmp *iface, REFIID riid, void **ret_iface)
static HRESULT VfwPin_Construct(IBaseFilter *, LPCRITICAL_SECTION, IPin **)
static HRESULT WINAPI VfwCapture_Run(IBaseFilter *iface, REFERENCE_TIME tStart)
static ULONG WINAPI VfwCapture_AddRef(IBaseFilter *iface)
static HRESULT WINAPI VfwCapture_FindPin(IBaseFilter *iface, LPCWSTR Id, IPin **ppPin)
static ULONG WINAPI unknown_inner_AddRef(IUnknown *iface)
static HRESULT WINAPI PPB_Save(IPersistPropertyBag *iface, IPropertyBag *pPropBag, BOOL fClearDirty, BOOL fSaveAllProperties)
static VfwCapture * impl_from_IBaseFilter(IBaseFilter *iface)
static VfwPinImpl * impl_from_BasePin(BasePin *pin)
static ULONG WINAPI VfwPin_Release(IPin *iface)
static LONG WINAPI VfwPin_GetMediaTypeVersion(BasePin *iface)
static HRESULT WINAPI KSP_QueryInterface(IKsPropertySet *iface, REFIID riid, void **ret_iface)
static const IAMVideoProcAmpVtbl IAMVideoProcAmp_VTable
static HRESULT WINAPI AMVideoProcAmp_Get(IAMVideoProcAmp *iface, LONG Property, LONG *lValue, LONG *Flags)
static HRESULT WINAPI unknown_inner_QueryInterface(IUnknown *iface, REFIID riid, void **ret_iface)
static VfwCapture * impl_from_IAMStreamConfig(IAMStreamConfig *iface)
static VfwCapture * impl_from_BaseFilter(BaseFilter *iface)
static ULONG WINAPI KSP_AddRef(IKsPropertySet *iface)
static HRESULT WINAPI KSP_QuerySupported(IKsPropertySet *iface, REFGUID guidPropSet, DWORD dwPropID, DWORD *pTypeSupport)
static HRESULT WINAPI VfwPin_GetMediaType(BasePin *pin, int iPosition, AM_MEDIA_TYPE *pmt)
#define VFW_E_INVALIDMEDIATYPE
#define E_PROP_SET_UNSUPPORTED
#define VFW_E_NOT_STOPPED
#define VFW_S_NO_MORE_ITEMS
_Must_inspect_result_ _In_ ULONG Flags