35 #include "wine/unicode.h" 43 static const WCHAR wcsOutputPinName[] = {
'o',
'u',
't',
'p',
'u',
't',
' ',
'p',
'i',
'n',0};
88 return pTransform->
pFuncsTable->pfnCheckInputType(pTransform, pmt);
108 if (
This->end_of_stream ||
This->flushing)
116 hr = pTransform->
pFuncsTable->pfnReceive(pTransform, pInSample);
128 TRACE(
"%p\n", iface);
130 if (
IsEqualIID(&pmt->majortype, &outpmt->majortype)
139 return pTransformFilter->
pFuncsTable->pfnDecideBufferSize(pTransformFilter, pAlloc, ppropInputRequest);
161 IPin_AddRef(
This->ppPins[
pos]);
169 return (
This->npins+1);
213 pTransformFilter->
npins = 2;
233 ERR(
"Cannot create output pin (%x)\n",
hr);
248 IUnknown_QueryInterface(pTransformFilter->
seekthru_unk, &IID_ISeekingPassThru, (
void**)&passthru);
249 ISeekingPassThru_Init(passthru,
FALSE, pTransformFilter->
ppPins[0]);
250 ISeekingPassThru_Release(passthru);
267 *ppTransformFilter =
NULL;
302 return IUnknown_QueryInterface(
This->seekthru_unk,
riid,
ppv);
318 TRACE(
"(%p/%p)->() Release from %d\n",
This, iface, refCount + 1);
324 for (
i = 0;
i <
This->npins;
i++)
330 IPin_Disconnect(pConnectedTo);
331 IPin_Release(pConnectedTo);
333 IPin_Disconnect(
This->ppPins[
i]);
335 IPin_Release(
This->ppPins[
i]);
340 TRACE(
"Destroying transform filter\n");
341 This->csReceive.DebugInfo->Spare[0] = 0;
345 IUnknown_Release(
This->seekthru_unk);
363 This->filter.state = State_Stopped;
364 if (
This->pFuncsTable->pfnStopStreaming)
365 hr =
This->pFuncsTable->pfnStopStreaming(
This);
383 if (
This->filter.state == State_Stopped)
384 hr = IBaseFilter_Run(iface, -1);
389 This->filter.state = State_Paused;
405 if (
This->filter.state == State_Stopped)
408 if (
This->pFuncsTable->pfnStartStreaming)
409 hr =
This->pFuncsTable->pfnStartStreaming(
This);
416 This->filter.rtStreamStart = tStart;
417 This->filter.state = State_Running;
448 TRACE(
"(%p)->()\n", iface);
455 hr = IPin_ConnectedTo(pTransform->
ppPins[1], &ppin);
458 hr = IPin_EndOfStream(ppin);
473 TRACE(
"(%p)->(%p, %p)\n", iface, pReceivePin, pmt);
498 TRACE(
"(%p)->()\n", iface);
513 TRACE(
"(%p)->()\n", iface);
531 TRACE(
"(%p)->()\n", iface);
554 hr = pTransform->
pFuncsTable->pfnNewSegment(pTransform, tStart, tStop, dRate);
609 if (
This->pFuncsTable->pfnNotify)
610 return This->pFuncsTable->pfnNotify(
This, sender, qm);
#define VFW_S_NO_MORE_ITEMS
HRESULT WINAPI BasePinImpl_GetMediaType(BasePin *This, int iPosition, AM_MEDIA_TYPE *pmt)
HRESULT WINAPI BaseInputPinImpl_QueryInterface(IPin *iface, REFIID riid, LPVOID *ppv)
VOID WINAPI CoTaskMemFree(LPVOID ptr)
HRESULT WINAPI QualityControlImpl_QueryInterface(IQualityControl *iface, REFIID riid, void **ppv)
HRESULT WINAPI BaseInputPinImpl_Connect(IPin *iface, IPin *pConnector, const AM_MEDIA_TYPE *pmt)
HRESULT WINAPI BaseInputPinImpl_EndFlush(IPin *iface)
HRESULT WINAPI BaseOutputPinImpl_Active(BaseOutputPin *This)
void QualityControlImpl_Destroy(QualityControlImpl *This)
HRESULT WINAPI BaseOutputPinImpl_EndOfStream(IPin *iface)
ULONG WINAPI QualityControlImpl_Release(IQualityControl *iface)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
HRESULT WINAPI BaseOutputPinImpl_QueryInterface(IPin *iface, REFIID riid, LPVOID *ppv)
HRESULT WINAPI BaseOutputPinImpl_BreakConnect(BaseOutputPin *This)
HRESULT QualityControlImpl_Create(IPin *input, IBaseFilter *self, QualityControlImpl **ppv)
HRESULT WINAPI QualityControlImpl_SetSink(IQualityControl *iface, IQualityControl *tonotify)
ULONG WINAPI BaseFilterImpl_Release(IBaseFilter *iface)
static void FreeMediaType(AM_MEDIA_TYPE *pMediaType)
HRESULT WINAPI BaseOutputPinImpl_EndFlush(IPin *iface)
HRESULT WINAPI BasePinImpl_Disconnect(IPin *iface)
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
ULONG WINAPI QualityControlImpl_AddRef(IQualityControl *iface)
HRESULT WINAPI BasePinImpl_QueryDirection(IPin *iface, PIN_DIRECTION *pPinDir)
HRESULT WINAPI BasePinImpl_ConnectedTo(IPin *iface, IPin **ppPin)
HRESULT WINAPI BasePinImpl_EnumMediaTypes(IPin *iface, IEnumMediaTypes **ppEnum)
ULONG WINAPI BaseInputPinImpl_Release(IPin *iface)
HRESULT WINAPI BaseFilterImpl_QueryInterface(IBaseFilter *iface, REFIID riid, LPVOID *ppv)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
HRESULT BaseInputPin_Construct(const IPinVtbl *InputPin_Vtbl, LONG inputpin_size, const PIN_INFO *pPinInfo, const BaseInputPinFuncTable *pBaseInputFuncsTable, LPCRITICAL_SECTION pCritSec, IMemAllocator *, IPin **ppPin)
HRESULT WINAPI BaseOutputPinImpl_DecideAllocator(BaseOutputPin *This, IMemInputPin *pPin, IMemAllocator **pAlloc)
HRESULT WINAPI BaseFilter_Destroy(BaseFilter *This)
HRESULT WINAPI BasePinImpl_NewSegment(IPin *iface, REFERENCE_TIME tStart, REFERENCE_TIME tStop, double dRate)
HRESULT WINAPI BaseInputPinImpl_BeginFlush(IPin *iface)
HRESULT WINAPI BaseOutputPinImpl_BeginFlush(IPin *iface)
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
ULONG WINAPI BaseOutputPinImpl_Release(IPin *iface)
static HRESULT CopyMediaType(AM_MEDIA_TYPE *pDest, const AM_MEDIA_TYPE *pSrc)
PCRITICAL_SECTION_DEBUG DebugInfo
HRESULT WINAPI BasePinImpl_QueryPinInfo(IPin *iface, PIN_INFO *pInfo)
#define InterlockedDecrement
IBaseFilter IBaseFilter_iface
HRESULT WINAPI BasePinImpl_QueryId(IPin *iface, LPWSTR *Id)
CRITICAL_SECTION csFilter
HRESULT WINAPI BasePinImpl_QueryInternalConnections(IPin *iface, IPin **apPin, ULONG *cPin)
HRESULT WINAPI BaseOutputPinImpl_Connect(IPin *iface, IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
HRESULT WINAPI BaseOutputPinImpl_Inactive(BaseOutputPin *This)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
HRESULT WINAPI BaseOutputPinImpl_ReceiveConnection(IPin *iface, IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
HRESULT WINAPI BaseOutputPinImpl_AttemptConnection(BasePin *This, IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
HRESULT WINAPI BaseInputPinImpl_QueryAccept(IPin *iface, const AM_MEDIA_TYPE *pmt)
HRESULT WINAPI BaseInputPinImpl_ReceiveConnection(IPin *iface, IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
HRESULT WINAPI BaseOutputPin_Construct(const IPinVtbl *OutputPin_Vtbl, LONG outputpin_size, const PIN_INFO *pPinInfo, const BaseOutputPinFuncTable *pBaseOutputFuncsTable, LPCRITICAL_SECTION pCritSec, IPin **ppPin)
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
HRESULT WINAPI BaseFilter_Init(BaseFilter *This, const IBaseFilterVtbl *Vtbl, const CLSID *pClsid, DWORD_PTR DebugInfo, const BaseFilterFuncTable *pBaseFuncsTable)
ULONG WINAPI BasePinImpl_AddRef(IPin *iface)
HRESULT WINAPI BaseInputPinImpl_NewSegment(IPin *iface, REFERENCE_TIME tStart, REFERENCE_TIME tStop, double dRate)
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
HRESULT WINAPI QualityControlImpl_Notify(IQualityControl *iface, IBaseFilter *sender, Quality qm)
#define VFW_E_WRONG_STATE
HRESULT WINAPI BasePinImpl_ConnectionMediaType(IPin *iface, AM_MEDIA_TYPE *pmt)
LONG WINAPI BasePinImpl_GetMediaTypeVersion(BasePin *This)
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
HRESULT WINAPI BaseOutputPinImpl_Disconnect(IPin *iface)
#define IsEqualIID(riid1, riid2)
DWORD_PTR Spare[8/sizeof(DWORD_PTR)]