37 HRESULT BreakConnect();
38 HRESULT CompleteConnect(IPin *pReceivePin);
46 STDMETHODIMP QueryId(LPWSTR *Id);
47 STDMETHODIMP EndOfStream();
48 STDMETHODIMP BeginFlush();
49 STDMETHODIMP EndFlush();
50 STDMETHODIMP Receive(IMediaSample *pMediaSample);
53 IMemAllocator
inline *Allocator()
const 67 friend void CALLBACK EndOfStreamTimer(UINT uID,
80 IMediaSample *m_pMediaSample;
86 IQualityControl * m_pQSink;
87 BOOL m_bRepaintStatus;
89 volatile BOOL m_bInReceive;
91 REFERENCE_TIME m_SignalTime;
92 UINT m_EndOfStreamTimer;
109 virtual HRESULT GetMediaPositionInterface(REFIID riid,
void **ppv);
110 STDMETHODIMP NonDelegatingQueryInterface(REFIID,
void **);
112 virtual HRESULT SourceThreadCanWait(BOOL bCanWait);
116 void DisplayRendererState();
118 virtual HRESULT WaitForRenderTime();
119 virtual HRESULT CompleteStateChange(FILTER_STATE OldState);
123 BOOL IsEndOfStream() {
return m_bEOS; };
124 BOOL IsEndOfStreamDelivered() {
return m_bEOSDelivered; };
125 BOOL IsStreaming() {
return m_bStreaming; };
126 void SetAbortSignal(BOOL bAbort) { m_bAbort = bAbort; };
127 virtual void OnReceiveFirstSample(IMediaSample *pMediaSample) { };
128 CAMEvent *GetRenderEvent() {
return &m_RenderEvent; };
132 void Ready() { m_evComplete.Set(); };
133 void NotReady() { m_evComplete.Reset(); };
134 BOOL CheckReady() {
return m_evComplete.Check(); };
136 virtual int GetPinCount();
138 FILTER_STATE GetRealState();
140 void SendNotifyWindow(IPin *pPin,HWND hwnd);
141 BOOL OnDisplayChange();
142 void SetRepaintStatus(BOOL bRepaint);
147 STDMETHODIMP Pause();
148 STDMETHODIMP Run(REFERENCE_TIME StartTime);
149 STDMETHODIMP GetState(DWORD dwMSecs,FILTER_STATE *State);
150 STDMETHODIMP FindPin(LPCWSTR Id, IPin **ppPin);
154 virtual void OnRenderStart(IMediaSample *pMediaSample);
155 virtual void OnRenderEnd(IMediaSample *pMediaSample);
156 virtual HRESULT OnStartStreaming() {
return NOERROR; };
157 virtual HRESULT OnStopStreaming() {
return NOERROR; };
158 virtual void OnWaitStart() { };
159 virtual void OnWaitEnd() { };
160 virtual void PrepareRender() { };
163 REFERENCE_TIME m_trRenderStart;
166 int m_idBaseRenderTime;
167 int m_idBaseAccuracy;
172 virtual BOOL ScheduleSample(IMediaSample *pMediaSample);
173 virtual HRESULT GetSampleTimes(IMediaSample *pMediaSample,
174 REFERENCE_TIME *pStartTime,
175 REFERENCE_TIME *pEndTime);
177 virtual HRESULT ShouldDrawSampleNow(IMediaSample *pMediaSample,
178 REFERENCE_TIME *ptrStart,
179 REFERENCE_TIME *ptrEnd);
183 void TimerCallback();
184 void ResetEndOfStreamTimer();
185 HRESULT NotifyEndOfStream();
186 virtual HRESULT SendEndOfStream();
187 virtual HRESULT ResetEndOfStream();
188 virtual HRESULT EndOfStream();
192 void SignalTimerFired();
193 virtual HRESULT CancelNotification();
194 virtual HRESULT ClearPendingSample();
198 virtual HRESULT Active();
199 virtual HRESULT Inactive();
200 virtual HRESULT StartStreaming();
201 virtual HRESULT StopStreaming();
202 virtual HRESULT BeginFlush();
203 virtual HRESULT EndFlush();
207 virtual HRESULT BreakConnect();
208 virtual HRESULT SetMediaType(
const CMediaType *pmt);
209 virtual HRESULT CompleteConnect(IPin *pReceivePin);
213 virtual HRESULT PrepareReceive(IMediaSample *pMediaSample);
214 virtual HRESULT Receive(IMediaSample *pMediaSample);
215 virtual BOOL HaveCurrentSample();
216 virtual IMediaSample *GetCurrentSample();
217 virtual HRESULT Render(IMediaSample *pMediaSample);
220 virtual HRESULT DoRenderSample(IMediaSample *pMediaSample) PURE;
221 virtual HRESULT CheckMediaType(
const CMediaType *) PURE;
224 void WaitForReceiveToComplete();
248 #define DO_MOVING_AVG(avg,obs) (avg = (1024*obs + (AVGPERIOD-1)*avg)/AVGPERIOD) 253 public IQualityControl
279 BOOL m_bDrawLateFrames;
283 BOOL m_bSupplierHandlingQuality;
355 int m_idFrameAccuracy;
366 REFERENCE_TIME m_trRememberStampForPerf;
369 REFERENCE_TIME m_trRememberFrameForPerf;
380 int m_cFramesDropped;
386 LONGLONG m_iSumSqAcc;
389 REFERENCE_TIME m_trLastDraw;
390 LONGLONG m_iSumSqFrameTime;
391 LONGLONG m_iSumFrameTime;
401 int m_tStreamingStart;
405 LONGLONG m_llTimeOffset;
420 STDMETHODIMP SetSink( IQualityControl * piqc);
421 STDMETHODIMP Notify( IBaseFilter * pSelf, Quality q);
425 void OnRenderStart(IMediaSample *pMediaSample);
426 void OnRenderEnd(IMediaSample *pMediaSample);
429 HRESULT OnStartStreaming();
430 HRESULT OnStopStreaming();
435 void PreparePerformanceData(
int trLate,
int trFrame);
436 virtual void RecordFrameLateness(
int trLate,
int trFrame);
437 virtual void OnDirectRender(IMediaSample *pMediaSample);
438 virtual HRESULT ResetStreamingTimes();
439 BOOL ScheduleSample(IMediaSample *pMediaSample);
440 HRESULT ShouldDrawSampleNow(IMediaSample *pMediaSample,
441 REFERENCE_TIME *ptrStart,
442 REFERENCE_TIME *ptrEnd);
444 virtual HRESULT SendQuality(REFERENCE_TIME trLate, REFERENCE_TIME trRealStream);
445 STDMETHODIMP JoinFilterGraph(IFilterGraph * pGraph, LPCWSTR pName);
465 STDMETHODIMP get_FramesDroppedInRenderer(
int *cFramesDropped);
466 STDMETHODIMP get_FramesDrawn(
int *pcFramesDrawn);
467 STDMETHODIMP get_AvgFrameRate(
int *piAvgFrameRate);
468 STDMETHODIMP get_Jitter(
int *piJitter);
469 STDMETHODIMP get_AvgSyncOffset(
int *piAvg);
470 STDMETHODIMP get_DevSyncOffset(
int *piDev);
475 STDMETHODIMP NonDelegatingQueryInterface(REFIID riid,VOID **ppv);
478 #endif // __RENBASE__ Definition: amfilter.h:331
Definition: amfilter.h:149
Definition: ctlutil.h:366
Definition: renbase.h:251