2 Copyright 2004-2005 Chris Tallon
4 This file is part of VOMP.
6 VOMP is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
11 VOMP is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with VOMP; if not, write to the Free Software
18 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 #ifndef DSSOURCEFILTER_H
22 #define DSSOURCEFILTER_H
25 #include "dssourcepin.h"
27 struct mptype_video_detail{ //here should be all information added the Video Draintarget needs for rendering, to be extended in the future
32 [uuid("EB87AB22-7A95-49c3-8CCE-2F6D61A87009")]
33 class DsSourceFilter: public IBaseFilter {
34 friend class DsSourcePin;
38 virtual int GetPinCount();
39 int getCurrentAudioMediaSample(IMediaSample** ms);
40 int DeliverAudioMediaSample(IMediaSample* ms);
41 int getCurrentVideoMediaSample(IMediaSample** ms);
42 int DeliverVideoMediaSample(IMediaSample* ms);
43 REFERENCE_TIME getStartOffset(){return laststart;};
44 BOOL IsActive() {EnterCriticalSection(&filterlock);
45 FILTER_STATE tempstate=mystate;LeaveCriticalSection(&filterlock);
46 return (tempstate==State_Running) || (tempstate==State_Paused);};
49 virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID id,void ** object);
50 virtual u4 STDMETHODCALLTYPE AddRef();
51 virtual u4 STDMETHODCALLTYPE Release();
53 virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *clsid);
56 virtual HRESULT STDMETHODCALLTYPE EnumPins(IEnumPins **enumar);
57 virtual HRESULT STDMETHODCALLTYPE FindPin(LPCWSTR iden,IPin **pin);
58 virtual HRESULT STDMETHODCALLTYPE QueryFilterInfo(FILTER_INFO *info);
59 virtual HRESULT STDMETHODCALLTYPE JoinFilterGraph(IFilterGraph *graph,LPCWSTR name);
60 virtual HRESULT STDMETHODCALLTYPE QueryVendorInfo(LPWSTR *vendinf);
62 virtual HRESULT STDMETHODCALLTYPE GetState(DWORD timeout,FILTER_STATE *state);
63 virtual HRESULT STDMETHODCALLTYPE SetSyncSource(IReferenceClock *uhr);
64 virtual HRESULT STDMETHODCALLTYPE GetSyncSource(IReferenceClock **uhr);
65 virtual HRESULT STDMETHODCALLTYPE Stop();
66 virtual HRESULT STDMETHODCALLTYPE Pause();
67 virtual HRESULT STDMETHODCALLTYPE Run(REFERENCE_TIME start);
69 DsSourcePin *GetAudioPin() {return audiopin;};
70 DsSourcePin *GetVideoPin() {return videopin;};
73 bool changeAType(int type,IMediaSample* ms);
74 bool changeVType(int type,IMediaSample* ms, void *details);
78 DsSourcePin *audiopin;
79 DsSourcePin *videopin;
80 IFilterGraph* filtergraph;
81 IReferenceClock* clock;
83 REFERENCE_TIME laststart;
84 CRITICAL_SECTION filterlock;