Initial
This commit is contained in:
101
CapServer/hold/WDMCap.cpp
Normal file
101
CapServer/hold/WDMCap.cpp
Normal file
@@ -0,0 +1,101 @@
|
||||
#include <CapServer/WDMCap.hpp>
|
||||
#include <VidCap/VidReg.hpp>
|
||||
|
||||
WDMCap::WDMCap(int deviceIndex)
|
||||
: mDriverIndex(deviceIndex)
|
||||
{
|
||||
initialize();
|
||||
}
|
||||
|
||||
WDMCap::~WDMCap()
|
||||
{
|
||||
}
|
||||
|
||||
void WDMCap::setCaptureFileName(const String &strPathCaptureFile)
|
||||
{
|
||||
BmpCap::setCaptureFileName(strPathCaptureFile);
|
||||
}
|
||||
|
||||
const String &WDMCap::getCaptureFileName(void)const
|
||||
{
|
||||
return BmpCap::getCaptureFileName();
|
||||
}
|
||||
|
||||
bool WDMCap::initialize(void)
|
||||
{
|
||||
String pathOutputFileName="capture.jpg";
|
||||
VidReg vidReg;
|
||||
|
||||
vidReg.setCaptureFile(pathOutputFileName);
|
||||
vidReg.setSequencing(false);
|
||||
VidCap::getDrivers(mDriverInfoBlock);
|
||||
if(!mDriverInfoBlock.size())
|
||||
{
|
||||
message("No drivers found! drivercount",mDriverInfoBlock.size());
|
||||
return false;
|
||||
}
|
||||
if(mDriverIndex>=mDriverInfoBlock.size())
|
||||
{
|
||||
message("[WDMCap::initilialize]Driver not found! device",mDriverIndex);
|
||||
return false;
|
||||
}
|
||||
showSettings();
|
||||
mControl=::new Control();
|
||||
mControl.disposition(PointerDisposition::Delete);
|
||||
mControl->createControl("BUTTON","",0,Rect(0,0,vidReg.getCaptureWidth(),vidReg.getCaptureHeight()),::GetDesktopWindow(),ControlID);
|
||||
BmpCap::initialize(mControl->getHandle(),mDriverIndex);
|
||||
if(!connect(mDriverIndex))
|
||||
{
|
||||
::printf("\007");
|
||||
message("[WDMCap::initilialize]Failed to connect to device",mDriverInfoBlock[mDriverIndex].driverName());
|
||||
return false;
|
||||
}
|
||||
saveFrames(true);
|
||||
return isConnected();
|
||||
}
|
||||
|
||||
void WDMCap::showSettings(void)
|
||||
{
|
||||
VidReg vidReg;
|
||||
|
||||
message("[WDMCap::initilialize]Capture File",vidReg.getCaptureFile());
|
||||
message("[WDMCap::initilialize]Sequencing",vidReg.getSequencing()?"true":"false");
|
||||
message("[WDMCap::initilialize]Preview Rate",vidReg.getPreviewRate());
|
||||
message("[WDMCap::initilialize]Preview Width",vidReg.getPreviewWidth());
|
||||
message("[WDMCap::initilialize]Preview Height",vidReg.getPreviewHeight());
|
||||
message("[WDMCap::initilialize]Capture Width",vidReg.getCaptureWidth());
|
||||
message("[WDMCap::initilialize]Capture Height",vidReg.getCaptureHeight());
|
||||
message("[WDMCap::initilialize]Capture Quality",vidReg.getQuality());
|
||||
for(int index=0;index<mDriverInfoBlock.size();index++)
|
||||
{
|
||||
if(index==mDriverIndex)message(String("[WDMCap::initilialize](*)")+mDriverInfoBlock[index].driverName());
|
||||
else message(String("[WDMCap::initilialize]")+mDriverInfoBlock[index].driverName());
|
||||
}
|
||||
}
|
||||
|
||||
bool WDMCap::grabFrame(void)
|
||||
{
|
||||
if(!isConnected())return false;
|
||||
mGrabTime=::GetTickCount();
|
||||
if(!BmpCap::grabFrame())return false;
|
||||
mFrameEvent.waitEvent();
|
||||
return true;
|
||||
}
|
||||
|
||||
bool WDMCap::grabFrameNoStop(void)
|
||||
{
|
||||
if(!isConnected())return false;
|
||||
mGrabTime=::GetTickCount();
|
||||
if(!BmpCap::grabFrameNoStop())return false;
|
||||
mFrameEvent.waitEvent();
|
||||
return true;
|
||||
}
|
||||
|
||||
void WDMCap::frameHandler(VIDEOHDR &videoHeader)
|
||||
{
|
||||
mGrabTime=::GetTickCount()-mGrabTime;
|
||||
message("[WDMCap::frameHandler] Device grabbed frame (ms)",mGrabTime);
|
||||
BmpCap::frameHandler(videoHeader);
|
||||
mFrameEvent.setEvent();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user