This commit is contained in:
2024-08-07 09:12:07 -04:00
parent ca445435a0
commit fdfadd5c7e
1021 changed files with 73601 additions and 0 deletions

101
CapServer/hold/WDMCap.cpp Normal file
View 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();
}