qwda
January 31, 2005, 22:17:03
I've created a wrapper class to contain a worker thread to fire up and stream images to my main application.
Compiling in Debug or Release there's a Microsoft ASSERT kicking in! Looks quite low level and beyond my limited knowledge.
My offending block of code:
if ( aok )
{
DEBUGCOMMENT("DA::DAFWCam::_threadCamWork: Grabber Open: open the first device listed.\n");
aok = pGrabber->openDev( pVidCapDevList->at( 0 ) );
if ( !aok ) strcpy(szErrMsg, "openDev failed.");
}
And what I get in DEBUG Output:
.\DAFWCam.cpp(175) : DA::DAFWCam::_threadCamWork: Grabber Open: open the first device listed.
DShowLib Function : enter Grabber::openDev
Opening device : 1394 Desktop Video Camera
CSourceFilterType : rebind called for 1394 Desktop Video Camera
Building new graph
'MotorolaV3Interactive_Debug.exe': Loaded 'C:\WINDOWS\system32\xpsp2res.dll', No symbols loaded.
First-chance exception at 0x7c81eb33 in MotorolaV3Interactive_Debug.exe: Microsoft C++ exception: DShowLib::CDShowError @ 0x0ae5ece0.
c:\ic 1.5\core\tisudshl\grabberpimpl.cpp(656) : Could not add CLSID_YUVTransform to the filter cache, due to Error = Filter could not be built from CLSID.
CLSID="{4CB4FBB2-1342-48FE-8129-5A7C4706D60C}" pName="YUVTransform" pInstanceName="IAT YUV"
In file : ".\DShowFilter.cpp" at line : 47
.
New graph built
Error value set : No value for this setting is currently available
DShowLib Function : enter Grabber::getAvailableVideoFormats()
DShowLib Function : returns successful Grabber::getAvailableVideoFormats()
CurSink was not yet applied. This may be either, because no valid VideoFormat or MemBufferCollection is set, after you have done that, the sink will be applied.
CurSink was not yet applied. This may be either, because no valid VideoFormat or MemBufferCollection is set, after you have done that, the sink will be applied.
DShowLib Function : returns successful Grabber::openDev
HEAP[MotorolaV3Interactive_Debug.exe]: Invalid Address specified to RtlValidateHeap( 00C50000, 00C4AC10 )
Unhandled exception at 0x7c901230 in MotorolaV3Interactive_Debug.exe: User breakpoint.
and f.y.i.:
bool aok = true;
Grabber* pGrabber = NULL;
char szErrMsg[2048];
Grabber::tVidCapDevListPtr pVidCapDevList = NULL;
Grabber has created okay and returned a list of devices as expected.
Any ideas?
Thanks,
Q
Compiling in Debug or Release there's a Microsoft ASSERT kicking in! Looks quite low level and beyond my limited knowledge.
My offending block of code:
if ( aok )
{
DEBUGCOMMENT("DA::DAFWCam::_threadCamWork: Grabber Open: open the first device listed.\n");
aok = pGrabber->openDev( pVidCapDevList->at( 0 ) );
if ( !aok ) strcpy(szErrMsg, "openDev failed.");
}
And what I get in DEBUG Output:
.\DAFWCam.cpp(175) : DA::DAFWCam::_threadCamWork: Grabber Open: open the first device listed.
DShowLib Function : enter Grabber::openDev
Opening device : 1394 Desktop Video Camera
CSourceFilterType : rebind called for 1394 Desktop Video Camera
Building new graph
'MotorolaV3Interactive_Debug.exe': Loaded 'C:\WINDOWS\system32\xpsp2res.dll', No symbols loaded.
First-chance exception at 0x7c81eb33 in MotorolaV3Interactive_Debug.exe: Microsoft C++ exception: DShowLib::CDShowError @ 0x0ae5ece0.
c:\ic 1.5\core\tisudshl\grabberpimpl.cpp(656) : Could not add CLSID_YUVTransform to the filter cache, due to Error = Filter could not be built from CLSID.
CLSID="{4CB4FBB2-1342-48FE-8129-5A7C4706D60C}" pName="YUVTransform" pInstanceName="IAT YUV"
In file : ".\DShowFilter.cpp" at line : 47
.
New graph built
Error value set : No value for this setting is currently available
DShowLib Function : enter Grabber::getAvailableVideoFormats()
DShowLib Function : returns successful Grabber::getAvailableVideoFormats()
CurSink was not yet applied. This may be either, because no valid VideoFormat or MemBufferCollection is set, after you have done that, the sink will be applied.
CurSink was not yet applied. This may be either, because no valid VideoFormat or MemBufferCollection is set, after you have done that, the sink will be applied.
DShowLib Function : returns successful Grabber::openDev
HEAP[MotorolaV3Interactive_Debug.exe]: Invalid Address specified to RtlValidateHeap( 00C50000, 00C4AC10 )
Unhandled exception at 0x7c901230 in MotorolaV3Interactive_Debug.exe: User breakpoint.
and f.y.i.:
bool aok = true;
Grabber* pGrabber = NULL;
char szErrMsg[2048];
Grabber::tVidCapDevListPtr pVidCapDevList = NULL;
Grabber has created okay and returned a list of devices as expected.
Any ideas?
Thanks,
Q