ReactOS  0.4.14-dev-606-g14ebc0b
renderer.c File Reference
#include "dshow.h"
#include "wine/debug.h"
#include "wine/unicode.h"
#include "wine/strmbase.h"
#include "uuids.h"
#include "vfwmsgs.h"
#include "strmbase_private.h"
Include dependency graph for renderer.c:

Go to the source code of this file.

Macros

#define COBJMACROS
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (strmbase)
 
static BaseInputPinimpl_BaseInputPin_from_IPin (IPin *iface)
 
static BaseRendererimpl_from_IBaseFilter (IBaseFilter *iface)
 
static BaseRendererimpl_from_BaseFilter (BaseFilter *iface)
 
static HRESULT WINAPI BaseRenderer_InputPin_ReceiveConnection (IPin *iface, IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
 
static HRESULT WINAPI BaseRenderer_InputPin_Disconnect (IPin *iface)
 
static HRESULT WINAPI BaseRenderer_InputPin_EndOfStream (IPin *iface)
 
static HRESULT WINAPI BaseRenderer_InputPin_BeginFlush (IPin *iface)
 
static HRESULT WINAPI BaseRenderer_InputPin_EndFlush (IPin *iface)
 
static IPin *WINAPI BaseRenderer_GetPin (BaseFilter *iface, int pos)
 
static LONG WINAPI BaseRenderer_GetPinCount (BaseFilter *iface)
 
static HRESULT WINAPI BaseRenderer_Input_CheckMediaType (BasePin *pin, const AM_MEDIA_TYPE *pmt)
 
static HRESULT WINAPI BaseRenderer_Receive (BaseInputPin *pin, IMediaSample *pSample)
 
HRESULT WINAPI BaseRenderer_Init (BaseRenderer *This, const IBaseFilterVtbl *Vtbl, IUnknown *pUnkOuter, const CLSID *pClsid, DWORD_PTR DebugInfo, const BaseRendererFuncTable *pBaseFuncsTable)
 
HRESULT WINAPI BaseRendererImpl_QueryInterface (IBaseFilter *iface, REFIID riid, LPVOID *ppv)
 
ULONG WINAPI BaseRendererImpl_Release (IBaseFilter *iface)
 
HRESULT WINAPI BaseRendererImpl_Receive (BaseRenderer *This, IMediaSample *pSample)
 
HRESULT WINAPI BaseRendererImpl_FindPin (IBaseFilter *iface, LPCWSTR Id, IPin **ppPin)
 
HRESULT WINAPI BaseRendererImpl_Stop (IBaseFilter *iface)
 
HRESULT WINAPI BaseRendererImpl_Run (IBaseFilter *iface, REFERENCE_TIME tStart)
 
HRESULT WINAPI BaseRendererImpl_Pause (IBaseFilter *iface)
 
HRESULT WINAPI BaseRendererImpl_SetSyncSource (IBaseFilter *iface, IReferenceClock *clock)
 
HRESULT WINAPI BaseRendererImpl_GetState (IBaseFilter *iface, DWORD dwMilliSecsTimeout, FILTER_STATE *pState)
 
HRESULT WINAPI BaseRendererImpl_EndOfStream (BaseRenderer *iface)
 
HRESULT WINAPI BaseRendererImpl_BeginFlush (BaseRenderer *iface)
 
HRESULT WINAPI BaseRendererImpl_EndFlush (BaseRenderer *iface)
 
HRESULT WINAPI BaseRendererImpl_ClearPendingSample (BaseRenderer *iface)
 

Variables

static const WCHAR wcsInputPinName [] = {'i','n','p','u','t',' ','p','i','n',0}
 
static const WCHAR wcsAltInputPinName [] = {'I','n',0}
 
static const IQualityControlVtbl Renderer_QualityControl_Vtbl
 
static const IPinVtbl BaseRenderer_InputPin_Vtbl
 
static const BaseFilterFuncTable RendererBaseFilterFuncTable
 
static const BaseInputPinFuncTable input_BaseInputFuncTable
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 21 of file renderer.c.

Function Documentation

◆ BaseRenderer_GetPin()

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

Definition at line 197 of file renderer.c.

198 {
200 
201  if (pos >= 1 || pos < 0)
202  return NULL;
203 
204  IPin_AddRef(&This->pInputPin->pin.IPin_iface);
205  return &This->pInputPin->pin.IPin_iface;
206 }
smooth NULL
Definition: ftsmooth.c:416
static BaseRenderer * impl_from_BaseFilter(BaseFilter *iface)
Definition: renderer.c:46

◆ BaseRenderer_GetPinCount()

static LONG WINAPI BaseRenderer_GetPinCount ( BaseFilter iface)
static

Definition at line 208 of file renderer.c.

209 {
210  return 1;
211 }

◆ BaseRenderer_Init()

HRESULT WINAPI BaseRenderer_Init ( BaseRenderer This,
const IBaseFilterVtbl *  Vtbl,
IUnknown pUnkOuter,
const CLSID pClsid,
DWORD_PTR  DebugInfo,
const BaseRendererFuncTable pBaseFuncsTable 
)

Definition at line 241 of file renderer.c.

243 {
244  PIN_INFO piInput;
245  HRESULT hr;
246 
247  BaseFilter_Init(&This->filter, Vtbl, pClsid, DebugInfo, &RendererBaseFilterFuncTable);
248 
249  This->pFuncsTable = pBaseFuncsTable;
250 
251  /* construct input pin */
252  piInput.dir = PINDIR_INPUT;
253  piInput.pFilter = &This->filter.IBaseFilter_iface;
254  lstrcpynW(piInput.achName, wcsInputPinName, sizeof(piInput.achName) / sizeof(piInput.achName[0]));
255 
257  &input_BaseInputFuncTable, &This->filter.csFilter, NULL, (IPin **)&This->pInputPin);
258 
259  if (SUCCEEDED(hr))
260  {
261  hr = CreatePosPassThru(pUnkOuter ? pUnkOuter: (IUnknown *)&This->filter.IBaseFilter_iface, TRUE,
262  &This->pInputPin->pin.IPin_iface, &This->pPosition);
263  if (FAILED(hr))
264  return hr;
265 
266  InitializeCriticalSection(&This->csRenderLock);
267  This->csRenderLock.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__": BaseRenderer.csRenderLock");
268  This->evComplete = CreateEventW(NULL, TRUE, TRUE, NULL);
269  This->ThreadSignal = CreateEventW(NULL, TRUE, TRUE, NULL);
270  This->RenderEvent = CreateEventW(NULL, FALSE, FALSE, NULL);
271  This->pMediaSample = NULL;
272 
273  QualityControlImpl_Create(&This->pInputPin->pin.IPin_iface, &This->filter.IBaseFilter_iface, &This->qcimpl);
274  This->qcimpl->IQualityControl_iface.lpVtbl = &Renderer_QualityControl_Vtbl;
275  }
276 
277  return hr;
278 }
#define TRUE
Definition: types.h:120
#define DWORD_PTR
Definition: treelist.c:76
HRESULT hr
Definition: shlfolder.c:183
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
Definition: synch.c:651
#define lstrcpynW
Definition: compat.h:405
HRESULT QualityControlImpl_Create(IPin *input, IBaseFilter *self, QualityControlImpl **ppv)
static const BaseFilterFuncTable RendererBaseFilterFuncTable
Definition: renderer.c:225
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
Definition: synch.c:751
smooth NULL
Definition: ftsmooth.c:416
static const BaseInputPinFuncTable input_BaseInputFuncTable
Definition: renderer.c:230
HRESULT BaseInputPin_Construct(const IPinVtbl *InputPin_Vtbl, LONG inputpin_size, const PIN_INFO *pPinInfo, const BaseInputPinFuncTable *pBaseInputFuncsTable, LPCRITICAL_SECTION pCritSec, IMemAllocator *, IPin **ppPin)
Definition: pin.c:1189
static const IQualityControlVtbl Renderer_QualityControl_Vtbl
Definition: renderer.c:51
LONG HRESULT
Definition: typedefs.h:77
static const WCHAR wcsInputPinName[]
Definition: renderer.c:33
static const IPinVtbl BaseRenderer_InputPin_Vtbl
Definition: renderer.c:175
HRESULT WINAPI CreatePosPassThru(IUnknown *pUnkOuter, BOOL bRenderer, IPin *pPin, IUnknown **ppPassThru)
Definition: pospass.c:233
Definition: axcore.idl:91
HRESULT WINAPI BaseFilter_Init(BaseFilter *This, const IBaseFilterVtbl *Vtbl, const CLSID *pClsid, DWORD_PTR DebugInfo, const BaseFilterFuncTable *pBaseFuncsTable)
Definition: filter.c:196
#define SUCCEEDED(hr)
Definition: intsafe.h:57

Referenced by DSoundRender_create(), NullRenderer_create(), VideoRenderer_create(), and vmr_create().

◆ BaseRenderer_Input_CheckMediaType()

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

Definition at line 213 of file renderer.c.

214 {
215  BaseRenderer *This = impl_from_IBaseFilter(pin->pinInfo.pFilter);
216  return This->pFuncsTable->pfnCheckMediaType(This, pmt);
217 }
Definition: regsvr.c:103
static BaseRenderer * impl_from_IBaseFilter(IBaseFilter *iface)
Definition: renderer.c:41

◆ BaseRenderer_InputPin_BeginFlush()

static HRESULT WINAPI BaseRenderer_InputPin_BeginFlush ( IPin iface)
static

Definition at line 125 of file renderer.c.

126 {
128  BaseRenderer *pFilter = impl_from_IBaseFilter(This->pin.pinInfo.pFilter);
129  HRESULT hr;
130 
131  TRACE("(%p/%p)->()\n", This, iface);
132 
135  EnterCriticalSection(This->pin.pCritSec);
137  if (SUCCEEDED(hr))
138  {
139  if (pFilter->pFuncsTable->pfnBeginFlush)
140  hr = pFilter->pFuncsTable->pfnBeginFlush(pFilter);
141  else
142  hr = BaseRendererImpl_BeginFlush(pFilter);
143  }
144  LeaveCriticalSection(This->pin.pCritSec);
147  return hr;
148 }
HRESULT hr
Definition: shlfolder.c:183
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
static BaseInputPin * impl_BaseInputPin_from_IPin(IPin *iface)
Definition: renderer.c:36
HRESULT WINAPI BaseRendererImpl_BeginFlush(BaseRenderer *iface)
Definition: renderer.c:590
static BaseRenderer * impl_from_IBaseFilter(IBaseFilter *iface)
Definition: renderer.c:41
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT WINAPI BaseInputPinImpl_BeginFlush(IPin *iface)
Definition: pin.c:968
LONG HRESULT
Definition: typedefs.h:77
CRITICAL_SECTION csFilter
Definition: strmbase.h:165
CRITICAL_SECTION csRenderLock
Definition: strmbase.h:584
BaseFilter filter
Definition: strmbase.h:580
const struct BaseRendererFuncTable * pFuncsTable
Definition: strmbase.h:593
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ BaseRenderer_InputPin_Disconnect()

static HRESULT WINAPI BaseRenderer_InputPin_Disconnect ( IPin iface)
static

Definition at line 79 of file renderer.c.

80 {
82  BaseRenderer *renderer = impl_from_IBaseFilter(This->pin.pinInfo.pFilter);
83  HRESULT hr;
84 
85  TRACE("(%p/%p)\n", This, renderer);
86 
87  EnterCriticalSection(This->pin.pCritSec);
88  hr = BasePinImpl_Disconnect(iface);
89  if (SUCCEEDED(hr))
90  {
91  if (renderer->pFuncsTable->pfnBreakConnect)
92  hr = renderer->pFuncsTable->pfnBreakConnect(renderer);
93  }
95  LeaveCriticalSection(This->pin.pCritSec);
96 
97  return hr;
98 }
HRESULT WINAPI BaseRendererImpl_ClearPendingSample(BaseRenderer *iface)
Definition: renderer.c:609
HRESULT hr
Definition: shlfolder.c:183
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
static BaseInputPin * impl_BaseInputPin_from_IPin(IPin *iface)
Definition: renderer.c:36
HRESULT WINAPI BasePinImpl_Disconnect(IPin *iface)
Definition: pin.c:197
static BaseRenderer * impl_from_IBaseFilter(IBaseFilter *iface)
Definition: renderer.c:41
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
const struct BaseRendererFuncTable * pFuncsTable
Definition: strmbase.h:593
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ BaseRenderer_InputPin_EndFlush()

static HRESULT WINAPI BaseRenderer_InputPin_EndFlush ( IPin iface)
static

Definition at line 150 of file renderer.c.

151 {
153  BaseRenderer *pFilter = impl_from_IBaseFilter(This->pin.pinInfo.pFilter);
154  HRESULT hr;
155 
156  TRACE("(%p/%p)->()\n", This, pFilter);
157 
160  EnterCriticalSection(This->pin.pCritSec);
161  hr = BaseInputPinImpl_EndFlush(iface);
162  if (SUCCEEDED(hr))
163  {
164  if (pFilter->pFuncsTable->pfnEndFlush)
165  hr = pFilter->pFuncsTable->pfnEndFlush(pFilter);
166  else
167  hr = BaseRendererImpl_EndFlush(pFilter);
168  }
169  LeaveCriticalSection(This->pin.pCritSec);
172  return hr;
173 }
HRESULT hr
Definition: shlfolder.c:183
HRESULT WINAPI BaseInputPinImpl_EndFlush(IPin *iface)
Definition: pin.c:988
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
static BaseInputPin * impl_BaseInputPin_from_IPin(IPin *iface)
Definition: renderer.c:36
static BaseRenderer * impl_from_IBaseFilter(IBaseFilter *iface)
Definition: renderer.c:41
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
CRITICAL_SECTION csFilter
Definition: strmbase.h:165
CRITICAL_SECTION csRenderLock
Definition: strmbase.h:584
BaseFilter filter
Definition: strmbase.h:580
const struct BaseRendererFuncTable * pFuncsTable
Definition: strmbase.h:593
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
HRESULT WINAPI BaseRendererImpl_EndFlush(BaseRenderer *iface)
Definition: renderer.c:599
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ BaseRenderer_InputPin_EndOfStream()

static HRESULT WINAPI BaseRenderer_InputPin_EndOfStream ( IPin iface)
static

Definition at line 100 of file renderer.c.

101 {
102  HRESULT hr;
104  BaseRenderer *pFilter = impl_from_IBaseFilter(This->pin.pinInfo.pFilter);
105 
106  TRACE("(%p/%p)->()\n", This, pFilter);
107 
111  EnterCriticalSection(This->pin.pCritSec);
112  if (SUCCEEDED(hr))
113  {
114  if (pFilter->pFuncsTable->pfnEndOfStream)
115  hr = pFilter->pFuncsTable->pfnEndOfStream(pFilter);
116  else
117  hr = BaseRendererImpl_EndOfStream(pFilter);
118  }
119  LeaveCriticalSection(This->pin.pCritSec);
122  return hr;
123 }
HRESULT hr
Definition: shlfolder.c:183
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
static BaseInputPin * impl_BaseInputPin_from_IPin(IPin *iface)
Definition: renderer.c:36
HRESULT WINAPI BaseRendererImpl_EndOfStream(BaseRenderer *iface)
Definition: renderer.c:567
static BaseRenderer * impl_from_IBaseFilter(IBaseFilter *iface)
Definition: renderer.c:41
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
CRITICAL_SECTION csFilter
Definition: strmbase.h:165
CRITICAL_SECTION csRenderLock
Definition: strmbase.h:584
BaseFilter filter
Definition: strmbase.h:580
const struct BaseRendererFuncTable * pFuncsTable
Definition: strmbase.h:593
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
#define SUCCEEDED(hr)
Definition: intsafe.h:57
HRESULT WINAPI BaseInputPinImpl_EndOfStream(IPin *iface)
Definition: pin.c:944

◆ BaseRenderer_InputPin_ReceiveConnection()

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

Definition at line 59 of file renderer.c.

60 {
62  BaseRenderer *renderer = impl_from_IBaseFilter(This->pin.pinInfo.pFilter);
63  HRESULT hr;
64 
65  TRACE("(%p/%p)->(%p, %p)\n", This, renderer, pReceivePin, pmt);
66 
67  EnterCriticalSection(This->pin.pCritSec);
68  hr = BaseInputPinImpl_ReceiveConnection(iface, pReceivePin, pmt);
69  if (SUCCEEDED(hr))
70  {
71  if (renderer->pFuncsTable->pfnCompleteConnect)
72  hr = renderer->pFuncsTable->pfnCompleteConnect(renderer, pReceivePin);
73  }
74  LeaveCriticalSection(This->pin.pCritSec);
75 
76  return hr;
77 }
HRESULT hr
Definition: shlfolder.c:183
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
static BaseInputPin * impl_BaseInputPin_from_IPin(IPin *iface)
Definition: renderer.c:36
static BaseRenderer * impl_from_IBaseFilter(IBaseFilter *iface)
Definition: renderer.c:41
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
const struct BaseRendererFuncTable * pFuncsTable
Definition: strmbase.h:593
HRESULT WINAPI BaseInputPinImpl_ReceiveConnection(IPin *iface, IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
Definition: pin.c:889
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ BaseRenderer_Receive()

static HRESULT WINAPI BaseRenderer_Receive ( BaseInputPin pin,
IMediaSample pSample 
)
static

Definition at line 219 of file renderer.c.

220 {
221  BaseRenderer *This = impl_from_IBaseFilter(pin->pin.pinInfo.pFilter);
222  return BaseRendererImpl_Receive(This, pSample);
223 }
HRESULT WINAPI BaseRendererImpl_Receive(BaseRenderer *This, IMediaSample *pSample)
Definition: renderer.c:329
Definition: regsvr.c:103
static BaseRenderer * impl_from_IBaseFilter(IBaseFilter *iface)
Definition: renderer.c:41

◆ BaseRendererImpl_BeginFlush()

HRESULT WINAPI BaseRendererImpl_BeginFlush ( BaseRenderer iface)

Definition at line 590 of file renderer.c.

591 {
592  TRACE("(%p)\n", iface);
594  SetEvent(iface->ThreadSignal);
595  SetEvent(iface->RenderEvent);
596  return S_OK;
597 }
HRESULT WINAPI BaseRendererImpl_ClearPendingSample(BaseRenderer *iface)
Definition: renderer.c:609
HANDLE RenderEvent
Definition: strmbase.h:587
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
Definition: synch.c:733
#define TRACE(s)
Definition: solgame.cpp:4
#define S_OK
Definition: intsafe.h:59
HANDLE ThreadSignal
Definition: strmbase.h:586

Referenced by BaseRenderer_InputPin_BeginFlush(), and DSoundRender_BeginFlush().

◆ BaseRendererImpl_ClearPendingSample()

HRESULT WINAPI BaseRendererImpl_ClearPendingSample ( BaseRenderer iface)

Definition at line 609 of file renderer.c.

610 {
611  if (iface->pMediaSample)
612  {
613  IMediaSample_Release(iface->pMediaSample);
614  iface->pMediaSample = NULL;
615  }
616  return S_OK;
617 }
IMediaSample * pMediaSample
Definition: strmbase.h:588
smooth NULL
Definition: ftsmooth.c:416
#define S_OK
Definition: intsafe.h:59

Referenced by BaseRenderer_InputPin_Disconnect(), BaseRendererImpl_BeginFlush(), BaseRendererImpl_Pause(), BaseRendererImpl_Receive(), BaseRendererImpl_Release(), and BaseRendererImpl_Run().

◆ BaseRendererImpl_EndFlush()

HRESULT WINAPI BaseRendererImpl_EndFlush ( BaseRenderer iface)

Definition at line 599 of file renderer.c.

600 {
601  TRACE("(%p)\n", iface);
604  ResetEvent(iface->ThreadSignal);
605  ResetEvent(iface->RenderEvent);
606  return S_OK;
607 }
HANDLE RenderEvent
Definition: strmbase.h:587
REFERENCE_TIME rtStreamStart
Definition: strmbase.h:168
IUnknown * pPosition
Definition: strmbase.h:583
struct QualityControlImpl * qcimpl
Definition: strmbase.h:591
void QualityControlRender_Start(QualityControlImpl *This, REFERENCE_TIME tStart)
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT WINAPI RendererPosPassThru_ResetMediaTime(IUnknown *iface)
Definition: pospass.c:611
BaseFilter filter
Definition: strmbase.h:580
#define S_OK
Definition: intsafe.h:59
HANDLE ThreadSignal
Definition: strmbase.h:586
BOOL WINAPI DECLSPEC_HOTPATCH ResetEvent(IN HANDLE hEvent)
Definition: synch.c:714

Referenced by BaseRenderer_InputPin_EndFlush(), DSoundRender_EndFlush(), and VideoRenderer_EndFlush().

◆ BaseRendererImpl_EndOfStream()

HRESULT WINAPI BaseRendererImpl_EndOfStream ( BaseRenderer iface)

Definition at line 567 of file renderer.c.

568 {
569  IMediaEventSink* pEventSink;
570  IFilterGraph *graph;
571  HRESULT hr = S_OK;
572 
573  TRACE("(%p)\n", iface);
574 
575  graph = iface->filter.filterInfo.pGraph;
576  if (graph)
577  { hr = IFilterGraph_QueryInterface(iface->filter.filterInfo.pGraph, &IID_IMediaEventSink, (LPVOID*)&pEventSink);
578  if (SUCCEEDED(hr))
579  {
580  hr = IMediaEventSink_Notify(pEventSink, EC_COMPLETE, S_OK, (LONG_PTR)iface);
581  IMediaEventSink_Release(pEventSink);
582  }
583  }
585  SetEvent(iface->evComplete);
586 
587  return hr;
588 }
FILTER_INFO filterInfo
Definition: strmbase.h:170
HANDLE evComplete
Definition: strmbase.h:585
HRESULT hr
Definition: shlfolder.c:183
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
Definition: synch.c:733
IUnknown * pPosition
Definition: strmbase.h:583
#define EC_COMPLETE
Definition: evcode.h:17
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
HRESULT WINAPI RendererPosPassThru_EOS(IUnknown *iface)
Definition: pospass.c:620
BaseFilter filter
Definition: strmbase.h:580
#define S_OK
Definition: intsafe.h:59
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
#define SUCCEEDED(hr)
Definition: intsafe.h:57

Referenced by BaseRenderer_InputPin_EndOfStream(), and DSoundRender_EndOfStream().

◆ BaseRendererImpl_FindPin()

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

Definition at line 421 of file renderer.c.

422 {
424 
425  TRACE("(%p)->(%s,%p)\n", This, debugstr_w(Id), ppPin);
426 
427  if (!Id || !ppPin)
428  return E_POINTER;
429 
431  {
432  *ppPin = &This->pInputPin->pin.IPin_iface;
433  IPin_AddRef(*ppPin);
434  return S_OK;
435  }
436  *ppPin = NULL;
437  return VFW_E_NOT_FOUND;
438 }
int WINAPI lstrcmpiW(LPCWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:194
DWORD Id
#define debugstr_w
Definition: kernel32.h:32
smooth NULL
Definition: ftsmooth.c:416
#define VFW_E_NOT_FOUND
Definition: vfwmsgs.h:61
static BaseRenderer * impl_from_IBaseFilter(IBaseFilter *iface)
Definition: renderer.c:41
#define TRACE(s)
Definition: solgame.cpp:4
static const WCHAR wcsInputPinName[]
Definition: renderer.c:33
#define S_OK
Definition: intsafe.h:59
static const WCHAR wcsAltInputPinName[]
Definition: renderer.c:34
#define E_POINTER
Definition: winerror.h:2365

◆ BaseRendererImpl_GetState()

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

Definition at line 550 of file renderer.c.

551 {
552  HRESULT hr;
554 
555  TRACE("(%p)->(%d, %p)\n", This, dwMilliSecsTimeout, pState);
556 
557  if (WaitForSingleObject(This->evComplete, dwMilliSecsTimeout) == WAIT_TIMEOUT)
559  else
560  hr = S_OK;
561 
562  BaseFilterImpl_GetState(iface, dwMilliSecsTimeout, pState);
563 
564  return hr;
565 }
HRESULT hr
Definition: shlfolder.c:183
#define VFW_S_STATE_INTERMEDIATE
Definition: vfwmsgs.h:21
HRESULT WINAPI BaseFilterImpl_GetState(IBaseFilter *iface, DWORD dwMilliSecsTimeout, FILTER_STATE *pState)
Definition: filter.c:87
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
Definition: synch.c:82
static BaseRenderer * impl_from_IBaseFilter(IBaseFilter *iface)
Definition: renderer.c:41
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
#define WAIT_TIMEOUT
Definition: dderror.h:14
#define S_OK
Definition: intsafe.h:59

◆ BaseRendererImpl_Pause()

HRESULT WINAPI BaseRendererImpl_Pause ( IBaseFilter iface)

Definition at line 506 of file renderer.c.

507 {
509 
510  TRACE("(%p)->()\n", This);
511 
512  EnterCriticalSection(&This->csRenderLock);
513  {
514  if (This->filter.state != State_Paused)
515  {
516  if (This->filter.state == State_Stopped)
517  {
518  if (This->pInputPin->pin.pConnectedTo)
519  ResetEvent(This->evComplete);
520  This->pInputPin->end_of_stream = FALSE;
521  }
522  else if (This->pFuncsTable->pfnOnStopStreaming)
523  This->pFuncsTable->pfnOnStopStreaming(This);
524 
525  if (This->filter.state == State_Stopped)
527  ResetEvent(This->RenderEvent);
528  This->filter.state = State_Paused;
529  }
530  }
531  ResetEvent(This->ThreadSignal);
532  LeaveCriticalSection(&This->csRenderLock);
533 
534  return S_OK;
535 }
HRESULT WINAPI BaseRendererImpl_ClearPendingSample(BaseRenderer *iface)
Definition: renderer.c:609
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
static BaseRenderer * impl_from_IBaseFilter(IBaseFilter *iface)
Definition: renderer.c:41
#define TRACE(s)
Definition: solgame.cpp:4
#define S_OK
Definition: intsafe.h:59
BOOL WINAPI DECLSPEC_HOTPATCH ResetEvent(IN HANDLE hEvent)
Definition: synch.c:714
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)

◆ BaseRendererImpl_QueryInterface()

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

Definition at line 280 of file renderer.c.

281 {
283 
284  if (IsEqualIID(riid, &IID_IMediaSeeking) || IsEqualIID(riid, &IID_IMediaPosition))
285  return IUnknown_QueryInterface(This->pPosition, riid, ppv);
286  else if (IsEqualIID(riid, &IID_IQualityControl))
287  {
288  *ppv = &This->qcimpl->IQualityControl_iface;
289  IUnknown_AddRef((IUnknown *)(*ppv));
290  return S_OK;
291  }
292  else
293  return BaseFilterImpl_QueryInterface(iface, riid, ppv);
294 }
REFIID riid
Definition: precomp.h:44
REFIID LPVOID * ppv
Definition: atlbase.h:39
HRESULT WINAPI BaseFilterImpl_QueryInterface(IBaseFilter *iface, REFIID riid, LPVOID *ppv)
Definition: filter.c:37
static BaseRenderer * impl_from_IBaseFilter(IBaseFilter *iface)
Definition: renderer.c:41
#define S_OK
Definition: intsafe.h:59
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95

Referenced by DSoundRender_QueryInterface(), NullRendererInner_QueryInterface(), VideoRendererInner_QueryInterface(), and VMR9Inner_QueryInterface().

◆ BaseRendererImpl_Receive()

HRESULT WINAPI BaseRendererImpl_Receive ( BaseRenderer This,
IMediaSample pSample 
)

Definition at line 329 of file renderer.c.

330 {
331  HRESULT hr = S_OK;
332  REFERENCE_TIME start, stop;
333  AM_MEDIA_TYPE *pmt;
334 
335  TRACE("(%p)->%p\n", This, pSample);
336 
337  if (This->pInputPin->end_of_stream || This->pInputPin->flushing)
338  return S_FALSE;
339 
340  if (This->filter.state == State_Stopped)
341  return VFW_E_WRONG_STATE;
342 
343  if (IMediaSample_GetMediaType(pSample, &pmt) == S_OK)
344  {
345  if (FAILED(This->pFuncsTable->pfnCheckMediaType(This, pmt)))
346  {
348  }
349  }
350 
351  This->pMediaSample = pSample;
352  IMediaSample_AddRef(pSample);
353 
354  if (This->pFuncsTable->pfnPrepareReceive)
355  hr = This->pFuncsTable->pfnPrepareReceive(This, pSample);
356  if (FAILED(hr))
357  {
358  if (hr == VFW_E_SAMPLE_REJECTED)
359  return S_OK;
360  else
361  return hr;
362  }
363 
364  if (This->pFuncsTable->pfnPrepareRender)
365  This->pFuncsTable->pfnPrepareRender(This);
366 
367  EnterCriticalSection(&This->csRenderLock);
368  if ( This->filter.state == State_Paused )
369  {
370  if (This->pFuncsTable->pfnOnReceiveFirstSample)
371  This->pFuncsTable->pfnOnReceiveFirstSample(This, pSample);
372 
373  SetEvent(This->evComplete);
374  }
375 
376  /* Wait for render Time */
377  if (SUCCEEDED(IMediaSample_GetTime(pSample, &start, &stop)))
378  {
379  hr = S_FALSE;
381  if (This->pFuncsTable->pfnShouldDrawSampleNow)
382  hr = This->pFuncsTable->pfnShouldDrawSampleNow(This, pSample, &start, &stop);
383 
384  if (hr == S_OK)
385  ;/* Do not wait: drop through */
386  else if (hr == S_FALSE)
387  {
388  if (This->pFuncsTable->pfnOnWaitStart)
389  This->pFuncsTable->pfnOnWaitStart(This);
390 
391  LeaveCriticalSection(&This->csRenderLock);
392  hr = QualityControlRender_WaitFor(This->qcimpl, pSample, This->RenderEvent);
393  EnterCriticalSection(&This->csRenderLock);
394 
395  if (This->pFuncsTable->pfnOnWaitEnd)
396  This->pFuncsTable->pfnOnWaitEnd(This);
397  }
398  else
399  {
400  LeaveCriticalSection(&This->csRenderLock);
401  /* Drop Sample */
402  return S_OK;
403  }
404  }
405 
406  if (SUCCEEDED(hr))
407  {
409  hr = This->pFuncsTable->pfnDoRenderSample(This, pSample);
411  }
412 
414 
416  LeaveCriticalSection(&This->csRenderLock);
417 
418  return hr;
419 }
HRESULT QualityControlRender_WaitFor(QualityControlImpl *This, IMediaSample *sample, HANDLE ev)
HRESULT WINAPI BaseRendererImpl_ClearPendingSample(BaseRenderer *iface)
Definition: renderer.c:609
HRESULT hr
Definition: shlfolder.c:183
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
Definition: synch.c:733
void QualityControlRender_DoQOS(QualityControlImpl *priv)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
void QualityControlRender_BeginRender(QualityControlImpl *This)
#define S_FALSE
Definition: winerror.h:2357
HRESULT WINAPI RendererPosPassThru_RegisterMediaTime(IUnknown *iface, REFERENCE_TIME start)
Definition: pospass.c:601
void QualityControlRender_EndRender(QualityControlImpl *This)
#define TRACE(s)
Definition: solgame.cpp:4
LONGLONG REFERENCE_TIME
Definition: dmusicks.h:9
LONG HRESULT
Definition: typedefs.h:77
#define VFW_E_TYPE_NOT_ACCEPTED
Definition: vfwmsgs.h:81
#define S_OK
Definition: intsafe.h:59
GLuint start
Definition: gl.h:1545
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
#define VFW_E_WRONG_STATE
Definition: vfwmsgs.h:78
#define VFW_E_SAMPLE_REJECTED
Definition: vfwmsgs.h:82
#define SUCCEEDED(hr)
Definition: intsafe.h:57

Referenced by BaseRenderer_Receive().

◆ BaseRendererImpl_Release()

ULONG WINAPI BaseRendererImpl_Release ( IBaseFilter iface)

Definition at line 296 of file renderer.c.

297 {
299  ULONG refCount = InterlockedDecrement(&This->filter.refCount);
300 
301  if (!refCount)
302  {
303  IPin *pConnectedTo;
304 
305  if (SUCCEEDED(IPin_ConnectedTo(&This->pInputPin->pin.IPin_iface, &pConnectedTo)))
306  {
307  IPin_Disconnect(pConnectedTo);
308  IPin_Release(pConnectedTo);
309  }
310  IPin_Disconnect(&This->pInputPin->pin.IPin_iface);
311  IPin_Release(&This->pInputPin->pin.IPin_iface);
312 
313  if (This->pPosition)
314  IUnknown_Release(This->pPosition);
315 
316  This->csRenderLock.DebugInfo->Spare[0] = 0;
317  DeleteCriticalSection(&This->csRenderLock);
318 
320  CloseHandle(This->evComplete);
321  CloseHandle(This->ThreadSignal);
322  CloseHandle(This->RenderEvent);
324  BaseFilter_Destroy(&This->filter);
325  }
326  return refCount;
327 }
#define CloseHandle
Definition: compat.h:406
HRESULT WINAPI BaseRendererImpl_ClearPendingSample(BaseRenderer *iface)
Definition: renderer.c:609
void QualityControlImpl_Destroy(QualityControlImpl *This)
static BaseRenderer * impl_from_IBaseFilter(IBaseFilter *iface)
Definition: renderer.c:41
HRESULT WINAPI BaseFilter_Destroy(BaseFilter *This)
Definition: filter.c:214
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
#define InterlockedDecrement
Definition: armddk.h:52
Definition: axcore.idl:91
unsigned int ULONG
Definition: retypes.h:1
#define SUCCEEDED(hr)
Definition: intsafe.h:57

Referenced by DSoundRender_create(), DSoundRender_Release(), NullRenderer_create(), NullRendererInner_Release(), VideoRenderer_create(), VideoRendererInner_Release(), VMR9Inner_Release(), and vmr_create().

◆ BaseRendererImpl_Run()

HRESULT WINAPI BaseRendererImpl_Run ( IBaseFilter iface,
REFERENCE_TIME  tStart 
)

Definition at line 461 of file renderer.c.

462 {
463  HRESULT hr = S_OK;
465  TRACE("(%p)->(%s)\n", This, wine_dbgstr_longlong(tStart));
466 
467  EnterCriticalSection(&This->csRenderLock);
468  This->filter.rtStreamStart = tStart;
469  if (This->filter.state == State_Running)
470  goto out;
471 
472  SetEvent(This->evComplete);
473  ResetEvent(This->ThreadSignal);
474 
475  if (This->pInputPin->pin.pConnectedTo)
476  {
477  This->pInputPin->end_of_stream = FALSE;
478  }
479  else if (This->filter.filterInfo.pGraph)
480  {
481  IMediaEventSink *pEventSink;
482  hr = IFilterGraph_QueryInterface(This->filter.filterInfo.pGraph, &IID_IMediaEventSink, (LPVOID*)&pEventSink);
483  if (SUCCEEDED(hr))
484  {
485  hr = IMediaEventSink_Notify(pEventSink, EC_COMPLETE, S_OK, (LONG_PTR)This);
486  IMediaEventSink_Release(pEventSink);
487  }
488  hr = S_OK;
489  }
490  if (SUCCEEDED(hr))
491  {
492  QualityControlRender_Start(This->qcimpl, This->filter.rtStreamStart);
493  if (This->pFuncsTable->pfnOnStartStreaming)
494  This->pFuncsTable->pfnOnStartStreaming(This);
495  if (This->filter.state == State_Stopped)
497  SetEvent(This->RenderEvent);
498  This->filter.state = State_Running;
499  }
500 out:
501  LeaveCriticalSection(&This->csRenderLock);
502 
503  return hr;
504 }
HRESULT WINAPI BaseRendererImpl_ClearPendingSample(BaseRenderer *iface)
Definition: renderer.c:609
HRESULT hr
Definition: shlfolder.c:183
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
Definition: synch.c:733
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
void QualityControlRender_Start(QualityControlImpl *This, REFERENCE_TIME tStart)
#define EC_COMPLETE
Definition: evcode.h:17
static BaseRenderer * impl_from_IBaseFilter(IBaseFilter *iface)
Definition: renderer.c:41
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
static FILE * out
Definition: regtests2xml.c:44
#define S_OK
Definition: intsafe.h:59
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
BOOL WINAPI DECLSPEC_HOTPATCH ResetEvent(IN HANDLE hEvent)
Definition: synch.c:714
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
Definition: compat.h:41
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ BaseRendererImpl_SetSyncSource()

HRESULT WINAPI BaseRendererImpl_SetSyncSource ( IBaseFilter iface,
IReferenceClock clock 
)

Definition at line 537 of file renderer.c.

538 {
540  HRESULT hr;
541 
542  EnterCriticalSection(&This->filter.csFilter);
545  LeaveCriticalSection(&This->filter.csFilter);
546  return hr;
547 }
HRESULT WINAPI BaseFilterImpl_SetSyncSource(IBaseFilter *iface, IReferenceClock *pClock)
Definition: filter.c:101
HRESULT hr
Definition: shlfolder.c:183
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
static BaseRenderer * impl_from_IBaseFilter(IBaseFilter *iface)
Definition: renderer.c:41
LONG HRESULT
Definition: typedefs.h:77
_Check_return_ _CRTIMP clock_t __cdecl clock(void)
Definition: clock.c:23
void QualityControlRender_SetClock(QualityControlImpl *This, IReferenceClock *clock)
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)

◆ BaseRendererImpl_Stop()

HRESULT WINAPI BaseRendererImpl_Stop ( IBaseFilter iface)

Definition at line 440 of file renderer.c.

441 {
443 
444  TRACE("(%p)->()\n", This);
445 
446  EnterCriticalSection(&This->csRenderLock);
447  {
449  if (This->pFuncsTable->pfnOnStopStreaming)
450  This->pFuncsTable->pfnOnStopStreaming(This);
451  This->filter.state = State_Stopped;
452  SetEvent(This->evComplete);
453  SetEvent(This->ThreadSignal);
454  SetEvent(This->RenderEvent);
455  }
456  LeaveCriticalSection(&This->csRenderLock);
457 
458  return S_OK;
459 }
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
Definition: synch.c:733
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
static BaseRenderer * impl_from_IBaseFilter(IBaseFilter *iface)
Definition: renderer.c:41
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT WINAPI RendererPosPassThru_ResetMediaTime(IUnknown *iface)
Definition: pospass.c:611
#define S_OK
Definition: intsafe.h:59
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)

◆ impl_BaseInputPin_from_IPin()

static BaseInputPin* impl_BaseInputPin_from_IPin ( IPin iface)
inlinestatic

Definition at line 36 of file renderer.c.

37 {
38  return CONTAINING_RECORD(iface, BaseInputPin, pin.IPin_iface);
39 }
Definition: regsvr.c:103
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)
Definition: Messaging.c:560

Referenced by BaseRenderer_InputPin_BeginFlush(), BaseRenderer_InputPin_Disconnect(), BaseRenderer_InputPin_EndFlush(), BaseRenderer_InputPin_EndOfStream(), and BaseRenderer_InputPin_ReceiveConnection().

◆ impl_from_BaseFilter()

static BaseRenderer* impl_from_BaseFilter ( BaseFilter iface)
inlinestatic

Definition at line 46 of file renderer.c.

47 {
48  return CONTAINING_RECORD(iface, BaseRenderer, filter);
49 }
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)
Definition: Messaging.c:560
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
Definition: glext.h:7005

Referenced by BaseRenderer_GetPin().

◆ impl_from_IBaseFilter()

static BaseRenderer* impl_from_IBaseFilter ( IBaseFilter iface)
inlinestatic

Definition at line 41 of file renderer.c.

42 {
43  return CONTAINING_RECORD(iface, BaseRenderer, filter.IBaseFilter_iface);
44 }
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)
Definition: Messaging.c:560
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
Definition: glext.h:7005

Referenced by BaseRenderer_Input_CheckMediaType(), BaseRenderer_InputPin_BeginFlush(), BaseRenderer_InputPin_Disconnect(), BaseRenderer_InputPin_EndFlush(), BaseRenderer_InputPin_EndOfStream(), BaseRenderer_InputPin_ReceiveConnection(), BaseRenderer_Receive(), BaseRendererImpl_FindPin(), BaseRendererImpl_GetState(), BaseRendererImpl_Pause(), BaseRendererImpl_QueryInterface(), BaseRendererImpl_Release(), BaseRendererImpl_Run(), BaseRendererImpl_SetSyncSource(), and BaseRendererImpl_Stop().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( strmbase  )

Variable Documentation

◆ BaseRenderer_InputPin_Vtbl

const IPinVtbl BaseRenderer_InputPin_Vtbl
static
Initial value:
=
{
}
HRESULT WINAPI BaseInputPinImpl_QueryInterface(IPin *iface, REFIID riid, LPVOID *ppv)
Definition: pin.c:838
HRESULT WINAPI BaseInputPinImpl_Connect(IPin *iface, IPin *pConnector, const AM_MEDIA_TYPE *pmt)
Definition: pin.c:881
static HRESULT WINAPI BaseRenderer_InputPin_ReceiveConnection(IPin *iface, IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
Definition: renderer.c:59
HRESULT WINAPI BasePinImpl_QueryDirection(IPin *iface, PIN_DIRECTION *pPinDir)
Definition: pin.c:285
HRESULT WINAPI BasePinImpl_ConnectedTo(IPin *iface, IPin **ppPin)
Definition: pin.c:222
HRESULT WINAPI BasePinImpl_EnumMediaTypes(IPin *iface, IEnumMediaTypes **ppEnum)
Definition: pin.c:318
ULONG WINAPI BaseInputPinImpl_Release(IPin *iface)
Definition: pin.c:868
static HRESULT WINAPI BaseRenderer_InputPin_Disconnect(IPin *iface)
Definition: renderer.c:79
static HRESULT WINAPI BaseRenderer_InputPin_EndFlush(IPin *iface)
Definition: renderer.c:150
HRESULT WINAPI BasePinImpl_QueryPinInfo(IPin *iface, PIN_INFO *pInfo)
Definition: pin.c:273
HRESULT WINAPI BasePinImpl_QueryId(IPin *iface, LPWSTR *Id)
Definition: pin.c:296
static HRESULT WINAPI BaseRenderer_InputPin_BeginFlush(IPin *iface)
Definition: renderer.c:125
HRESULT WINAPI BasePinImpl_QueryInternalConnections(IPin *iface, IPin **apPin, ULONG *cPin)
Definition: pin.c:329
static HRESULT WINAPI BaseRenderer_InputPin_EndOfStream(IPin *iface)
Definition: renderer.c:100
HRESULT WINAPI BaseInputPinImpl_QueryAccept(IPin *iface, const AM_MEDIA_TYPE *pmt)
Definition: pin.c:935
ULONG WINAPI BasePinImpl_AddRef(IPin *iface)
Definition: pin.c:187
HRESULT WINAPI BaseInputPinImpl_NewSegment(IPin *iface, REFERENCE_TIME tStart, REFERENCE_TIME tStop, double dRate)
Definition: pin.c:1015
HRESULT WINAPI BasePinImpl_ConnectionMediaType(IPin *iface, AM_MEDIA_TYPE *pmt)
Definition: pin.c:248

Definition at line 175 of file renderer.c.

Referenced by BaseRenderer_Init().

◆ input_BaseInputFuncTable

const BaseInputPinFuncTable input_BaseInputFuncTable
static
Initial value:
= {
{
},
}
HRESULT WINAPI BasePinImpl_GetMediaType(BasePin *This, int iPosition, AM_MEDIA_TYPE *pmt)
Definition: pin.c:175
smooth NULL
Definition: ftsmooth.c:416
static HRESULT WINAPI BaseRenderer_Receive(BaseInputPin *pin, IMediaSample *pSample)
Definition: renderer.c:219
static HRESULT WINAPI BaseRenderer_Input_CheckMediaType(BasePin *pin, const AM_MEDIA_TYPE *pmt)
Definition: renderer.c:213
LONG WINAPI BasePinImpl_GetMediaTypeVersion(BasePin *This)
Definition: pin.c:182

Definition at line 230 of file renderer.c.

Referenced by BaseRenderer_Init().

◆ Renderer_QualityControl_Vtbl

const IQualityControlVtbl Renderer_QualityControl_Vtbl
static
Initial value:
= {
}
HRESULT WINAPI QualityControlImpl_QueryInterface(IQualityControl *iface, REFIID riid, void **ppv)
ULONG WINAPI QualityControlImpl_Release(IQualityControl *iface)
HRESULT WINAPI QualityControlImpl_SetSink(IQualityControl *iface, IQualityControl *tonotify)
ULONG WINAPI QualityControlImpl_AddRef(IQualityControl *iface)
HRESULT WINAPI QualityControlImpl_Notify(IQualityControl *iface, IBaseFilter *sender, Quality qm)

Definition at line 51 of file renderer.c.

Referenced by BaseRenderer_Init().

◆ RendererBaseFilterFuncTable

const BaseFilterFuncTable RendererBaseFilterFuncTable
static
Initial value:
= {
}
static IPin *WINAPI BaseRenderer_GetPin(BaseFilter *iface, int pos)
Definition: renderer.c:197
static LONG WINAPI BaseRenderer_GetPinCount(BaseFilter *iface)
Definition: renderer.c:208

Definition at line 225 of file renderer.c.

Referenced by BaseRenderer_Init().

◆ wcsAltInputPinName

const WCHAR wcsAltInputPinName[] = {'I','n',0}
static

Definition at line 34 of file renderer.c.

Referenced by BaseRendererImpl_FindPin().

◆ wcsInputPinName

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

Definition at line 33 of file renderer.c.

Referenced by BaseRenderer_Init(), and BaseRendererImpl_FindPin().