ReactOS 0.4.16-dev-297-gc569aee
parser.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  ParserImpl
 
struct  Parser_OutputPin
 

Typedefs

typedef struct ParserImpl ParserImpl
 
typedef HRESULT(* PFN_PROCESS_SAMPLE) (LPVOID iface, IMediaSample *pSample, DWORD_PTR cookie)
 
typedef HRESULT(* PFN_QUERY_ACCEPT) (LPVOID iface, const AM_MEDIA_TYPE *pmt)
 
typedef HRESULT(* PFN_PRE_CONNECT) (IPin *iface, IPin *pConnectPin, ALLOCATOR_PROPERTIES *prop)
 
typedef HRESULT(* PFN_CLEANUP) (LPVOID iface)
 
typedef HRESULT(* PFN_DISCONNECT) (LPVOID iface)
 
typedef struct Parser_OutputPin Parser_OutputPin
 

Functions

HRESULT Parser_AddPin (ParserImpl *This, const PIN_INFO *piOutput, ALLOCATOR_PROPERTIES *props, const AM_MEDIA_TYPE *amt)
 
HRESULT Parser_Create (ParserImpl *, const IBaseFilterVtbl *, const CLSID *, PFN_PROCESS_SAMPLE, PFN_QUERY_ACCEPT, PFN_PRE_CONNECT, PFN_CLEANUP, PFN_DISCONNECT, REQUESTPROC, STOPPROCESSPROC, SourceSeeking_ChangeStop stop, SourceSeeking_ChangeStart start, SourceSeeking_ChangeRate rate)
 
void Parser_Destroy (ParserImpl *This)
 
HRESULT WINAPI Parser_QueryInterface (IBaseFilter *iface, REFIID riid, LPVOID *ppv)
 
ULONG WINAPI Parser_AddRef (IBaseFilter *iface)
 
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)
 
static Parser_OutputPinunsafe_impl_Parser_OutputPin_from_IPin (IPin *iface)
 

Typedef Documentation

◆ Parser_OutputPin

◆ ParserImpl

Definition at line 23 of file parser.h.

◆ PFN_CLEANUP

typedef HRESULT(* PFN_CLEANUP) (LPVOID iface)

Definition at line 28 of file parser.h.

◆ PFN_DISCONNECT

typedef HRESULT(* PFN_DISCONNECT) (LPVOID iface)

Definition at line 29 of file parser.h.

◆ PFN_PRE_CONNECT

typedef HRESULT(* PFN_PRE_CONNECT) (IPin *iface, IPin *pConnectPin, ALLOCATOR_PROPERTIES *prop)

Definition at line 27 of file parser.h.

◆ PFN_PROCESS_SAMPLE

typedef HRESULT(* PFN_PROCESS_SAMPLE) (LPVOID iface, IMediaSample *pSample, DWORD_PTR cookie)

Definition at line 25 of file parser.h.

◆ PFN_QUERY_ACCEPT

typedef HRESULT(* PFN_QUERY_ACCEPT) (LPVOID iface, const AM_MEDIA_TYPE *pmt)

Definition at line 26 of file parser.h.

Function Documentation

◆ 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: precomp.h:57
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_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
#define S_OK
Definition: intsafe.h:52
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 FIXME(fmt,...)
Definition: precomp.h:53
#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_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_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_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_IUnknown
const GUID IID_IBaseFilter
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
const GUID IID_IPersist
Definition: proxy.cpp:14
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
#define E_NOINTERFACE
Definition: winerror.h:2364

◆ 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}
#define InterlockedDecrement
Definition: armddk.h:52
void Parser_Destroy(ParserImpl *This)
Definition: parser.c:176

◆ 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
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
HRESULT WINAPI BaseOutputPinImpl_Active(BaseOutputPin *This)
Definition: pin.c:614
#define VFW_E_NOT_CONNECTED
Definition: vfwmsgs.h:48

◆ 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

◆ unsafe_impl_Parser_OutputPin_from_IPin()

static Parser_OutputPin * unsafe_impl_Parser_OutputPin_from_IPin ( IPin iface)
inlinestatic