35#include "wine/unicode.h"
43static 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 InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
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
VOID WINAPI CoTaskMemFree(LPVOID ptr)
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
static void FreeMediaType(AM_MEDIA_TYPE *pMediaType)
static HRESULT CopyMediaType(AM_MEDIA_TYPE *pDest, const AM_MEDIA_TYPE *pSrc)
#define IsEqualIID(riid1, riid2)
ULONG WINAPI QualityControlImpl_AddRef(IQualityControl *iface)
HRESULT WINAPI QualityControlImpl_Notify(IQualityControl *iface, IBaseFilter *sender, Quality qm)
void QualityControlImpl_Destroy(QualityControlImpl *This)
HRESULT WINAPI QualityControlImpl_QueryInterface(IQualityControl *iface, REFIID riid, void **ppv)
ULONG WINAPI QualityControlImpl_Release(IQualityControl *iface)
HRESULT QualityControlImpl_Create(IPin *input, IBaseFilter *self, QualityControlImpl **ppv)
HRESULT WINAPI QualityControlImpl_SetSink(IQualityControl *iface, IQualityControl *tonotify)
HRESULT WINAPI BasePinImpl_ConnectionMediaType(IPin *iface, AM_MEDIA_TYPE *pmt)
HRESULT WINAPI BaseInputPinImpl_EndFlush(IPin *iface)
ULONG WINAPI BaseInputPinImpl_Release(IPin *iface)
HRESULT WINAPI BaseInputPinImpl_QueryAccept(IPin *iface, const AM_MEDIA_TYPE *pmt)
HRESULT WINAPI BasePinImpl_QueryInternalConnections(IPin *iface, IPin **apPin, ULONG *cPin)
HRESULT WINAPI BaseOutputPinImpl_EndFlush(IPin *iface)
HRESULT WINAPI BasePinImpl_ConnectedTo(IPin *iface, IPin **ppPin)
HRESULT WINAPI BaseInputPinImpl_NewSegment(IPin *iface, REFERENCE_TIME tStart, REFERENCE_TIME tStop, double dRate)
HRESULT WINAPI BasePinImpl_NewSegment(IPin *iface, REFERENCE_TIME tStart, REFERENCE_TIME tStop, double dRate)
ULONG WINAPI BaseFilterImpl_Release(IBaseFilter *iface)
HRESULT WINAPI BasePinImpl_QueryId(IPin *iface, LPWSTR *Id)
HRESULT WINAPI BaseOutputPinImpl_AttemptConnection(BasePin *This, IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
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 BasePinImpl_QueryPinInfo(IPin *iface, PIN_INFO *pInfo)
HRESULT WINAPI BaseOutputPinImpl_Inactive(BaseOutputPin *This)
HRESULT WINAPI BaseOutputPinImpl_EndOfStream(IPin *iface)
HRESULT WINAPI BaseFilter_Destroy(BaseFilter *This)
HRESULT WINAPI BaseOutputPinImpl_QueryInterface(IPin *iface, REFIID riid, LPVOID *ppv)
HRESULT WINAPI BaseOutputPinImpl_BeginFlush(IPin *iface)
HRESULT WINAPI BaseOutputPinImpl_DecideAllocator(BaseOutputPin *This, IMemInputPin *pPin, IMemAllocator **pAlloc)
HRESULT WINAPI BaseFilterImpl_QueryInterface(IBaseFilter *iface, REFIID riid, LPVOID *ppv)
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 BaseInputPinImpl_QueryInterface(IPin *iface, REFIID riid, LPVOID *ppv)
ULONG WINAPI BaseOutputPinImpl_Release(IPin *iface)
HRESULT WINAPI BasePinImpl_EnumMediaTypes(IPin *iface, IEnumMediaTypes **ppEnum)
HRESULT WINAPI BaseInputPinImpl_BeginFlush(IPin *iface)
LONG WINAPI BasePinImpl_GetMediaTypeVersion(BasePin *This)
HRESULT WINAPI BaseOutputPinImpl_BreakConnect(BaseOutputPin *This)
HRESULT WINAPI BasePinImpl_GetMediaType(BasePin *This, int iPosition, AM_MEDIA_TYPE *pmt)
HRESULT WINAPI BaseOutputPinImpl_Connect(IPin *iface, IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
HRESULT WINAPI BasePinImpl_Disconnect(IPin *iface)
HRESULT WINAPI BasePinImpl_QueryDirection(IPin *iface, PIN_DIRECTION *pPinDir)
HRESULT WINAPI BaseOutputPinImpl_ReceiveConnection(IPin *iface, IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
HRESULT WINAPI BaseInputPinImpl_ReceiveConnection(IPin *iface, IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
HRESULT WINAPI BaseOutputPinImpl_Disconnect(IPin *iface)
HRESULT WINAPI BaseInputPinImpl_Connect(IPin *iface, IPin *pConnector, const AM_MEDIA_TYPE *pmt)
HRESULT WINAPI BaseOutputPinImpl_Active(BaseOutputPin *This)
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
DWORD_PTR Spare[8/sizeof(DWORD_PTR)]
PCRITICAL_SECTION_DEBUG DebugInfo
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
#define CONTAINING_RECORD(address, type, field)
#define VFW_E_WRONG_STATE
#define VFW_S_NO_MORE_ITEMS
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)