ReactOS 0.4.15-dev-8100-g1887773
parser.c File Reference
#include "quartz_private.h"
#include "pin.h"
#include "vfwmsgs.h"
#include "amvideo.h"
#include "wine/unicode.h"
#include "wine/debug.h"
#include <math.h>
#include <assert.h>
#include "parser.h"
Include dependency graph for parser.c:

Go to the source code of this file.

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (quartz)
 
static HRESULT WINAPI Parser_ChangeStart (IMediaSeeking *iface)
 
static HRESULT WINAPI Parser_ChangeStop (IMediaSeeking *iface)
 
static HRESULT WINAPI Parser_ChangeRate (IMediaSeeking *iface)
 
static HRESULT WINAPI Parser_OutputPin_DecideBufferSize (BaseOutputPin *iface, IMemAllocator *pAlloc, ALLOCATOR_PROPERTIES *ppropInputRequest)
 
static HRESULT WINAPI Parser_OutputPin_CheckMediaType (BasePin *pin, const AM_MEDIA_TYPE *pmt)
 
static HRESULT WINAPI Parser_OutputPin_GetMediaType (BasePin *iface, int iPosition, AM_MEDIA_TYPE *pmt)
 
static HRESULT WINAPI Parser_OutputPin_DecideAllocator (BaseOutputPin *This, IMemInputPin *pPin, IMemAllocator **pAlloc)
 
static HRESULT WINAPI Parser_OutputPin_BreakConnect (BaseOutputPin *This)
 
static ParserImplimpl_from_IMediaSeeking (IMediaSeeking *iface)
 
static ParserImplimpl_from_IBaseFilter (IBaseFilter *iface)
 
static ParserImplimpl_from_BaseFilter (BaseFilter *iface)
 
static IPin *WINAPI Parser_GetPin (BaseFilter *iface, int pos)
 
static LONG WINAPI Parser_GetPinCount (BaseFilter *iface)
 
HRESULT Parser_Create (ParserImpl *pParser, const IBaseFilterVtbl *Parser_Vtbl, const CLSID *pClsid, PFN_PROCESS_SAMPLE fnProcessSample, PFN_QUERY_ACCEPT fnQueryAccept, PFN_PRE_CONNECT fnPreConnect, PFN_CLEANUP fnCleanup, PFN_DISCONNECT fnDisconnect, REQUESTPROC fnRequest, STOPPROCESSPROC fnDone, SourceSeeking_ChangeStop stop, SourceSeeking_ChangeStart start, SourceSeeking_ChangeRate rate)
 
HRESULT WINAPI Parser_QueryInterface (IBaseFilter *iface, REFIID riid, LPVOID *ppv)
 
ULONG WINAPI Parser_AddRef (IBaseFilter *iface)
 
void Parser_Destroy (ParserImpl *This)
 
ULONG WINAPI Parser_Release (IBaseFilter *iface)
 
HRESULT WINAPI Parser_GetClassID (IBaseFilter *iface, CLSID *pClsid)
 
HRESULT WINAPI Parser_Stop (IBaseFilter *iface)
 
HRESULT WINAPI Parser_Pause (IBaseFilter *iface)
 
HRESULT WINAPI Parser_Run (IBaseFilter *iface, REFERENCE_TIME tStart)
 
HRESULT WINAPI Parser_GetState (IBaseFilter *iface, DWORD dwMilliSecsTimeout, FILTER_STATE *pState)
 
HRESULT WINAPI Parser_SetSyncSource (IBaseFilter *iface, IReferenceClock *pClock)
 
HRESULT WINAPI Parser_GetSyncSource (IBaseFilter *iface, IReferenceClock **ppClock)
 
HRESULT WINAPI Parser_EnumPins (IBaseFilter *iface, IEnumPins **ppEnum)
 
HRESULT WINAPI Parser_FindPin (IBaseFilter *iface, LPCWSTR Id, IPin **ppPin)
 
HRESULT WINAPI Parser_QueryFilterInfo (IBaseFilter *iface, FILTER_INFO *pInfo)
 
HRESULT WINAPI Parser_JoinFilterGraph (IBaseFilter *iface, IFilterGraph *pGraph, LPCWSTR pName)
 
HRESULT WINAPI Parser_QueryVendorInfo (IBaseFilter *iface, LPWSTR *pVendorInfo)
 
HRESULT Parser_AddPin (ParserImpl *This, const PIN_INFO *piOutput, ALLOCATOR_PROPERTIES *props, const AM_MEDIA_TYPE *amt)
 
static HRESULT Parser_RemoveOutputPins (ParserImpl *This)
 
static HRESULT WINAPI Parser_Seeking_QueryInterface (IMediaSeeking *iface, REFIID riid, LPVOID *ppv)
 
static ULONG WINAPI Parser_Seeking_AddRef (IMediaSeeking *iface)
 
static ULONG WINAPI Parser_Seeking_Release (IMediaSeeking *iface)
 
static HRESULT WINAPI Parser_OutputPin_QueryInterface (IPin *iface, REFIID riid, LPVOID *ppv)
 
static ULONG WINAPI Parser_OutputPin_Release (IPin *iface)
 
static HRESULT WINAPI Parser_OutputPin_Connect (IPin *iface, IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
 
static HRESULT WINAPI Parser_PullPin_QueryInterface (IPin *iface, REFIID riid, LPVOID *ppv)
 
static HRESULT WINAPI Parser_PullPin_Disconnect (IPin *iface)
 
static HRESULT WINAPI Parser_PullPin_ReceiveConnection (IPin *iface, IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
 
static HRESULT WINAPI Parser_PullPin_EnumMediaTypes (IPin *iface, IEnumMediaTypes **ppEnum)
 

Variables

static const WCHAR wcsInputPinName [] = {'i','n','p','u','t',' ','p','i','n',0}
 
static const IMediaSeekingVtbl Parser_Seeking_Vtbl
 
static const IPinVtbl Parser_OutputPin_Vtbl
 
static const IPinVtbl Parser_InputPin_Vtbl
 
static const BaseFilterFuncTable BaseFuncTable
 
static const BaseOutputPinFuncTable output_BaseOutputFuncTable
 

Function Documentation

◆ impl_from_BaseFilter()

static ParserImpl * impl_from_BaseFilter ( BaseFilter iface)
inlinestatic

Definition at line 62 of file parser.c.

63{
64 return CONTAINING_RECORD(iface, ParserImpl, filter);
65}
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
Definition: glext.h:7005
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260

Referenced by Parser_GetPin(), and Parser_GetPinCount().

◆ impl_from_IBaseFilter()

◆ impl_from_IMediaSeeking()

static ParserImpl * impl_from_IMediaSeeking ( IMediaSeeking iface)
inlinestatic

Definition at line 52 of file parser.c.

53{
54 return CONTAINING_RECORD(iface, ParserImpl, sourceSeeking.IMediaSeeking_iface);
55}

Referenced by Parser_Seeking_AddRef(), Parser_Seeking_QueryInterface(), and Parser_Seeking_Release().

◆ Parser_AddPin()

HRESULT Parser_AddPin ( ParserImpl This,
const PIN_INFO piOutput,
ALLOCATOR_PROPERTIES props,
const AM_MEDIA_TYPE amt 
)

Definition at line 446 of file parser.c.

447{
448 IPin ** ppOldPins;
449 HRESULT hr;
450
451 ppOldPins = This->ppPins;
452
453 This->ppPins = CoTaskMemAlloc((This->cStreams + 2) * sizeof(IPin *));
454 memcpy(This->ppPins, ppOldPins, (This->cStreams + 1) * sizeof(IPin *));
455
456 hr = BaseOutputPin_Construct(&Parser_OutputPin_Vtbl, sizeof(Parser_OutputPin), piOutput, &output_BaseOutputFuncTable, &This->filter.csFilter, This->ppPins + (This->cStreams + 1));
457
458 if (SUCCEEDED(hr))
459 {
460 IPin *pPin = This->ppPins[This->cStreams + 1];
462 pin->pmt = CoTaskMemAlloc(sizeof(AM_MEDIA_TYPE));
463 CopyMediaType(pin->pmt, amt);
464 pin->dwSamplesProcessed = 0;
465
466 pin->pin.pin.pinInfo.pFilter = &This->filter.IBaseFilter_iface;
467 pin->allocProps = *props;
468 This->cStreams++;
470 CoTaskMemFree(ppOldPins);
471 }
472 else
473 {
474 CoTaskMemFree(This->ppPins);
475 This->ppPins = ppOldPins;
476 ERR("Failed with error %x\n", hr);
477 }
478
479 return hr;
480}
#define ERR(fmt,...)
Definition: debug.h:113
static const IPinVtbl Parser_OutputPin_Vtbl
Definition: parser.c:40
static const BaseOutputPinFuncTable output_BaseOutputFuncTable
Definition: parser.c:434
static Parser_OutputPin * unsafe_impl_Parser_OutputPin_from_IPin(IPin *iface)
Definition: parser.h:81
VOID WINAPI CoTaskMemFree(LPVOID ptr)
Definition: ifs.c:442
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
Definition: ifs.c:426
Definition: axcore.idl:92
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
static HRESULT CopyMediaType(AM_MEDIA_TYPE *pDest, const AM_MEDIA_TYPE *pSrc)
Definition: filtergraph.c:706
HRESULT hr
Definition: shlfolder.c:183
HRESULT WINAPI BaseOutputPin_Construct(const IPinVtbl *OutputPin_Vtbl, LONG outputpin_size, const PIN_INFO *pPinInfo, const BaseOutputPinFuncTable *pBaseOutputFuncsTable, LPCRITICAL_SECTION pCritSec, IPin **ppPin)
Definition: pin.c:791
VOID WINAPI BaseFilterImpl_IncrementPinVersion(BaseFilter *This)
Definition: filter.c:190
Definition: regsvr.c:104
static const WCHAR props[]
Definition: wbemdisp.c:288

Referenced by AVISplitter_ProcessStreamList(), MPEGSplitter_pre_connect(), and WAVEParser_InputPin_PreConnect().

◆ Parser_AddRef()

ULONG WINAPI Parser_AddRef ( IBaseFilter iface)

Definition at line 171 of file parser.c.

172{
173 return BaseFilterImpl_AddRef(iface);
174}
ULONG WINAPI BaseFilterImpl_AddRef(IBaseFilter *iface)
Definition: filter.c:54

◆ Parser_ChangeRate()

static HRESULT WINAPI Parser_ChangeRate ( IMediaSeeking iface)
static

Definition at line 521 of file parser.c.

522{
523 FIXME("(%p) filter hasn't implemented rate change!\n", iface);
524 return S_OK;
525}
#define FIXME(fmt,...)
Definition: debug.h:114
#define S_OK
Definition: intsafe.h:52

Referenced by Parser_Create().

◆ Parser_ChangeStart()

static HRESULT WINAPI Parser_ChangeStart ( IMediaSeeking iface)
static

Definition at line 509 of file parser.c.

510{
511 FIXME("(%p) filter hasn't implemented start position change!\n", iface);
512 return S_OK;
513}

Referenced by Parser_Create().

◆ Parser_ChangeStop()

static HRESULT WINAPI Parser_ChangeStop ( IMediaSeeking iface)
static

Definition at line 515 of file parser.c.

516{
517 FIXME("(%p) filter hasn't implemented stop position change!\n", iface);
518 return S_OK;
519}

Referenced by Parser_Create().

◆ Parser_Create()

HRESULT Parser_Create ( ParserImpl pParser,
const IBaseFilterVtbl *  Parser_Vtbl,
const CLSID pClsid,
PFN_PROCESS_SAMPLE  fnProcessSample,
PFN_QUERY_ACCEPT  fnQueryAccept,
PFN_PRE_CONNECT  fnPreConnect,
PFN_CLEANUP  fnCleanup,
PFN_DISCONNECT  fnDisconnect,
REQUESTPROC  fnRequest,
STOPPROCESSPROC  fnDone,
SourceSeeking_ChangeStop  stop,
SourceSeeking_ChangeStart  start,
SourceSeeking_ChangeRate  rate 
)

Definition at line 96 of file parser.c.

97{
98 HRESULT hr;
99 PIN_INFO piInput;
100
101 /* pTransformFilter is already allocated */
102 BaseFilter_Init(&pParser->filter, Parser_Vtbl, pClsid, (DWORD_PTR)(__FILE__ ": ParserImpl.csFilter"), &BaseFuncTable);
103
104 pParser->fnDisconnect = fnDisconnect;
105
106 pParser->cStreams = 0;
107 pParser->ppPins = CoTaskMemAlloc(1 * sizeof(IPin *));
108
109 /* construct input pin */
110 piInput.dir = PINDIR_INPUT;
111 piInput.pFilter = &pParser->filter.IBaseFilter_iface;
112 lstrcpynW(piInput.achName, wcsInputPinName, sizeof(piInput.achName) / sizeof(piInput.achName[0]));
113
114 if (!start)
116
117 if (!stop)
118 stop = Parser_ChangeStop;
119
120 if (!rate)
122
124
125 hr = PullPin_Construct(&Parser_InputPin_Vtbl, &piInput, fnProcessSample, (LPVOID)pParser, fnQueryAccept, fnCleanup, fnRequest, fnDone, &pParser->filter.csFilter, (IPin **)&pParser->pInputPin);
126
127 if (SUCCEEDED(hr))
128 {
129 pParser->ppPins[0] = &pParser->pInputPin->pin.IPin_iface;
130 pParser->pInputPin->fnPreConnect = fnPreConnect;
131 }
132 else
133 {
134 CoTaskMemFree(pParser->ppPins);
136 CoTaskMemFree(pParser);
137 }
138
139 return hr;
140}
@ PINDIR_INPUT
Definition: axcore.idl:41
static HRESULT WINAPI Parser_ChangeStop(IMediaSeeking *iface)
Definition: parser.c:515
static HRESULT WINAPI Parser_ChangeStart(IMediaSeeking *iface)
Definition: parser.c:509
static const IPinVtbl Parser_InputPin_Vtbl
Definition: parser.c:41
static const BaseFilterFuncTable BaseFuncTable
Definition: parser.c:91
static HRESULT WINAPI Parser_ChangeRate(IMediaSeeking *iface)
Definition: parser.c:521
static const IMediaSeekingVtbl Parser_Seeking_Vtbl
Definition: parser.c:39
static const WCHAR wcsInputPinName[]
Definition: parser.c:38
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)
Definition: pin.c:221
#define lstrcpynW
Definition: compat.h:738
GLuint start
Definition: gl.h:1545
int rate
Definition: pcmconverter.c:97
ULONG WINAPI BaseFilterImpl_Release(IBaseFilter *iface)
Definition: filter.c:64
HRESULT SourceSeeking_Init(SourceSeeking *pSeeking, const IMediaSeekingVtbl *Vtbl, SourceSeeking_ChangeStop fnChangeStop, SourceSeeking_ChangeStart fnChangeStart, SourceSeeking_ChangeRate fnChangeRate, PCRITICAL_SECTION crit_sect)
Definition: seeking.c:40
HRESULT WINAPI BaseFilter_Init(BaseFilter *This, const IBaseFilterVtbl *Vtbl, const CLSID *pClsid, DWORD_PTR DebugInfo, const BaseFilterFuncTable *pBaseFuncsTable)
Definition: filter.c:196
IBaseFilter IBaseFilter_iface
Definition: strmbase.h:163
CRITICAL_SECTION csFilter
Definition: strmbase.h:165
IPin IPin_iface
Definition: strmbase.h:35
ULONG cStreams
Definition: parser.h:40
BaseFilter filter
Definition: parser.h:33
PullPin * pInputPin
Definition: parser.h:38
SourceSeeking sourceSeeking
Definition: parser.h:41
IPin ** ppPins
Definition: parser.h:39
PFN_DISCONNECT fnDisconnect
Definition: parser.h:36
PRECONNECTPROC fnPreConnect
Definition: pin.h:82
BasePin pin
Definition: pin.h:73
uint32_t DWORD_PTR
Definition: typedefs.h:65

Referenced by AVISplitter_create(), MPEGSplitter_create(), and WAVEParser_create().

◆ Parser_Destroy()

void Parser_Destroy ( ParserImpl This)

Definition at line 176 of file parser.c.

177{
179 ULONG pinref;
180 HRESULT hr;
181
182 assert(!This->filter.refCount);
184
185 /* Don't need to clean up output pins, freeing input pin will do that */
186 IPin_ConnectedTo(&This->pInputPin->pin.IPin_iface, &connected);
187 if (connected)
188 {
189 hr = IPin_Disconnect(connected);
190 assert(hr == S_OK);
191 IPin_Release(connected);
192 hr = IPin_Disconnect(&This->pInputPin->pin.IPin_iface);
193 assert(hr == S_OK);
194 }
195 pinref = IPin_Release(&This->pInputPin->pin.IPin_iface);
196 if (pinref)
197 {
198 /* Valgrind could find this, if I kill it here */
199 ERR("pinref should be null, is %u, destroying anyway\n", pinref);
200 assert((LONG)pinref > 0);
201
202 while (pinref)
203 pinref = IPin_Release(&This->pInputPin->pin.IPin_iface);
204 }
205
206 CoTaskMemFree(This->ppPins);
207 BaseFilter_Destroy(&This->filter);
208
209 TRACE("Destroying parser\n");
211}
#define NULL
Definition: types.h:112
HRESULT PullPin_WaitForStateChange(PullPin *This, DWORD dwMilliseconds)
Definition: pin.c:708
#define assert(x)
Definition: debug.h:53
#define INFINITE
Definition: serial.h:102
int connected
Definition: main.c:61
long LONG
Definition: pedump.c:60
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT WINAPI BaseFilter_Destroy(BaseFilter *This)
Definition: filter.c:214
uint32_t ULONG
Definition: typedefs.h:59

Referenced by AVISplitter_Release(), and Parser_Release().

◆ Parser_EnumPins()

HRESULT WINAPI Parser_EnumPins ( IBaseFilter iface,
IEnumPins **  ppEnum 
)

IBaseFilter implementation

Definition at line 404 of file parser.c.

405{
406 return BaseFilterImpl_EnumPins(iface,ppEnum);
407}
HRESULT WINAPI BaseFilterImpl_EnumPins(IBaseFilter *iface, IEnumPins **ppEnum)
Definition: filter.c:135

◆ Parser_FindPin()

HRESULT WINAPI Parser_FindPin ( IBaseFilter iface,
LPCWSTR  Id,
IPin **  ppPin 
)

Definition at line 409 of file parser.c.

410{
412 FIXME("(%p)->(%s,%p)\n", This, debugstr_w(Id), ppPin);
413
414 /* FIXME: critical section */
415
416 return E_NOTIMPL;
417}
DWORD Id
#define E_NOTIMPL
Definition: ddrawi.h:99
static ParserImpl * impl_from_IBaseFilter(IBaseFilter *iface)
Definition: parser.c:57
#define debugstr_w
Definition: kernel32.h:32

◆ Parser_GetClassID()

HRESULT WINAPI Parser_GetClassID ( IBaseFilter iface,
CLSID pClsid 
)

IPersist methods

Definition at line 228 of file parser.c.

229{
231
232 TRACE("%p->(%p)\n", This, pClsid);
233
234 *pClsid = This->filter.clsid;
235
236 return S_OK;
237}

◆ Parser_GetPin()

static IPin *WINAPI Parser_GetPin ( BaseFilter iface,
int  pos 
)
static

Definition at line 68 of file parser.c.

69{
71
72 TRACE("%p->(%x)\n", This, pos);
73
74 /* Input pin also has a pin, hence the > and not >= */
75 if (pos > This->cStreams || pos < 0)
76 return NULL;
77
78 IPin_AddRef(This->ppPins[pos]);
79 return This->ppPins[pos];
80}
static ParserImpl * impl_from_BaseFilter(BaseFilter *iface)
Definition: parser.c:62

◆ Parser_GetPinCount()

static LONG WINAPI Parser_GetPinCount ( BaseFilter iface)
static

Definition at line 82 of file parser.c.

83{
85
86 TRACE("%p->()\n", This);
87
88 return This->cStreams;
89}

◆ Parser_GetState()

HRESULT WINAPI Parser_GetState ( IBaseFilter iface,
DWORD  dwMilliSecsTimeout,
FILTER_STATE *  pState 
)

Definition at line 361 of file parser.c.

362{
364 PullPin *pin = impl_PullPin_from_IPin(This->ppPins[0]);
365 HRESULT hr = S_OK;
366
367 TRACE("%p->(%d, %p)\n", This, dwMilliSecsTimeout, pState);
368
369 EnterCriticalSection(&pin->thread_lock);
370 EnterCriticalSection(&This->filter.csFilter);
371 {
372 *pState = This->filter.state;
373 }
374 LeaveCriticalSection(&This->filter.csFilter);
375
376 if (This->pInputPin && (PullPin_WaitForStateChange(This->pInputPin, dwMilliSecsTimeout) == S_FALSE))
378 LeaveCriticalSection(&pin->thread_lock);
379
380 return hr;
381}
static PullPin * impl_PullPin_from_IPin(IPin *iface)
Definition: pin.h:132
Definition: pin.h:71
#define VFW_S_STATE_INTERMEDIATE
Definition: vfwmsgs.h:21
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
#define S_FALSE
Definition: winerror.h:2357

◆ Parser_GetSyncSource()

HRESULT WINAPI Parser_GetSyncSource ( IBaseFilter iface,
IReferenceClock **  ppClock 
)

Definition at line 397 of file parser.c.

398{
399 return BaseFilterImpl_GetSyncSource(iface, ppClock);
400}
HRESULT WINAPI BaseFilterImpl_GetSyncSource(IBaseFilter *iface, IReferenceClock **ppClock)
Definition: filter.c:119

◆ Parser_JoinFilterGraph()

HRESULT WINAPI Parser_JoinFilterGraph ( IBaseFilter iface,
IFilterGraph pGraph,
LPCWSTR  pName 
)

Definition at line 424 of file parser.c.

425{
426 return BaseFilterImpl_JoinFilterGraph(iface, pGraph, pName);
427}
static LPSTR pName
Definition: security.c:75
HRESULT WINAPI BaseFilterImpl_JoinFilterGraph(IBaseFilter *iface, IFilterGraph *pGraph, LPCWSTR pName)
Definition: filter.c:159

◆ Parser_OutputPin_BreakConnect()

static HRESULT WINAPI Parser_OutputPin_BreakConnect ( BaseOutputPin This)
static

Definition at line 623 of file parser.c.

624{
625 HRESULT hr;
626
627 TRACE("(%p)->()\n", This);
628
629 EnterCriticalSection(This->pin.pCritSec);
630 if (!This->pin.pConnectedTo || !This->pMemInputPin)
632 else
633 {
634 hr = IPin_Disconnect(This->pin.pConnectedTo);
635 IPin_Disconnect(&This->pin.IPin_iface);
636 }
637 LeaveCriticalSection(This->pin.pCritSec);
638
639 return hr;
640}
#define VFW_E_NOT_CONNECTED
Definition: vfwmsgs.h:48

◆ Parser_OutputPin_CheckMediaType()

static HRESULT WINAPI Parser_OutputPin_CheckMediaType ( BasePin pin,
const AM_MEDIA_TYPE pmt 
)
static

Definition at line 703 of file parser.c.

704{
706
708
709 return (memcmp(This->pmt, pmt, sizeof(AM_MEDIA_TYPE)) == 0);
710}
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
Definition: utclib.c:112
void dump_AM_MEDIA_TYPE(const AM_MEDIA_TYPE *pmt)
Definition: enummedia.c:38

◆ Parser_OutputPin_Connect()

static HRESULT WINAPI Parser_OutputPin_Connect ( IPin iface,
IPin pReceivePin,
const AM_MEDIA_TYPE pmt 
)
static

Definition at line 690 of file parser.c.

691{
693 ParserImpl *parser = impl_from_IBaseFilter(This->pin.pin.pinInfo.pFilter);
694
695 /* Set the allocator to our input pin's */
696 EnterCriticalSection(This->pin.pin.pCritSec);
697 This->alloc = parser->pInputPin->pAlloc;
698 LeaveCriticalSection(This->pin.pin.pCritSec);
699
700 return BaseOutputPinImpl_Connect(iface, pReceivePin, pmt);
701}
HRESULT WINAPI BaseOutputPinImpl_Connect(IPin *iface, IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
Definition: pin.c:405
Definition: import.c:81

◆ Parser_OutputPin_DecideAllocator()

static HRESULT WINAPI Parser_OutputPin_DecideAllocator ( BaseOutputPin This,
IMemInputPin pPin,
IMemAllocator **  pAlloc 
)
static

Definition at line 601 of file parser.c.

602{
604 HRESULT hr;
605
606 *pAlloc = NULL;
607
608 if (This->alloc)
609 {
610 hr = IMemInputPin_NotifyAllocator(pPin, This->alloc, This->readonly);
611 if (SUCCEEDED(hr))
612 {
613 *pAlloc = This->alloc;
614 IMemAllocator_AddRef(*pAlloc);
615 }
616 }
617 else
619
620 return hr;
621}
#define VFW_E_NO_ALLOCATOR
Definition: vfwmsgs.h:49

◆ Parser_OutputPin_DecideBufferSize()

static HRESULT WINAPI Parser_OutputPin_DecideBufferSize ( BaseOutputPin iface,
IMemAllocator pAlloc,
ALLOCATOR_PROPERTIES ppropInputRequest 
)
static

Definition at line 573 of file parser.c.

574{
577
578 if (ppropInputRequest->cbAlign && ppropInputRequest->cbAlign != This->allocProps.cbAlign)
579 FIXME("Requested Buffer cbAlign mismatch %i,%i\n",This->allocProps.cbAlign, ppropInputRequest->cbAlign);
580 if (ppropInputRequest->cbPrefix)
581 FIXME("Requested Buffer cbPrefix mismatch %i,%i\n",This->allocProps.cbPrefix, ppropInputRequest->cbPrefix);
582 if (ppropInputRequest->cbBuffer)
583 FIXME("Requested Buffer cbBuffer mismatch %i,%i\n",This->allocProps.cbBuffer, ppropInputRequest->cbBuffer);
584 if (ppropInputRequest->cBuffers)
585 FIXME("Requested Buffer cBuffers mismatch %i,%i\n",This->allocProps.cBuffers, ppropInputRequest->cBuffers);
586
587 return IMemAllocator_SetProperties(pAlloc, &This->allocProps, &actual);
588}

◆ Parser_OutputPin_GetMediaType()

static HRESULT WINAPI Parser_OutputPin_GetMediaType ( BasePin iface,
int  iPosition,
AM_MEDIA_TYPE pmt 
)
static

Definition at line 590 of file parser.c.

591{
593 if (iPosition < 0)
594 return E_INVALIDARG;
595 if (iPosition > 0)
596 return VFW_S_NO_MORE_ITEMS;
597 CopyMediaType(pmt, This->pmt);
598 return S_OK;
599}
#define E_INVALIDARG
Definition: ddrawi.h:101
#define VFW_S_NO_MORE_ITEMS
Definition: vfwmsgs.h:19

◆ Parser_OutputPin_QueryInterface()

static HRESULT WINAPI Parser_OutputPin_QueryInterface ( IPin iface,
REFIID  riid,
LPVOID ppv 
)
static

Definition at line 643 of file parser.c.

644{
646
647 TRACE("(%s, %p)\n", qzdebugstr_guid(riid), ppv);
648
649 *ppv = NULL;
650
652 *ppv = iface;
653 else if (IsEqualIID(riid, &IID_IPin))
654 *ppv = iface;
655 /* The Parser filter does not support querying IMediaSeeking, return it directly */
656 else if (IsEqualIID(riid, &IID_IMediaSeeking))
657 *ppv = &impl_from_IBaseFilter(This->pin.pin.pinInfo.pFilter)->sourceSeeking;
658
659 if (*ppv)
660 {
661 IUnknown_AddRef((IUnknown *)(*ppv));
662 return S_OK;
663 }
664
665 FIXME("No interface for %s!\n", qzdebugstr_guid(riid));
666
667 return E_NOINTERFACE;
668}
const GUID IID_IUnknown
const char * qzdebugstr_guid(const GUID *id)
Definition: main.c:279
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
const GUID IID_IPin
Definition: pincontrol.cpp:15
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
#define E_NOINTERFACE
Definition: winerror.h:2364

◆ Parser_OutputPin_Release()

static ULONG WINAPI Parser_OutputPin_Release ( IPin iface)
static

Definition at line 670 of file parser.c.

671{
673 ULONG refCount = InterlockedDecrement(&This->pin.pin.refCount);
674
675 TRACE("(%p)->() Release from %d\n", iface, refCount + 1);
676
677 if (!refCount)
678 {
679 FreeMediaType(This->pmt);
680 CoTaskMemFree(This->pmt);
681 FreeMediaType(&This->pin.pin.mtCurrent);
682 if (This->pin.pAllocator)
683 IMemAllocator_Release(This->pin.pAllocator);
685 return 0;
686 }
687 return refCount;
688}
#define InterlockedDecrement
Definition: armddk.h:52
static void FreeMediaType(AM_MEDIA_TYPE *pMediaType)
Definition: filtergraph.c:692

◆ Parser_Pause()

HRESULT WINAPI Parser_Pause ( IBaseFilter iface)

Definition at line 279 of file parser.c.

280{
281 HRESULT hr = S_OK;
283 PullPin *pin = impl_PullPin_from_IPin(This->ppPins[0]);
284
285 TRACE("%p->()\n", This);
286
287 EnterCriticalSection(&pin->thread_lock);
288 EnterCriticalSection(&This->filter.csFilter);
289
290 if (This->filter.state == State_Paused)
291 {
292 LeaveCriticalSection(&This->filter.csFilter);
293 LeaveCriticalSection(&pin->thread_lock);
294 return S_OK;
295 }
296
297 if (This->filter.state == State_Stopped)
298 {
299 LeaveCriticalSection(&This->filter.csFilter);
300 hr = IBaseFilter_Run(iface, -1);
301 EnterCriticalSection(&This->filter.csFilter);
302 }
303
304 if (SUCCEEDED(hr))
305 This->filter.state = State_Paused;
306
307 LeaveCriticalSection(&This->filter.csFilter);
308 LeaveCriticalSection(&pin->thread_lock);
309
310 return hr;
311}

◆ Parser_PullPin_Disconnect()

static HRESULT WINAPI Parser_PullPin_Disconnect ( IPin iface)
static

Definition at line 759 of file parser.c.

760{
761 HRESULT hr;
763
764 TRACE("()\n");
765
766 EnterCriticalSection(&This->thread_lock);
767 EnterCriticalSection(This->pin.pCritSec);
768 {
769 if (This->pin.pConnectedTo)
770 {
771 FILTER_STATE state;
772 ParserImpl *Parser = impl_from_IBaseFilter(This->pin.pinInfo.pFilter);
773
774 LeaveCriticalSection(This->pin.pCritSec);
775 hr = IBaseFilter_GetState(This->pin.pinInfo.pFilter, INFINITE, &state);
776 EnterCriticalSection(This->pin.pCritSec);
777
778 if (SUCCEEDED(hr) && (state == State_Stopped) && SUCCEEDED(Parser->fnDisconnect(Parser)))
779 {
780 LeaveCriticalSection(This->pin.pCritSec);
781 PullPin_Disconnect(iface);
782 EnterCriticalSection(This->pin.pCritSec);
783 hr = Parser_RemoveOutputPins(impl_from_IBaseFilter(This->pin.pinInfo.pFilter));
784 }
785 else
787 }
788 else
789 hr = S_FALSE;
790 }
791 LeaveCriticalSection(This->pin.pCritSec);
792 LeaveCriticalSection(&This->thread_lock);
793
794 return hr;
795}
static int state
Definition: maze.c:121
static HRESULT Parser_RemoveOutputPins(ParserImpl *This)
Definition: parser.c:482
HRESULT WINAPI PullPin_Disconnect(IPin *iface)
Definition: pin.c:803
#define VFW_E_NOT_STOPPED
Definition: vfwmsgs.h:75

◆ Parser_PullPin_EnumMediaTypes()

static HRESULT WINAPI Parser_PullPin_EnumMediaTypes ( IPin iface,
IEnumMediaTypes **  ppEnum 
)
static

Definition at line 816 of file parser.c.

817{
818 BasePin *This = (BasePin *)iface;
819
820 TRACE("(%p/%p)->(%p)\n", This, iface, ppEnum);
821
823}
LONG WINAPI BasePinImpl_GetMediaTypeVersion(BasePin *This)
Definition: pin.c:182
HRESULT WINAPI BasePinImpl_GetMediaType(BasePin *This, int iPosition, AM_MEDIA_TYPE *pmt)
Definition: pin.c:175
HRESULT WINAPI EnumMediaTypes_Construct(BasePin *iface, BasePin_GetMediaType enumFunc, BasePin_GetMediaTypeVersion versionFunc, IEnumMediaTypes **ppEnum)
Definition: mediatype.c:108

◆ Parser_PullPin_QueryInterface()

static HRESULT WINAPI Parser_PullPin_QueryInterface ( IPin iface,
REFIID  riid,
LPVOID ppv 
)
static

Definition at line 734 of file parser.c.

735{
737
738 TRACE("(%p/%p)->(%s, %p)\n", This, iface, qzdebugstr_guid(riid), ppv);
739
740 *ppv = NULL;
741
742 /*
743 * It is important to capture the request for the IMediaSeeking interface before it is passed
744 * on to PullPin_QueryInterface, this is necessary since the Parser filter does not support
745 * querying IMediaSeeking
746 */
747 if (IsEqualIID(riid, &IID_IMediaSeeking))
748 *ppv = &impl_from_IBaseFilter(This->pin.pinInfo.pFilter)->sourceSeeking;
749
750 if (*ppv)
751 {
752 IUnknown_AddRef((IUnknown *)(*ppv));
753 return S_OK;
754 }
755
756 return PullPin_QueryInterface(iface, riid, ppv);
757}
HRESULT WINAPI PullPin_QueryInterface(IPin *iface, REFIID riid, LPVOID *ppv)
Definition: pin.c:345

◆ Parser_PullPin_ReceiveConnection()

static HRESULT WINAPI Parser_PullPin_ReceiveConnection ( IPin iface,
IPin pReceivePin,
const AM_MEDIA_TYPE pmt 
)
static

Definition at line 797 of file parser.c.

798{
799 HRESULT hr;
800
801 TRACE("()\n");
802
803 hr = PullPin_ReceiveConnection(iface, pReceivePin, pmt);
804 if (FAILED(hr))
805 {
806 BasePin *This = (BasePin *)iface;
807
808 EnterCriticalSection(This->pCritSec);
810 LeaveCriticalSection(This->pCritSec);
811 }
812
813 return hr;
814}
HRESULT WINAPI PullPin_ReceiveConnection(IPin *iface, IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
Definition: pin.c:253
#define FAILED(hr)
Definition: intsafe.h:51

◆ Parser_QueryFilterInfo()

HRESULT WINAPI Parser_QueryFilterInfo ( IBaseFilter iface,
FILTER_INFO *  pInfo 
)

Definition at line 419 of file parser.c.

420{
421 return BaseFilterImpl_QueryFilterInfo(iface, pInfo);
422}
HRESULT WINAPI BaseFilterImpl_QueryFilterInfo(IBaseFilter *iface, FILTER_INFO *pInfo)
Definition: filter.c:145

◆ Parser_QueryInterface()

HRESULT WINAPI Parser_QueryInterface ( IBaseFilter iface,
REFIID  riid,
LPVOID ppv 
)

Definition at line 142 of file parser.c.

143{
145 TRACE("(%s, %p)\n", qzdebugstr_guid(riid), ppv);
146
147 *ppv = NULL;
148
151 || IsEqualIID(riid, &IID_IMediaFilter)
153 *ppv = &This->filter.IBaseFilter_iface;
154
155 if (*ppv)
156 {
157 IUnknown_AddRef((IUnknown *)*ppv);
158 return S_OK;
159 }
160
161 if (!IsEqualIID(riid, &IID_IPin) &&
162 !IsEqualIID(riid, &IID_IVideoWindow) &&
163 !IsEqualIID(riid, &IID_IAMFilterMiscFlags))
164 {
165 FIXME("No interface for %s!\n", qzdebugstr_guid(riid));
166 }
167
168 return E_NOINTERFACE;
169}
const GUID IID_IBaseFilter
const GUID IID_IPersist
Definition: proxy.cpp:14

◆ Parser_QueryVendorInfo()

HRESULT WINAPI Parser_QueryVendorInfo ( IBaseFilter iface,
LPWSTR pVendorInfo 
)

Definition at line 429 of file parser.c.

430{
431 return BaseFilterImpl_QueryVendorInfo(iface, pVendorInfo);
432}
HRESULT WINAPI BaseFilterImpl_QueryVendorInfo(IBaseFilter *iface, LPWSTR *pVendorInfo)
Definition: filter.c:178

◆ Parser_Release()

ULONG WINAPI Parser_Release ( IBaseFilter iface)

Definition at line 213 of file parser.c.

214{
216 ULONG refCount = InterlockedDecrement(&This->filter.refCount);
217
218 TRACE("(%p)->() Release from %d\n", This, refCount + 1);
219
220 if (!refCount)
222
223 return refCount;
224}
void Parser_Destroy(ParserImpl *This)
Definition: parser.c:176

◆ Parser_RemoveOutputPins()

static HRESULT Parser_RemoveOutputPins ( ParserImpl This)
static

Definition at line 482 of file parser.c.

483{
484 /* NOTE: should be in critical section when calling this function */
485 HRESULT hr;
486 ULONG i;
487 IPin ** ppOldPins = This->ppPins;
488
489 TRACE("(%p)\n", This);
490
491 /* reduce the pin array down to 1 (just our input pin) */
492 This->ppPins = CoTaskMemAlloc(sizeof(IPin *) * 1);
493 memcpy(This->ppPins, ppOldPins, sizeof(IPin *) * 1);
494
495 for (i = 0; i < This->cStreams; i++)
496 {
497 hr = ((BaseOutputPin *)ppOldPins[i + 1])->pFuncsTable->pfnBreakConnect((BaseOutputPin *)ppOldPins[i + 1]);
498 TRACE("Disconnect: %08x\n", hr);
499 IPin_Release(ppOldPins[i + 1]);
500 }
501
503 This->cStreams = 0;
504 CoTaskMemFree(ppOldPins);
505
506 return S_OK;
507}
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
Definition: glfuncs.h:248

Referenced by Parser_PullPin_Disconnect(), and Parser_PullPin_ReceiveConnection().

◆ Parser_Run()

HRESULT WINAPI Parser_Run ( IBaseFilter iface,
REFERENCE_TIME  tStart 
)

Definition at line 313 of file parser.c.

314{
315 HRESULT hr = S_OK;
317 PullPin *pin = impl_PullPin_from_IPin(This->ppPins[0]);
318
319 ULONG i;
320
321 TRACE("%p->(%s)\n", This, wine_dbgstr_longlong(tStart));
322
323 EnterCriticalSection(&pin->thread_lock);
324 EnterCriticalSection(&This->filter.csFilter);
325 {
327
328 This->filter.rtStreamStart = tStart;
329 if (This->filter.state == State_Running || This->filter.state == State_Paused)
330 {
331 This->filter.state = State_Running;
332 LeaveCriticalSection(&This->filter.csFilter);
333 LeaveCriticalSection(&pin->thread_lock);
334 return S_OK;
335 }
336
337 for (i = 1; i < (This->cStreams + 1); i++)
338 {
340 if (SUCCEEDED(hr))
341 hr_any = hr;
342 }
343
344 hr = hr_any;
345 if (SUCCEEDED(hr))
346 {
347 LeaveCriticalSection(&This->filter.csFilter);
348 hr = PullPin_StartProcessing(This->pInputPin);
349 EnterCriticalSection(&This->filter.csFilter);
350 }
351
352 if (SUCCEEDED(hr))
353 This->filter.state = State_Running;
354 }
355 LeaveCriticalSection(&This->filter.csFilter);
356 LeaveCriticalSection(&pin->thread_lock);
357
358 return hr;
359}
HRESULT PullPin_StartProcessing(PullPin *This)
Definition: pin.c:623
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
Definition: compat.h:49
HRESULT WINAPI BaseOutputPinImpl_Active(BaseOutputPin *This)
Definition: pin.c:614

◆ Parser_Seeking_AddRef()

static ULONG WINAPI Parser_Seeking_AddRef ( IMediaSeeking iface)
static

Definition at line 535 of file parser.c.

536{
538
539 return IBaseFilter_AddRef(&This->filter.IBaseFilter_iface);
540}
static ParserImpl * impl_from_IMediaSeeking(IMediaSeeking *iface)
Definition: parser.c:52

◆ Parser_Seeking_QueryInterface()

static HRESULT WINAPI Parser_Seeking_QueryInterface ( IMediaSeeking iface,
REFIID  riid,
LPVOID ppv 
)
static

Definition at line 528 of file parser.c.

529{
531
532 return IBaseFilter_QueryInterface(&This->filter.IBaseFilter_iface, riid, ppv);
533}

◆ Parser_Seeking_Release()

static ULONG WINAPI Parser_Seeking_Release ( IMediaSeeking iface)
static

Definition at line 542 of file parser.c.

543{
545
546 return IBaseFilter_Release(&This->filter.IBaseFilter_iface);
547}

◆ Parser_SetSyncSource()

HRESULT WINAPI Parser_SetSyncSource ( IBaseFilter iface,
IReferenceClock pClock 
)

Definition at line 383 of file parser.c.

384{
386 PullPin *pin = impl_PullPin_from_IPin(This->ppPins[0]);
387
388 TRACE("%p->(%p)\n", This, pClock);
389
390 EnterCriticalSection(&pin->thread_lock);
391 BaseFilterImpl_SetSyncSource(iface,pClock);
392 LeaveCriticalSection(&pin->thread_lock);
393
394 return S_OK;
395}
HRESULT WINAPI BaseFilterImpl_SetSyncSource(IBaseFilter *iface, IReferenceClock *pClock)
Definition: filter.c:101

◆ Parser_Stop()

HRESULT WINAPI Parser_Stop ( IBaseFilter iface)

IMediaFilter methods

Definition at line 241 of file parser.c.

242{
244 PullPin *pin = impl_PullPin_from_IPin(This->ppPins[0]);
245 ULONG i;
246
247 TRACE("%p->()\n", This);
248
249 EnterCriticalSection(&pin->thread_lock);
250
251 IAsyncReader_BeginFlush(This->pInputPin->pReader);
252 EnterCriticalSection(&This->filter.csFilter);
253
254 if (This->filter.state == State_Stopped)
255 {
256 LeaveCriticalSection(&This->filter.csFilter);
257 IAsyncReader_EndFlush(This->pInputPin->pReader);
258 LeaveCriticalSection(&pin->thread_lock);
259 return S_OK;
260 }
261
262 This->filter.state = State_Stopped;
263
264 for (i = 1; i < (This->cStreams + 1); i++)
265 {
267 }
268
269 LeaveCriticalSection(&This->filter.csFilter);
270
271 PullPin_PauseProcessing(This->pInputPin);
273 IAsyncReader_EndFlush(This->pInputPin->pReader);
274
275 LeaveCriticalSection(&pin->thread_lock);
276 return S_OK;
277}
HRESULT PullPin_PauseProcessing(PullPin *This)
Definition: pin.c:646
HRESULT WINAPI BaseOutputPinImpl_Inactive(BaseOutputPin *This)
Definition: pin.c:634

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( quartz  )

Variable Documentation

◆ BaseFuncTable

const BaseFilterFuncTable BaseFuncTable
static
Initial value:
= {
}
static IPin *WINAPI Parser_GetPin(BaseFilter *iface, int pos)
Definition: parser.c:68
static LONG WINAPI Parser_GetPinCount(BaseFilter *iface)
Definition: parser.c:82

Definition at line 91 of file parser.c.

Referenced by Parser_Create().

◆ output_BaseOutputFuncTable

const BaseOutputPinFuncTable output_BaseOutputFuncTable
static
Initial value:
= {
{
},
}
static HRESULT WINAPI Parser_OutputPin_DecideBufferSize(BaseOutputPin *iface, IMemAllocator *pAlloc, ALLOCATOR_PROPERTIES *ppropInputRequest)
Definition: parser.c:573
static HRESULT WINAPI Parser_OutputPin_CheckMediaType(BasePin *pin, const AM_MEDIA_TYPE *pmt)
Definition: parser.c:703
static HRESULT WINAPI Parser_OutputPin_DecideAllocator(BaseOutputPin *This, IMemInputPin *pPin, IMemAllocator **pAlloc)
Definition: parser.c:601
static HRESULT WINAPI Parser_OutputPin_BreakConnect(BaseOutputPin *This)
Definition: parser.c:623
static HRESULT WINAPI Parser_OutputPin_GetMediaType(BasePin *iface, int iPosition, AM_MEDIA_TYPE *pmt)
Definition: parser.c:590
HRESULT WINAPI BaseOutputPinImpl_AttemptConnection(BasePin *This, IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
Definition: pin.c:712

Definition at line 434 of file parser.c.

Referenced by Parser_AddPin().

◆ Parser_InputPin_Vtbl

static const IPinVtbl Parser_InputPin_Vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI Parser_PullPin_ReceiveConnection(IPin *iface, IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
Definition: parser.c:797
static HRESULT WINAPI Parser_PullPin_EnumMediaTypes(IPin *iface, IEnumMediaTypes **ppEnum)
Definition: parser.c:816
static HRESULT WINAPI Parser_PullPin_Disconnect(IPin *iface)
Definition: parser.c:759
static HRESULT WINAPI Parser_PullPin_QueryInterface(IPin *iface, REFIID riid, LPVOID *ppv)
Definition: parser.c:734
HRESULT WINAPI PullPin_EndFlush(IPin *iface)
Definition: pin.c:773
HRESULT WINAPI PullPin_QueryAccept(IPin *iface, const AM_MEDIA_TYPE *pmt)
Definition: pin.c:715
HRESULT WINAPI PullPin_NewSegment(IPin *iface, REFERENCE_TIME tStart, REFERENCE_TIME tStop, double dRate)
Definition: pin.c:837
HRESULT WINAPI PullPin_EndOfStream(IPin *iface)
Definition: pin.c:724
HRESULT WINAPI PullPin_BeginFlush(IPin *iface)
Definition: pin.c:739
ULONG WINAPI PullPin_Release(IPin *iface)
Definition: pin.c:374
HRESULT WINAPI BasePinImpl_ConnectionMediaType(IPin *iface, AM_MEDIA_TYPE *pmt)
Definition: pin.c:248
HRESULT WINAPI BasePinImpl_QueryInternalConnections(IPin *iface, IPin **apPin, ULONG *cPin)
Definition: pin.c:329
HRESULT WINAPI BasePinImpl_ConnectedTo(IPin *iface, IPin **ppPin)
Definition: pin.c:222
HRESULT WINAPI BasePinImpl_QueryId(IPin *iface, LPWSTR *Id)
Definition: pin.c:296
HRESULT WINAPI BasePinImpl_QueryPinInfo(IPin *iface, PIN_INFO *pInfo)
Definition: pin.c:273
HRESULT WINAPI BasePinImpl_QueryDirection(IPin *iface, PIN_DIRECTION *pPinDir)
Definition: pin.c:285
HRESULT WINAPI BaseInputPinImpl_Connect(IPin *iface, IPin *pConnector, const AM_MEDIA_TYPE *pmt)
Definition: pin.c:881
ULONG WINAPI BasePinImpl_AddRef(IPin *iface)
Definition: pin.c:187

Definition at line 41 of file parser.c.

Referenced by Parser_Create().

◆ Parser_OutputPin_Vtbl

static const IPinVtbl Parser_OutputPin_Vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI Parser_OutputPin_QueryInterface(IPin *iface, REFIID riid, LPVOID *ppv)
Definition: parser.c:643
static ULONG WINAPI Parser_OutputPin_Release(IPin *iface)
Definition: parser.c:670
static HRESULT WINAPI Parser_OutputPin_Connect(IPin *iface, IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
Definition: parser.c:690
HRESULT WINAPI BaseOutputPinImpl_EndFlush(IPin *iface)
Definition: pin.c:545
HRESULT WINAPI BasePinImpl_NewSegment(IPin *iface, REFERENCE_TIME tStart, REFERENCE_TIME tStop, double dRate)
Definition: pin.c:338
HRESULT WINAPI BaseOutputPinImpl_EndOfStream(IPin *iface)
Definition: pin.c:527
HRESULT WINAPI BaseOutputPinImpl_BeginFlush(IPin *iface)
Definition: pin.c:536
HRESULT WINAPI BasePinImpl_EnumMediaTypes(IPin *iface, IEnumMediaTypes **ppEnum)
Definition: pin.c:318
HRESULT WINAPI BasePinImpl_QueryAccept(IPin *iface, const AM_MEDIA_TYPE *pmt)
Definition: pin.c:311
HRESULT WINAPI BaseOutputPinImpl_ReceiveConnection(IPin *iface, IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
Definition: pin.c:490
HRESULT WINAPI BaseOutputPinImpl_Disconnect(IPin *iface)
Definition: pin.c:497

Definition at line 40 of file parser.c.

Referenced by Parser_AddPin().

◆ Parser_Seeking_Vtbl

static const IMediaSeekingVtbl Parser_Seeking_Vtbl
static
Initial value:
=
{
}
static ULONG WINAPI Parser_Seeking_Release(IMediaSeeking *iface)
Definition: parser.c:542
static ULONG WINAPI Parser_Seeking_AddRef(IMediaSeeking *iface)
Definition: parser.c:535
static HRESULT WINAPI Parser_Seeking_QueryInterface(IMediaSeeking *iface, REFIID riid, LPVOID *ppv)
Definition: parser.c:528
HRESULT WINAPI SourceSeekingImpl_SetTimeFormat(IMediaSeeking *iface, const GUID *pFormat)
Definition: seeking.c:137
HRESULT WINAPI SourceSeekingImpl_SetPositions(IMediaSeeking *iface, LONGLONG *pCurrent, DWORD dwCurrentFlags, LONGLONG *pStop, DWORD dwStopFlags)
Definition: seeking.c:218
HRESULT WINAPI SourceSeekingImpl_IsUsingTimeFormat(IMediaSeeking *iface, const GUID *pFormat)
Definition: seeking.c:122
HRESULT WINAPI SourceSeekingImpl_GetRate(IMediaSeeking *iface, double *dRate)
Definition: seeking.c:305
HRESULT WINAPI SourceSeekingImpl_GetTimeFormat(IMediaSeeking *iface, GUID *pFormat)
Definition: seeking.c:110
HRESULT WINAPI SourceSeekingImpl_GetCapabilities(IMediaSeeking *iface, DWORD *pCapabilities)
Definition: seeking.c:63
HRESULT WINAPI SourceSeekingImpl_GetCurrentPosition(IMediaSeeking *iface, LONGLONG *pCurrent)
Definition: seeking.c:172
HRESULT WINAPI SourceSeekingImpl_GetPreroll(IMediaSeeking *iface, LONGLONG *pPreroll)
Definition: seeking.c:319
HRESULT WINAPI SourceSeekingImpl_SetRate(IMediaSeeking *iface, double dRate)
Definition: seeking.c:282
HRESULT WINAPI SourceSeekingImpl_ConvertTimeFormat(IMediaSeeking *iface, LONGLONG *pTarget, const GUID *pTargetFormat, LONGLONG Source, const GUID *pSourceFormat)
Definition: seeking.c:185
HRESULT WINAPI SourceSeekingImpl_IsFormatSupported(IMediaSeeking *iface, const GUID *pFormat)
Definition: seeking.c:95
HRESULT WINAPI SourceSeekingImpl_GetStopPosition(IMediaSeeking *iface, LONGLONG *pStop)
Definition: seeking.c:158
HRESULT WINAPI SourceSeekingImpl_GetDuration(IMediaSeeking *iface, LONGLONG *pDuration)
Definition: seeking.c:145
HRESULT WINAPI SourceSeekingImpl_GetPositions(IMediaSeeking *iface, LONGLONG *pCurrent, LONGLONG *pStop)
Definition: seeking.c:254
HRESULT WINAPI SourceSeekingImpl_CheckCapabilities(IMediaSeeking *iface, DWORD *pCapabilities)
Definition: seeking.c:74
HRESULT WINAPI SourceSeekingImpl_QueryPreferredFormat(IMediaSeeking *iface, GUID *pFormat)
Definition: seeking.c:102
HRESULT WINAPI SourceSeekingImpl_GetAvailable(IMediaSeeking *iface, LONGLONG *pEarliest, LONGLONG *pLatest)
Definition: seeking.c:268

Definition at line 39 of file parser.c.

Referenced by Parser_Create().

◆ wcsInputPinName

const WCHAR wcsInputPinName[] = {'i','n','p','u','t',' ','p','i','n',0}
static

Definition at line 38 of file parser.c.

Referenced by createtestfilter(), and Parser_Create().