67#define ALIGNDOWN(value,boundary) ((value)/(boundary)*(boundary))
68#define ALIGNUP(value,boundary) (ALIGNDOWN((value)+(boundary)-1, (boundary)))
HRESULT PullPin_Construct(const IPinVtbl *PullPin_Vtbl, const PIN_INFO *pPinInfo, SAMPLEPROC_PULL pSampleProc, LPVOID pUserData, QUERYACCEPTPROC pQueryAccept, CLEANUPPROC pCleanUp, REQUESTPROC pCustomRequest, STOPPROCESSPROC pDone, LPCRITICAL_SECTION pCritSec, IPin **ppPin)
HRESULT(* QUERYACCEPTPROC)(LPVOID userdata, const AM_MEDIA_TYPE *pmt)
HRESULT PullPin_StartProcessing(PullPin *This)
HRESULT WINAPI PullPin_ReceiveConnection(IPin *iface, IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
HRESULT WINAPI PullPin_EndFlush(IPin *iface)
HRESULT WINAPI PullPin_QueryAccept(IPin *iface, const AM_MEDIA_TYPE *pmt)
HRESULT WINAPI PullPin_NewSegment(IPin *iface, REFERENCE_TIME tStart, REFERENCE_TIME tStop, double dRate)
HRESULT WINAPI PullPin_QueryInterface(IPin *iface, REFIID riid, LPVOID *ppv)
HRESULT WINAPI PullPin_EndOfStream(IPin *iface)
HRESULT(* STOPPROCESSPROC)(LPVOID userdata)
HRESULT WINAPI PullPin_BeginFlush(IPin *iface)
HRESULT WINAPI PullPin_Disconnect(IPin *iface)
HRESULT PullPin_WaitForStateChange(PullPin *This, DWORD dwMilliseconds)
HRESULT(* PRECONNECTPROC)(IPin *iface, IPin *pConnectPin, ALLOCATOR_PROPERTIES *props)
ULONG WINAPI PullPin_Release(IPin *iface)
HRESULT(* SAMPLEPROC_PULL)(LPVOID userdata, IMediaSample *pSample, DWORD_PTR cookie)
HRESULT(* REQUESTPROC)(LPVOID userdata)
HRESULT PullPin_PauseProcessing(PullPin *This)
HRESULT(* CLEANUPPROC)(LPVOID userdata)
static PullPin * impl_PullPin_from_IPin(IPin *iface)
QUERYACCEPTPROC fnQueryAccept
SAMPLEPROC_PULL fnSampleProc
CRITICAL_SECTION thread_lock
PRECONNECTPROC fnPreConnect
HANDLE hEventStateChanged
REQUESTPROC fnCustomRequest
IMemAllocator * prefAlloc
#define CONTAINING_RECORD(address, type, field)
static const WCHAR props[]