Hi all. So I'm writing a direct-show camera capture class for
WindowsMobile 5. It's only purpose is to establish the filter graph
to capture a camera image and save it to a raw buffer.
So I intend to create a filter graph and attach a camera capture
filter and a custom VideoRenderer filter that I will be creating. The
VideoRenderer won't do anything except copy the captured frame to a
circular queue of raw buffers.
Everything was compiling and working up until I tried to get the
video
renderer to link. Here is my class decleration:
class TVideoRenderer : public CBaseVideoRenderer
{
//
// Member variables
private:
// GUID used to identify the direct show video renederer
static const GUID ms_guidVideoRenderer;
TCaptureDevice& m_rCapDevice;
DWORD m_dwPitch;
DWORD m_dwWidth;
DWORD m_dwHeight;
//
// Construction / Destruction
public:
TVideoRenderer(IUnknown* pUnk, TCaptureDevice& devCamera,
HRESULT*
phResult);
~TVideoRenderer();
//
// Public member functions
public:
HRESULT CheckMediaType(const CMediaType* kpMediaType);
HRESULT SetMediaType(const CMediaType* kpMediaType);
HRESULT DoRenderSample(IMediaSample* pMediaSample);
};
But when I go to link, I get errors galore. I've included the
following libs into my project:
dmoguids.lib
strmiids.lib
strmbase.lib
Uuid.lib
Here are the link errors.. if anyone could point me in the right
direction it would be so much appreciated!
CaptureDevice.obj : error LNK2019: unresolved external symbol
"public:
__cdecl CBaseVideoRenderer::CBaseVideoRenderer(struct _GUID const
&,wchar_t *,struct IUnknown *,long *)" (??
0CBaseVideoRenderer@@QAA@ABU_GUID@@PA_WPAUIUnknown@@PAJ@Z) referenced
in function "public: __cdecl
TCaptureDevice::TVideoRenderer::TVideoRenderer(struct IUnknown
*,class
TCaptureDevice &,long *)" (??
0TVideoRenderer@TCaptureDevice@@QAA@PAUIUnknown@@AAV1@PAJ@Z)
CaptureDevice.obj : error LNK2001: unresolved external symbol
"public:
virtual unsigned long __cdecl
CBaseFilter::NonDelegatingRelease(void)" (?
NonDelegatingRelease@CBaseFilter@@UAAKXZ)
CaptureDevice.obj : error LNK2001: unresolved external symbol
"public:
virtual long __cdecl
TCaptureDevice::TVideoRenderer::SetMediaType(class CMediaType const
*)" (?
SetMediaType@TVideoRenderer@TCaptureDevice@@UAAJPBVCMediaType@@@Z)
CaptureDevice.obj : error LNK2001: unresolved external symbol
"public:
virtual long __cdecl
TCaptureDevice::TVideoRenderer::DoRenderSample(struct IMediaSample
*)" (?
DoRenderSample@TVideoRenderer@TCaptureDevice@@UAAJPAUIMediaSample@@@Z)
CaptureDevice.obj : error LNK2001: unresolved external symbol
"public:
virtual long __cdecl
TCaptureDevice::TVideoRenderer::CheckMediaType(class CMediaType const
*)" (?
CheckMediaType@TVideoRenderer@TCaptureDevice@@UAAJPBVCMediaType@@@Z)
CaptureDevice.obj : error LNK2001: unresolved external symbol
"public:
virtual long __cdecl CBaseRenderer::FindPin(wchar_t const *,struct
IPin * *)" (?FindPin@CBaseRenderer@@UAAJPB_WPAPAUIPin@@@Z)
CaptureDevice.obj : error LNK2001: unresolved external symbol
"public:
virtual long __cdecl CBaseVideoRenderer::JoinFilterGraph(struct
IFilterGraph *,wchar_t const *)" (?
JoinFilterGraph@CBaseVideoRenderer@@UAAJPAUIFilterGraph@@PB_W@Z)
CaptureDevice.obj : error LNK2001: unresolved external symbol
"public:
virtual long __cdecl CBaseFilter::QueryVendorInfo(wchar_t * *)" (?
QueryVendorInfo@CBaseFilter@@UAAJPAPA_W@Z)
strmbase.lib(renbase.obj) : error LNK2019: unresolved external symbol
timeKillEvent referenced in function "public: void __cdecl
CBaseRenderer::ResetEndOfStreamTimer(void)" (?
ResetEndOfStreamTimer@CBaseRenderer@@QAAXXZ)
strmbase.lib(renbase.obj) : error LNK2019: unresolved external symbol
timeBeginPeriod referenced in function "public: virtual long __cdecl
CBaseRenderer::StartStreaming(void)" (?
StartStreaming@CBaseRenderer@@UAAJXZ)
strmbase.lib(renbase.obj) : error LNK2019: unresolved external symbol
timeEndPeriod referenced in function "public: virtual long __cdecl
CBaseRenderer::StopStreaming(void)" (?
StopStreaming@CBaseRenderer@@UAAJXZ)
strmbase.lib(renbase.obj) : error LNK2019: unresolved external symbol
timeSetEvent referenced in function "public: virtual long __cdecl
CBaseRenderer::SendEndOfStream(void)" (?
SendEndOfStream@CBaseRenderer@@UAAJXZ)