2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Network Provider for MPEG2 based networks
4 * FILE: dll/directx/msdvbnp/networkprovider.cpp
5 * PURPOSE: IBDA_NetworkProvider interface
7 * PROGRAMMERS: Johannes Anderwald (janderwald@reactos.org)
11 class CNetworkProvider
: public IBaseFilter
,
13 public IBDA_NetworkProvider
16 STDMETHODIMP
QueryInterface( REFIID InterfaceId
, PVOID
* Interface
);
18 STDMETHODIMP_(ULONG
) AddRef()
20 InterlockedIncrement(&m_Ref
);
23 STDMETHODIMP_(ULONG
) Release()
25 InterlockedDecrement(&m_Ref
);
34 // IBaseFilter methods
35 HRESULT STDMETHODCALLTYPE
GetClassID(CLSID
*pClassID
);
36 HRESULT STDMETHODCALLTYPE
Stop( void);
37 HRESULT STDMETHODCALLTYPE
Pause( void);
38 HRESULT STDMETHODCALLTYPE
Run(REFERENCE_TIME tStart
);
39 HRESULT STDMETHODCALLTYPE
GetState(DWORD dwMilliSecsTimeout
, FILTER_STATE
*State
);
40 HRESULT STDMETHODCALLTYPE
SetSyncSource(IReferenceClock
*pClock
);
41 HRESULT STDMETHODCALLTYPE
GetSyncSource(IReferenceClock
**pClock
);
42 HRESULT STDMETHODCALLTYPE
EnumPins(IEnumPins
**ppEnum
);
43 HRESULT STDMETHODCALLTYPE
FindPin(LPCWSTR Id
, IPin
**ppPin
);
44 HRESULT STDMETHODCALLTYPE
QueryFilterInfo(FILTER_INFO
*pInfo
);
45 HRESULT STDMETHODCALLTYPE
JoinFilterGraph(IFilterGraph
*pGraph
, LPCWSTR pName
);
46 HRESULT STDMETHODCALLTYPE
QueryVendorInfo(LPWSTR
*pVendorInfo
);
48 //IAMovieSetup methods
49 HRESULT STDMETHODCALLTYPE
Register( void);
50 HRESULT STDMETHODCALLTYPE
Unregister( void);
52 //IBDA_NetworkProvider methods
53 HRESULT STDMETHODCALLTYPE
PutSignalSource(ULONG ulSignalSource
);
54 HRESULT STDMETHODCALLTYPE
GetSignalSource(ULONG
*pulSignalSource
);
55 HRESULT STDMETHODCALLTYPE
GetNetworkType(GUID
*pguidNetworkType
);
56 HRESULT STDMETHODCALLTYPE
PutTuningSpace(REFGUID guidTuningSpace
);
57 HRESULT STDMETHODCALLTYPE
GetTuningSpace(GUID
*pguidTuingSpace
);
58 HRESULT STDMETHODCALLTYPE
RegisterDeviceFilter(IUnknown
*pUnkFilterControl
, ULONG
*ppvRegisitrationContext
);
59 HRESULT STDMETHODCALLTYPE
UnRegisterDeviceFilter(ULONG pvRegistrationContext
);
61 CNetworkProvider() : m_Ref(0), m_pGraph(0), m_ReferenceClock(0), m_FilterState(State_Stopped
) {m_Pins
[0] = 0;};
62 virtual ~CNetworkProvider(){};
66 IFilterGraph
*m_pGraph
;
67 IReferenceClock
* m_ReferenceClock
;
68 FILTER_STATE m_FilterState
;
74 CNetworkProvider::QueryInterface(
80 if (IsEqualGUID(refiid
, IID_IUnknown
))
82 *Output
= PVOID(this);
83 reinterpret_cast<IUnknown
*>(*Output
)->AddRef();
86 if (IsEqualGUID(refiid
, IID_IBaseFilter
))
88 *Output
= (IBaseFilter
*)(this);
89 reinterpret_cast<IBaseFilter
*>(*Output
)->AddRef();
93 if (IsEqualGUID(refiid
, IID_ITuner
) ||
94 IsEqualGUID(refiid
, IID_IScanningTuner
))
96 // construct scanning tuner
97 return CScanningTunner_fnConstructor(NULL
, refiid
, Output
);
100 WCHAR Buffer
[MAX_PATH
];
102 StringFromCLSID(refiid
, &lpstr
);
103 swprintf(Buffer
, L
"CNetworkProvider::QueryInterface: NoInterface for %s !!!\n", lpstr
);
104 OutputDebugStringW(Buffer
);
105 CoTaskMemFree(lpstr
);
108 return E_NOINTERFACE
;
111 //-------------------------------------------------------------------
112 // IBaseFilter interface
117 CNetworkProvider::GetClassID(
120 OutputDebugStringW(L
"CNetworkProvider::GetClassID : NotImplemented\n");
126 CNetworkProvider::Stop()
128 OutputDebugStringW(L
"CNetworkProvider::Stop : NotImplemented\n");
134 CNetworkProvider::Pause()
136 OutputDebugStringW(L
"CNetworkProvider::Pause : NotImplemented\n");
142 CNetworkProvider::Run(
143 REFERENCE_TIME tStart
)
145 OutputDebugStringW(L
"CNetworkProvider::Run : NotImplemented\n");
151 CNetworkProvider::GetState(
152 DWORD dwMilliSecsTimeout
,
155 *State
= m_FilterState
;
161 CNetworkProvider::SetSyncSource(
162 IReferenceClock
*pClock
)
170 if (m_ReferenceClock
)
172 m_ReferenceClock
->Release();
175 m_ReferenceClock
= pClock
;
181 CNetworkProvider::GetSyncSource(
182 IReferenceClock
**pClock
)
187 if (m_ReferenceClock
)
188 m_ReferenceClock
->AddRef();
190 *pClock
= m_ReferenceClock
;
196 CNetworkProvider::EnumPins(
201 HRESULT hr
= CPin_fnConstructor(NULL
, (IBaseFilter
*)this, IID_IUnknown
, (void**)&m_Pins
[0]);
206 return CEnumPins_fnConstructor(NULL
, 1, m_Pins
, IID_IEnumPins
, (void**)ppEnum
);
211 CNetworkProvider::FindPin(
212 LPCWSTR Id
, IPin
**ppPin
)
214 OutputDebugStringW(L
"CNetworkProvider::FindPin : NotImplemented\n");
221 CNetworkProvider::QueryFilterInfo(
227 pInfo
->achName
[0] = L
'\0';
228 pInfo
->pGraph
= m_pGraph
;
235 CNetworkProvider::JoinFilterGraph(
236 IFilterGraph
*pGraph
,
241 // joining filter graph
250 OutputDebugStringW(L
"CNetworkProvider::JoinFilterGraph\n");
257 CNetworkProvider::QueryVendorInfo(
260 OutputDebugStringW(L
"CNetworkProvider::QueryVendorInfo : NotImplemented\n");
264 //-------------------------------------------------------------------
265 // IAMovieSetup interface
270 CNetworkProvider::Register()
272 OutputDebugStringW(L
"CNetworkProvider::Register : NotImplemented\n");
278 CNetworkProvider::Unregister()
280 OutputDebugStringW(L
"CNetworkProvider::Unregister : NotImplemented\n");
284 //-------------------------------------------------------------------
285 // IBDA_NetworkProvider interface
290 CNetworkProvider::PutSignalSource(
291 ULONG ulSignalSource
)
293 OutputDebugStringW(L
"CNetworkProvider::PutSignalSource : NotImplemented\n");
299 CNetworkProvider::GetSignalSource(
300 ULONG
*pulSignalSource
)
302 OutputDebugStringW(L
"CNetworkProvider::GetSignalSource : NotImplemented\n");
308 CNetworkProvider::GetNetworkType(
309 GUID
*pguidNetworkType
)
311 OutputDebugStringW(L
"CNetworkProvider::GetNetworkType : NotImplemented\n");
317 CNetworkProvider::PutTuningSpace(
318 REFGUID guidTuningSpace
)
320 OutputDebugStringW(L
"CNetworkProvider::PutTuningSpace : NotImplemented\n");
326 CNetworkProvider::GetTuningSpace(
327 GUID
*pguidTuingSpace
)
329 OutputDebugStringW(L
"CNetworkProvider::GetTuningSpace : NotImplemented\n");
335 CNetworkProvider::RegisterDeviceFilter(
336 IUnknown
*pUnkFilterControl
,
337 ULONG
*ppvRegisitrationContext
)
339 OutputDebugStringW(L
"CNetworkProvider::RegisterDeviceFilter : NotImplemented\n");
345 CNetworkProvider::UnRegisterDeviceFilter(ULONG pvRegistrationContext
)
347 OutputDebugStringW(L
"CNetworkProvider::UnRegisterDeviceFilter : NotImplemented\n");
353 CNetworkProvider_fnConstructor(
358 CNetworkProvider
* handler
= new CNetworkProvider();
361 WCHAR Buffer
[MAX_PATH
];
363 StringFromCLSID(riid
, &lpstr
);
364 swprintf(Buffer
, L
"CNetworkProvider_fnConstructor riid %s pUnknown %p\n", lpstr
, pUnknown
);
365 OutputDebugStringW(Buffer
);
369 return E_OUTOFMEMORY
;
371 if (FAILED(handler
->QueryInterface(riid
, ppv
)))
375 return E_NOINTERFACE
;