Merge pull request #3325 from a-wi:Dshow_capture_v3
This commit is contained in:
commit
b4c3f465fb
@ -212,7 +212,7 @@ DEFINE_GUID(MEDIASUBTYPE_RGB24,0xe436eb7d,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf
|
||||
DEFINE_GUID(MEDIASUBTYPE_RGB32,0xe436eb7e,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);
|
||||
DEFINE_GUID(MEDIASUBTYPE_RGB555,0xe436eb7c,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);
|
||||
DEFINE_GUID(MEDIASUBTYPE_RGB565,0xe436eb7b,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);
|
||||
DEFINE_GUID(MEDIASUBTYPE_I420,0x49343230,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
|
||||
DEFINE_GUID(MEDIASUBTYPE_I420,0x30323449,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
|
||||
DEFINE_GUID(MEDIASUBTYPE_UYVY,0x59565955,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
|
||||
DEFINE_GUID(MEDIASUBTYPE_Y211,0x31313259,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
|
||||
DEFINE_GUID(MEDIASUBTYPE_Y411,0x31313459,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);
|
||||
@ -336,8 +336,33 @@ interface ISampleGrabber : public IUnknown
|
||||
|
||||
//STUFF YOU CAN CHANGE
|
||||
|
||||
#ifdef _DEBUG
|
||||
|
||||
//change for verbose debug info
|
||||
static bool verbose = true;
|
||||
static bool gs_verbose = true;
|
||||
|
||||
static void DebugPrintOut(const char *format, ...)
|
||||
{
|
||||
if (gs_verbose)
|
||||
{
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
if( ::IsDebuggerPresent() )
|
||||
{
|
||||
CHAR szMsg[512];
|
||||
::StringCbVPrintfA(szMsg, sizeof(szMsg), format, args);
|
||||
::OutputDebugStringA(szMsg);
|
||||
}
|
||||
else
|
||||
{
|
||||
vprintf(format, args);
|
||||
}
|
||||
va_end (args);
|
||||
}
|
||||
}
|
||||
#else
|
||||
#define DebugPrintOut(...) void()
|
||||
#endif
|
||||
|
||||
//if you need VI to use multi threaded com
|
||||
//#define VI_COM_MULTI_THREADED
|
||||
@ -697,7 +722,7 @@ public:
|
||||
LeaveCriticalSection(&critSection);
|
||||
SetEvent(hEvent);
|
||||
}else{
|
||||
printf("ERROR: SampleCB() - buffer sizes do not match\n");
|
||||
DebugPrintOut("ERROR: SampleCB() - buffer sizes do not match\n");
|
||||
}
|
||||
}
|
||||
|
||||
@ -785,7 +810,7 @@ videoDevice::videoDevice(){
|
||||
|
||||
void videoDevice::setSize(int w, int h){
|
||||
if(sizeSet){
|
||||
if(verbose)printf("SETUP: Error device size should not be set more than once \n");
|
||||
DebugPrintOut("SETUP: Error device size should not be set more than once\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -863,7 +888,7 @@ void videoDevice::destroyGraph(){
|
||||
// We must get the enumerator again every time because removing a filter from the graph
|
||||
// invalidates the enumerator. We always get only the first filter from each enumerator.
|
||||
hr = pGraph->EnumFilters(&pEnum);
|
||||
if (FAILED(hr)) { if(verbose)printf("SETUP: pGraph->EnumFilters() failed. \n"); return; }
|
||||
if (FAILED(hr)) { DebugPrintOut("SETUP: pGraph->EnumFilters() failed.\n"); return; }
|
||||
|
||||
IBaseFilter * pFilter = NULL;
|
||||
if (pEnum->Next(1, &pFilter, &cFetched) == S_OK)
|
||||
@ -883,10 +908,10 @@ void videoDevice::destroyGraph(){
|
||||
count++;
|
||||
}
|
||||
|
||||
if(verbose)printf("SETUP: removing filter %s...\n", buffer);
|
||||
DebugPrintOut("SETUP: removing filter %s...\n", buffer);
|
||||
hr = pGraph->RemoveFilter(pFilter);
|
||||
if (FAILED(hr)) { if(verbose)printf("SETUP: pGraph->RemoveFilter() failed. \n"); return; }
|
||||
if(verbose)printf("SETUP: filter removed %s \n",buffer);
|
||||
if (FAILED(hr)) { DebugPrintOut("SETUP: pGraph->RemoveFilter() failed.\n"); return; }
|
||||
DebugPrintOut("SETUP: filter removed %s\n",buffer);
|
||||
|
||||
pFilter->Release();
|
||||
pFilter = NULL;
|
||||
@ -909,7 +934,7 @@ void videoDevice::destroyGraph(){
|
||||
|
||||
videoDevice::~videoDevice(){
|
||||
|
||||
if(setupStarted){ if(verbose)printf("\nSETUP: Disconnecting device %i\n", myID); }
|
||||
if(setupStarted){ DebugPrintOut("\nSETUP: Disconnecting device %i\n", myID); }
|
||||
else{
|
||||
if(sgCallback){
|
||||
sgCallback->Release();
|
||||
@ -924,7 +949,7 @@ videoDevice::~videoDevice(){
|
||||
if( (sgCallback) && (pGrabber) )
|
||||
{
|
||||
pGrabber->SetCallback(NULL, 1);
|
||||
if(verbose)printf("SETUP: freeing Grabber Callback\n");
|
||||
DebugPrintOut("SETUP: freeing Grabber Callback\n");
|
||||
sgCallback->Release();
|
||||
|
||||
//delete our pixels
|
||||
@ -940,51 +965,51 @@ videoDevice::~videoDevice(){
|
||||
if( (pControl) )
|
||||
{
|
||||
HR = pControl->Pause();
|
||||
if (FAILED(HR)) if(verbose)printf("ERROR - Could not pause pControl\n");
|
||||
if (FAILED(HR)) DebugPrintOut("ERROR - Could not pause pControl\n");
|
||||
|
||||
HR = pControl->Stop();
|
||||
if (FAILED(HR)) if(verbose)printf("ERROR - Could not stop pControl\n");
|
||||
if (FAILED(HR)) DebugPrintOut("ERROR - Could not stop pControl\n");
|
||||
}
|
||||
|
||||
//Disconnect filters from capture device
|
||||
if( (pVideoInputFilter) )NukeDownstream(pVideoInputFilter);
|
||||
|
||||
//Release and zero pointers to our filters etc
|
||||
if( (pDestFilter) ){ if(verbose)printf("SETUP: freeing Renderer \n");
|
||||
if( (pDestFilter) ){ DebugPrintOut("SETUP: freeing Renderer\n");
|
||||
(pDestFilter)->Release();
|
||||
(pDestFilter) = 0;
|
||||
}
|
||||
if( (pVideoInputFilter) ){ if(verbose)printf("SETUP: freeing Capture Source \n");
|
||||
if( (pVideoInputFilter) ){ DebugPrintOut("SETUP: freeing Capture Source\n");
|
||||
(pVideoInputFilter)->Release();
|
||||
(pVideoInputFilter) = 0;
|
||||
}
|
||||
if( (pGrabberF) ){ if(verbose)printf("SETUP: freeing Grabber Filter \n");
|
||||
if( (pGrabberF) ){ DebugPrintOut("SETUP: freeing Grabber Filter\n");
|
||||
(pGrabberF)->Release();
|
||||
(pGrabberF) = 0;
|
||||
}
|
||||
if( (pGrabber) ){ if(verbose)printf("SETUP: freeing Grabber \n");
|
||||
if( (pGrabber) ){ DebugPrintOut("SETUP: freeing Grabber\n");
|
||||
(pGrabber)->Release();
|
||||
(pGrabber) = 0;
|
||||
}
|
||||
if( (pControl) ){ if(verbose)printf("SETUP: freeing Control \n");
|
||||
if( (pControl) ){ DebugPrintOut("SETUP: freeing Control\n");
|
||||
(pControl)->Release();
|
||||
(pControl) = 0;
|
||||
}
|
||||
if( (pMediaEvent) ){ if(verbose)printf("SETUP: freeing Media Event \n");
|
||||
if( (pMediaEvent) ){ DebugPrintOut("SETUP: freeing Media Event\n");
|
||||
(pMediaEvent)->Release();
|
||||
(pMediaEvent) = 0;
|
||||
}
|
||||
if( (streamConf) ){ if(verbose)printf("SETUP: freeing Stream \n");
|
||||
if( (streamConf) ){ DebugPrintOut("SETUP: freeing Stream\n");
|
||||
(streamConf)->Release();
|
||||
(streamConf) = 0;
|
||||
}
|
||||
|
||||
if( (pAmMediaType) ){ if(verbose)printf("SETUP: freeing Media Type \n");
|
||||
if( (pAmMediaType) ){ DebugPrintOut("SETUP: freeing Media Type\n");
|
||||
MyDeleteMediaType(pAmMediaType);
|
||||
}
|
||||
|
||||
if((pMediaEvent)){
|
||||
if(verbose)printf("SETUP: freeing Media Event \n");
|
||||
DebugPrintOut("SETUP: freeing Media Event\n");
|
||||
(pMediaEvent)->Release();
|
||||
(pMediaEvent) = 0;
|
||||
}
|
||||
@ -993,11 +1018,11 @@ videoDevice::~videoDevice(){
|
||||
if( (pGraph) )destroyGraph();
|
||||
|
||||
//Release and zero our capture graph and our main graph
|
||||
if( (pCaptureGraph) ){ if(verbose)printf("SETUP: freeing Capture Graph \n");
|
||||
if( (pCaptureGraph) ){ DebugPrintOut("SETUP: freeing Capture Graph\n");
|
||||
(pCaptureGraph)->Release();
|
||||
(pCaptureGraph) = 0;
|
||||
}
|
||||
if( (pGraph) ){ if(verbose)printf("SETUP: freeing Main Graph \n");
|
||||
if( (pGraph) ){ DebugPrintOut("SETUP: freeing Main Graph\n");
|
||||
(pGraph)->Release();
|
||||
(pGraph) = 0;
|
||||
}
|
||||
@ -1013,7 +1038,7 @@ videoDevice::~videoDevice(){
|
||||
delete pCaptureGraph;
|
||||
delete pGraph;
|
||||
|
||||
if(verbose)printf("SETUP: Device %i disconnected and freed\n\n",myID);
|
||||
DebugPrintOut("SETUP: Device %i disconnected and freed\n\n",myID);
|
||||
}
|
||||
|
||||
|
||||
@ -1037,7 +1062,7 @@ videoInput::videoInput(){
|
||||
//setup a max no of device objects
|
||||
for(int i=0; i<VI_MAX_CAMERAS; i++) VDList[i] = new videoDevice();
|
||||
|
||||
if(verbose)printf("\n***** VIDEOINPUT LIBRARY - %2.04f - TFW07 *****\n\n",VI_VERSION);
|
||||
DebugPrintOut("\n***** VIDEOINPUT LIBRARY - %2.04f - TFW07 *****\n\n",VI_VERSION);
|
||||
|
||||
//added for the pixelink firewire camera
|
||||
//MEDIASUBTYPE_Y800 = (GUID)FOURCCMap(FCC('Y800'));
|
||||
@ -1101,7 +1126,11 @@ videoInput::videoInput(){
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
void videoInput::setVerbose(bool _verbose){
|
||||
verbose = _verbose;
|
||||
#ifdef _DEBUG
|
||||
gs_verbose = _verbose;
|
||||
#else
|
||||
(void)_verbose; // Suppress 'unreferenced parameter' warning
|
||||
#endif
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
@ -1114,7 +1143,7 @@ void videoInput::setUseCallback(bool useCallback){
|
||||
bCallback = useCallback;
|
||||
callbackSetCount = 1;
|
||||
}else{
|
||||
printf("ERROR: setUseCallback can only be called before setup\n");
|
||||
DebugPrintOut("ERROR: setUseCallback can only be called before setup\n");
|
||||
}
|
||||
}
|
||||
|
||||
@ -1256,7 +1285,7 @@ bool videoInput::setFormat(int deviceNumber, int format){
|
||||
if(VDList[deviceNumber]->pVideoInputFilter)VDList[deviceNumber]->pVideoInputFilter = NULL;
|
||||
|
||||
if(FAILED(hr)){
|
||||
printf("SETUP: couldn't set requested format\n");
|
||||
DebugPrintOut("SETUP: couldn't set requested format\n");
|
||||
}else{
|
||||
long lValue = 0;
|
||||
hr = pVideoDec->get_AvailableTVFormats(&lValue);
|
||||
@ -1264,7 +1293,7 @@ bool videoInput::setFormat(int deviceNumber, int format){
|
||||
{
|
||||
hr = pVideoDec->put_TVFormat(VDList[deviceNumber]->formatType);
|
||||
if( FAILED(hr) ){
|
||||
printf("SETUP: couldn't set requested format\n");
|
||||
DebugPrintOut("SETUP: couldn't set requested format\n");
|
||||
}else{
|
||||
returnVal = true;
|
||||
}
|
||||
@ -1304,7 +1333,7 @@ int videoInput::listDevices(bool silent){
|
||||
//COM Library Intialization
|
||||
comInit();
|
||||
|
||||
if(!silent)printf("\nVIDEOINPUT SPY MODE!\n\n");
|
||||
if(!silent) DebugPrintOut("\nVIDEOINPUT SPY MODE!\n\n");
|
||||
|
||||
|
||||
ICreateDevEnum *pDevEnum = NULL;
|
||||
@ -1325,7 +1354,7 @@ int videoInput::listDevices(bool silent){
|
||||
|
||||
if(hr == S_OK){
|
||||
|
||||
if(!silent)printf("SETUP: Looking For Capture Devices\n");
|
||||
if(!silent) DebugPrintOut("SETUP: Looking For Capture Devices\n");
|
||||
IMoniker *pMoniker = NULL;
|
||||
|
||||
while (pEnum->Next(1, &pMoniker, NULL) == S_OK){
|
||||
@ -1359,7 +1388,7 @@ int videoInput::listDevices(bool silent){
|
||||
}
|
||||
deviceNames[deviceCounter][count] = 0;
|
||||
|
||||
if(!silent)printf("SETUP: %i) %s \n",deviceCounter, deviceNames[deviceCounter]);
|
||||
if(!silent) DebugPrintOut("SETUP: %i) %s\n",deviceCounter, deviceNames[deviceCounter]);
|
||||
}
|
||||
|
||||
pPropBag->Release();
|
||||
@ -1378,7 +1407,7 @@ int videoInput::listDevices(bool silent){
|
||||
pEnum = NULL;
|
||||
}
|
||||
|
||||
if(!silent)printf("SETUP: %i Device(s) found\n\n", deviceCounter);
|
||||
if(!silent) DebugPrintOut("SETUP: %i Device(s) found\n\n", deviceCounter);
|
||||
}
|
||||
|
||||
comUnInit();
|
||||
@ -1516,10 +1545,10 @@ bool videoInput::getPixels(int id, unsigned char * dstBuffer, bool flipRedAndBlu
|
||||
processPixels(src, dst, width, height, flipRedAndBlue, flipImage);
|
||||
success = true;
|
||||
}else{
|
||||
if(verbose)printf("ERROR: GetPixels() - bufferSizes do not match!\n");
|
||||
DebugPrintOut("ERROR: GetPixels() - bufferSizes do not match!\n");
|
||||
}
|
||||
}else{
|
||||
if(verbose)printf("ERROR: GetPixels() - Unable to grab frame for device %i\n", id);
|
||||
DebugPrintOut("ERROR: GetPixels() - Unable to grab frame for device %i\n", id);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1571,11 +1600,11 @@ bool videoInput::isFrameNew(int id){
|
||||
VDList[id]->nFramesRunning++;
|
||||
|
||||
if(freeze && VDList[id]->autoReconnect){
|
||||
if(verbose)printf("ERROR: Device seems frozen - attempting to reconnect\n");
|
||||
DebugPrintOut("ERROR: Device seems frozen - attempting to reconnect\n");
|
||||
if( !restartDevice(VDList[id]->myID) ){
|
||||
if(verbose)printf("ERROR: Unable to reconnect to device\n");
|
||||
DebugPrintOut("ERROR: Unable to reconnect to device\n");
|
||||
}else{
|
||||
if(verbose)printf("SUCCESS: Able to reconnect to device\n");
|
||||
DebugPrintOut("SUCCESS: Able to reconnect to device\n");
|
||||
}
|
||||
}
|
||||
|
||||
@ -1646,7 +1675,7 @@ bool videoInput::getVideoSettingFilter(int deviceID, long Property, long &min, l
|
||||
|
||||
hr = getDevice(&VD->pVideoInputFilter, deviceID, VD->wDeviceName, VD->nDeviceName);
|
||||
if (FAILED(hr)){
|
||||
printf("setVideoSetting - getDevice Error\n");
|
||||
DebugPrintOut("setVideoSetting - getDevice Error\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1654,7 +1683,7 @@ bool videoInput::getVideoSettingFilter(int deviceID, long Property, long &min, l
|
||||
|
||||
hr = VD->pVideoInputFilter->QueryInterface(IID_IAMVideoProcAmp, (void**)&pAMVideoProcAmp);
|
||||
if(FAILED(hr)){
|
||||
printf("setVideoSetting - QueryInterface Error\n");
|
||||
DebugPrintOut("setVideoSetting - QueryInterface Error\n");
|
||||
if(VD->pVideoInputFilter)VD->pVideoInputFilter->Release();
|
||||
if(VD->pVideoInputFilter)VD->pVideoInputFilter = NULL;
|
||||
return false;
|
||||
@ -1663,10 +1692,10 @@ bool videoInput::getVideoSettingFilter(int deviceID, long Property, long &min, l
|
||||
char propStr[16];
|
||||
getVideoPropertyAsString(Property,propStr);
|
||||
|
||||
if (verbose) printf("Setting video setting %s.\n", propStr);
|
||||
DebugPrintOut("Setting video setting %s.\n", propStr);
|
||||
|
||||
pAMVideoProcAmp->GetRange(Property, &min, &max, &SteppingDelta, &defaultValue, &flags);
|
||||
if (verbose) printf("Range for video setting %s: Min:%ld Max:%ld SteppingDelta:%ld Default:%ld Flags:%ld\n", propStr, min, max, SteppingDelta, defaultValue, flags);
|
||||
DebugPrintOut("Range for video setting %s: Min:%ld Max:%ld SteppingDelta:%ld Default:%ld Flags:%ld\n", propStr, min, max, SteppingDelta, defaultValue, flags);
|
||||
pAMVideoProcAmp->Get(Property, ¤tValue, &flags);
|
||||
|
||||
if(pAMVideoProcAmp)pAMVideoProcAmp->Release();
|
||||
@ -1707,7 +1736,7 @@ bool videoInput::setVideoSettingFilterPct(int deviceID, long Property, float pct
|
||||
float halfStep = (float)stepAmnt * 0.5f;
|
||||
if( mod < halfStep ) rasterValue -= mod;
|
||||
else rasterValue += stepAmnt - mod;
|
||||
printf("RASTER - pctValue is %f - value is %li - step is %li - mod is %li - rasterValue is %li\n", pctValue, value, stepAmnt, mod, rasterValue);
|
||||
DebugPrintOut("RASTER - pctValue is %f - value is %li - step is %li - mod is %li - rasterValue is %li\n", pctValue, value, stepAmnt, mod, rasterValue);
|
||||
}
|
||||
|
||||
return setVideoSettingFilter(deviceID, Property, rasterValue, Flags, false);
|
||||
@ -1728,7 +1757,7 @@ bool videoInput::setVideoSettingFilter(int deviceID, long Property, long lValue,
|
||||
|
||||
hr = getDevice(&VD->pVideoInputFilter, deviceID, VD->wDeviceName, VD->nDeviceName);
|
||||
if (FAILED(hr)){
|
||||
printf("setVideoSetting - getDevice Error\n");
|
||||
DebugPrintOut("setVideoSetting - getDevice Error\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1736,21 +1765,21 @@ bool videoInput::setVideoSettingFilter(int deviceID, long Property, long lValue,
|
||||
|
||||
hr = VD->pVideoInputFilter->QueryInterface(IID_IAMVideoProcAmp, (void**)&pAMVideoProcAmp);
|
||||
if(FAILED(hr)){
|
||||
printf("setVideoSetting - QueryInterface Error\n");
|
||||
DebugPrintOut("setVideoSetting - QueryInterface Error\n");
|
||||
if(VD->pVideoInputFilter)VD->pVideoInputFilter->Release();
|
||||
if(VD->pVideoInputFilter)VD->pVideoInputFilter = NULL;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (verbose) printf("Setting video setting %s.\n", propStr);
|
||||
DebugPrintOut("Setting video setting %s.\n", propStr);
|
||||
long CurrVal, Min, Max, SteppingDelta, Default, CapsFlags, AvailableCapsFlags = 0;
|
||||
|
||||
|
||||
pAMVideoProcAmp->GetRange(Property, &Min, &Max, &SteppingDelta, &Default, &AvailableCapsFlags);
|
||||
if (verbose) printf("Range for video setting %s: Min:%ld Max:%ld SteppingDelta:%ld Default:%ld Flags:%ld\n", propStr, Min, Max, SteppingDelta, Default, AvailableCapsFlags);
|
||||
DebugPrintOut("Range for video setting %s: Min:%ld Max:%ld SteppingDelta:%ld Default:%ld Flags:%ld\n", propStr, Min, Max, SteppingDelta, Default, AvailableCapsFlags);
|
||||
pAMVideoProcAmp->Get(Property, &CurrVal, &CapsFlags);
|
||||
|
||||
if (verbose) printf("Current value: %ld Flags %ld (%s)\n", CurrVal, CapsFlags, (CapsFlags == 1 ? "Auto" : (CapsFlags == 2 ? "Manual" : "Unknown")));
|
||||
DebugPrintOut("Current value: %ld Flags %ld (%s)\n", CurrVal, CapsFlags, (CapsFlags == 1 ? "Auto" : (CapsFlags == 2 ? "Manual" : "Unknown")));
|
||||
|
||||
if (useDefaultValue) {
|
||||
pAMVideoProcAmp->Set(Property, Default, VideoProcAmp_Flags_Auto);
|
||||
@ -1797,7 +1826,7 @@ bool videoInput::setVideoSettingCameraPct(int deviceID, long Property, float pct
|
||||
float halfStep = (float)stepAmnt * 0.5f;
|
||||
if( mod < halfStep ) rasterValue -= mod;
|
||||
else rasterValue += stepAmnt - mod;
|
||||
printf("RASTER - pctValue is %f - value is %li - step is %li - mod is %li - rasterValue is %li\n", pctValue, value, stepAmnt, mod, rasterValue);
|
||||
DebugPrintOut("RASTER - pctValue is %f - value is %li - step is %li - mod is %li - rasterValue is %li\n", pctValue, value, stepAmnt, mod, rasterValue);
|
||||
}
|
||||
|
||||
return setVideoSettingCamera(deviceID, Property, rasterValue, Flags, false);
|
||||
@ -1814,19 +1843,19 @@ bool videoInput::setVideoSettingCamera(int deviceID, long Property, long lValue,
|
||||
char propStr[16];
|
||||
getCameraPropertyAsString(Property,propStr);
|
||||
|
||||
if (verbose) printf("Setting video setting %s.\n", propStr);
|
||||
DebugPrintOut("Setting video setting %s.\n", propStr);
|
||||
hr = VDList[deviceID]->pVideoInputFilter->QueryInterface(IID_IAMCameraControl, (void**)&pIAMCameraControl);
|
||||
if (FAILED(hr)) {
|
||||
printf("Error\n");
|
||||
DebugPrintOut("Error\n");
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
long CurrVal, Min, Max, SteppingDelta, Default, CapsFlags, AvailableCapsFlags;
|
||||
pIAMCameraControl->GetRange(Property, &Min, &Max, &SteppingDelta, &Default, &AvailableCapsFlags);
|
||||
if (verbose) printf("Range for video setting %s: Min:%ld Max:%ld SteppingDelta:%ld Default:%ld Flags:%ld\n", propStr, Min, Max, SteppingDelta, Default, AvailableCapsFlags);
|
||||
DebugPrintOut("Range for video setting %s: Min:%ld Max:%ld SteppingDelta:%ld Default:%ld Flags:%ld\n", propStr, Min, Max, SteppingDelta, Default, AvailableCapsFlags);
|
||||
pIAMCameraControl->Get(Property, &CurrVal, &CapsFlags);
|
||||
if (verbose) printf("Current value: %ld Flags %ld (%s)\n", CurrVal, CapsFlags, (CapsFlags == 1 ? "Auto" : (CapsFlags == 2 ? "Manual" : "Unknown")));
|
||||
DebugPrintOut("Current value: %ld Flags %ld (%s)\n", CurrVal, CapsFlags, (CapsFlags == 1 ? "Auto" : (CapsFlags == 2 ? "Manual" : "Unknown")));
|
||||
if (useDefaultValue) {
|
||||
pIAMCameraControl->Set(Property, Default, CameraControl_Flags_Auto);
|
||||
}
|
||||
@ -1854,7 +1883,7 @@ bool videoInput::getVideoSettingCamera(int deviceID, long Property, long &min, l
|
||||
|
||||
hr = getDevice(&VD->pVideoInputFilter, deviceID, VD->wDeviceName, VD->nDeviceName);
|
||||
if (FAILED(hr)){
|
||||
printf("setVideoSetting - getDevice Error\n");
|
||||
DebugPrintOut("setVideoSetting - getDevice Error\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1862,7 +1891,7 @@ bool videoInput::getVideoSettingCamera(int deviceID, long Property, long &min, l
|
||||
|
||||
hr = VD->pVideoInputFilter->QueryInterface(IID_IAMCameraControl, (void**)&pIAMCameraControl);
|
||||
if(FAILED(hr)){
|
||||
printf("setVideoSetting - QueryInterface Error\n");
|
||||
DebugPrintOut("setVideoSetting - QueryInterface Error\n");
|
||||
if(VD->pVideoInputFilter)VD->pVideoInputFilter->Release();
|
||||
if(VD->pVideoInputFilter)VD->pVideoInputFilter = NULL;
|
||||
return false;
|
||||
@ -1870,10 +1899,10 @@ bool videoInput::getVideoSettingCamera(int deviceID, long Property, long &min, l
|
||||
|
||||
char propStr[16];
|
||||
getCameraPropertyAsString(Property,propStr);
|
||||
if (verbose) printf("Setting video setting %s.\n", propStr);
|
||||
DebugPrintOut("Setting video setting %s.\n", propStr);
|
||||
|
||||
pIAMCameraControl->GetRange(Property, &min, &max, &SteppingDelta, &defaultValue, &flags);
|
||||
if (verbose) printf("Range for video setting %s: Min:%ld Max:%ld SteppingDelta:%ld Default:%ld Flags:%ld\n", propStr, min, max, SteppingDelta, defaultValue, flags);
|
||||
DebugPrintOut("Range for video setting %s: Min:%ld Max:%ld SteppingDelta:%ld Default:%ld Flags:%ld\n", propStr, min, max, SteppingDelta, defaultValue, flags);
|
||||
pIAMCameraControl->Get(Property, ¤tValue, &flags);
|
||||
|
||||
if(pIAMCameraControl)pIAMCameraControl->Release();
|
||||
@ -1981,7 +2010,7 @@ bool videoInput::comInit(){
|
||||
//if another library has started com as single threaded
|
||||
//and we need it multi-threaded - send warning but don't fail
|
||||
if( hr == RPC_E_CHANGED_MODE){
|
||||
if(verbose)printf("SETUP - COM already setup - threaded VI might not be possible\n");
|
||||
DebugPrintOut("SETUP - COM already setup - threaded VI might not be possible\n");
|
||||
}
|
||||
}
|
||||
|
||||
@ -2066,14 +2095,14 @@ bool videoInput::setup(int deviceNumber){
|
||||
|
||||
if(deviceNumber>devicesFound-1)
|
||||
{
|
||||
if(verbose)printf("SETUP: device[%i] not found - you have %i devices available\n", deviceNumber, devicesFound);
|
||||
if(devicesFound>=0) if(verbose)printf("SETUP: this means that the last device you can use is device[%i] \n", devicesFound-1);
|
||||
DebugPrintOut("SETUP: device[%i] not found - you have %i devices available\n", deviceNumber, devicesFound);
|
||||
if(devicesFound>=0) DebugPrintOut("SETUP: this means that the last device you can use is device[%i]\n", devicesFound-1);
|
||||
return false;
|
||||
}
|
||||
|
||||
if(VDList[deviceNumber]->readyToCapture)
|
||||
{
|
||||
if(verbose)printf("SETUP: can't setup, device %i is currently being used\n",VDList[deviceNumber]->myID);
|
||||
DebugPrintOut("SETUP: can't setup, device %i is currently being used\n",VDList[deviceNumber]->myID);
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -2329,8 +2358,8 @@ static void findClosestSizeAndSubtype(videoDevice * VD, int widthIn, int heightI
|
||||
//Don't want to get stuck in a loop
|
||||
if(stepX < 1 || stepY < 1) continue;
|
||||
|
||||
//if(verbose)printf("min is %i %i max is %i %i - res is %i %i \n", scc.MinOutputSize.cx, scc.MinOutputSize.cy, scc.MaxOutputSize.cx, scc.MaxOutputSize.cy, stepX, stepY);
|
||||
//if(verbose)printf("min frame duration is %i max duration is %i\n", scc.MinFrameInterval, scc.MaxFrameInterval);
|
||||
//DebugPrintOut("min is %i %i max is %i %i - res is %i %i\n", scc.MinOutputSize.cx, scc.MinOutputSize.cy, scc.MaxOutputSize.cx, scc.MaxOutputSize.cy, stepX, stepY);
|
||||
//DebugPrintOut("min frame duration is %i max duration is %i\n", scc.MinFrameInterval, scc.MaxFrameInterval);
|
||||
|
||||
bool exactMatch = false;
|
||||
bool exactMatchX = false;
|
||||
@ -2416,7 +2445,15 @@ static bool setSizeAndSubtype(videoDevice * VD, int attemptWidth, int attemptHei
|
||||
VD->pAmMediaType->subtype = mediatype;
|
||||
|
||||
//buffer size
|
||||
VD->pAmMediaType->lSampleSize = attemptWidth*attemptHeight*3;
|
||||
if (mediatype == MEDIASUBTYPE_RGB24)
|
||||
{
|
||||
VD->pAmMediaType->lSampleSize = attemptWidth*attemptHeight*3;
|
||||
}
|
||||
else
|
||||
{
|
||||
// For compressed data, the value can be zero.
|
||||
VD->pAmMediaType->lSampleSize = 0;
|
||||
}
|
||||
|
||||
//set fps if requested
|
||||
if( VD->requestedFrameTime != -1){
|
||||
@ -2449,14 +2486,14 @@ int videoInput::start(int deviceID, videoDevice *VD){
|
||||
CAPTURE_MODE = PIN_CATEGORY_CAPTURE; //Don't worry - it ends up being preview (which is faster)
|
||||
callbackSetCount = 1; //make sure callback method is not changed after setup called
|
||||
|
||||
if(verbose)printf("SETUP: Setting up device %i\n",deviceID);
|
||||
DebugPrintOut("SETUP: Setting up device %i\n",deviceID);
|
||||
|
||||
// CREATE THE GRAPH BUILDER //
|
||||
// Create the filter graph manager and query for interfaces.
|
||||
hr = CoCreateInstance(CLSID_CaptureGraphBuilder2, NULL, CLSCTX_INPROC_SERVER, IID_ICaptureGraphBuilder2, (void **)&VD->pCaptureGraph);
|
||||
if (FAILED(hr)) // FAILED is a macro that tests the return value
|
||||
{
|
||||
if(verbose)printf("ERROR - Could not create the Filter Graph Manager\n");
|
||||
DebugPrintOut("ERROR - Could not create the Filter Graph Manager\n");
|
||||
return hr;
|
||||
}
|
||||
|
||||
@ -2465,7 +2502,7 @@ int videoInput::start(int deviceID, videoDevice *VD){
|
||||
hr = CoCreateInstance(CLSID_FilterGraph, 0, CLSCTX_INPROC_SERVER,IID_IGraphBuilder, (void**)&VD->pGraph);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
if(verbose)printf("ERROR - Could not add the graph builder!\n");
|
||||
DebugPrintOut("ERROR - Could not add the graph builder!\n");
|
||||
stopDevice(deviceID);
|
||||
return hr;
|
||||
}
|
||||
@ -2474,7 +2511,7 @@ int videoInput::start(int deviceID, videoDevice *VD){
|
||||
hr = VD->pCaptureGraph->SetFiltergraph(VD->pGraph);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
if(verbose)printf("ERROR - Could not set filtergraph\n");
|
||||
DebugPrintOut("ERROR - Could not set filtergraph\n");
|
||||
stopDevice(deviceID);
|
||||
return hr;
|
||||
}
|
||||
@ -2485,8 +2522,8 @@ int videoInput::start(int deviceID, videoDevice *VD){
|
||||
hr = VD->pGraph->QueryInterface(IID_IMediaControl, (void **)&VD->pControl);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
if(verbose)printf("ERROR - Could not create the Media Control object\n");
|
||||
stopDevice(deviceID);
|
||||
DebugPrintOut("ERROR - Could not create the Media Control object\n");
|
||||
stopDevice(deviceID);
|
||||
return hr;
|
||||
}
|
||||
|
||||
@ -2496,10 +2533,10 @@ int videoInput::start(int deviceID, videoDevice *VD){
|
||||
hr = getDevice(&VD->pVideoInputFilter, deviceID, VD->wDeviceName, VD->nDeviceName);
|
||||
|
||||
if (SUCCEEDED(hr)){
|
||||
if(verbose)printf("SETUP: %s\n", VD->nDeviceName);
|
||||
DebugPrintOut("SETUP: %s\n", VD->nDeviceName);
|
||||
hr = VD->pGraph->AddFilter(VD->pVideoInputFilter, VD->wDeviceName);
|
||||
}else{
|
||||
if(verbose)printf("ERROR - Could not find specified video device\n");
|
||||
DebugPrintOut("ERROR - Could not find specified video device\n");
|
||||
stopDevice(deviceID);
|
||||
return hr;
|
||||
}
|
||||
@ -2508,7 +2545,7 @@ int videoInput::start(int deviceID, videoDevice *VD){
|
||||
IAMStreamConfig *streamConfTest = NULL;
|
||||
hr = VD->pCaptureGraph->FindInterface(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video, VD->pVideoInputFilter, IID_IAMStreamConfig, (void **)&streamConfTest);
|
||||
if(FAILED(hr)){
|
||||
if(verbose)printf("SETUP: Couldn't find preview pin using SmartTee\n");
|
||||
DebugPrintOut("SETUP: Couldn't find preview pin using SmartTee\n");
|
||||
}else{
|
||||
CAPTURE_MODE = PIN_CATEGORY_PREVIEW;
|
||||
streamConfTest->Release();
|
||||
@ -2520,7 +2557,7 @@ int videoInput::start(int deviceID, videoDevice *VD){
|
||||
//webcams tend not to have a crossbar so this function will also detect a webcams and not apply the crossbar
|
||||
if(VD->useCrossbar)
|
||||
{
|
||||
if(verbose)printf("SETUP: Checking crossbar\n");
|
||||
DebugPrintOut("SETUP: Checking crossbar\n");
|
||||
routeCrossbar(&VD->pCaptureGraph, &VD->pVideoInputFilter, VD->connection, CAPTURE_MODE);
|
||||
}
|
||||
|
||||
@ -2528,7 +2565,7 @@ int videoInput::start(int deviceID, videoDevice *VD){
|
||||
//we do this because webcams don't have a preview mode
|
||||
hr = VD->pCaptureGraph->FindInterface(&CAPTURE_MODE, &MEDIATYPE_Video, VD->pVideoInputFilter, IID_IAMStreamConfig, (void **)&VD->streamConf);
|
||||
if(FAILED(hr)){
|
||||
if(verbose)printf("ERROR: Couldn't config the stream!\n");
|
||||
DebugPrintOut("ERROR: Couldn't config the stream!\n");
|
||||
stopDevice(deviceID);
|
||||
return hr;
|
||||
}
|
||||
@ -2536,7 +2573,7 @@ int videoInput::start(int deviceID, videoDevice *VD){
|
||||
//NOW LETS DEAL WITH GETTING THE RIGHT SIZE
|
||||
hr = VD->streamConf->GetFormat(&VD->pAmMediaType);
|
||||
if(FAILED(hr)){
|
||||
if(verbose)printf("ERROR: Couldn't getFormat for pAmMediaType!\n");
|
||||
DebugPrintOut("ERROR: Couldn't getFormat for pAmMediaType!\n");
|
||||
stopDevice(deviceID);
|
||||
return hr;
|
||||
}
|
||||
@ -2550,15 +2587,16 @@ int videoInput::start(int deviceID, videoDevice *VD){
|
||||
bool foundSize = false;
|
||||
|
||||
if(customSize){
|
||||
if(verbose) printf("SETUP: Default Format is set to %i by %i \n", currentWidth, currentHeight);
|
||||
DebugPrintOut("SETUP: Default Format is set to %ix%i\n", currentWidth, currentHeight);
|
||||
|
||||
char guidStr[8];
|
||||
// try specified format and size
|
||||
getMediaSubtypeAsString(VD->tryVideoType, guidStr);
|
||||
if(verbose)printf("SETUP: trying specified format %s @ %i by %i\n", guidStr, VD->tryWidth, VD->tryHeight);
|
||||
DebugPrintOut("SETUP: trying specified format %s @ %ix%i\n", guidStr, VD->tryWidth, VD->tryHeight);
|
||||
|
||||
if( setSizeAndSubtype(VD, VD->tryWidth, VD->tryHeight, VD->tryVideoType) ){
|
||||
VD->setSize(VD->tryWidth, VD->tryHeight);
|
||||
VD->videoType = VD->tryVideoType;
|
||||
foundSize = true;
|
||||
} else {
|
||||
// try specified size with all formats
|
||||
@ -2566,9 +2604,10 @@ int videoInput::start(int deviceID, videoDevice *VD){
|
||||
|
||||
getMediaSubtypeAsString(mediaSubtypes[i], guidStr);
|
||||
|
||||
if(verbose)printf("SETUP: trying format %s @ %i by %i\n", guidStr, VD->tryWidth, VD->tryHeight);
|
||||
DebugPrintOut("SETUP: trying format %s @ %ix%i\n", guidStr, VD->tryWidth, VD->tryHeight);
|
||||
if( setSizeAndSubtype(VD, VD->tryWidth, VD->tryHeight, mediaSubtypes[i]) ){
|
||||
VD->setSize(VD->tryWidth, VD->tryHeight);
|
||||
VD->videoType = mediaSubtypes[i];
|
||||
foundSize = true;
|
||||
break;
|
||||
}
|
||||
@ -2578,7 +2617,7 @@ int videoInput::start(int deviceID, videoDevice *VD){
|
||||
|
||||
//if we didn't find the requested size - lets try and find the closest matching size
|
||||
if( foundSize == false ){
|
||||
if( verbose )printf("SETUP: couldn't find requested size - searching for closest matching size\n");
|
||||
DebugPrintOut("SETUP: couldn't find requested size - searching for closest matching size\n");
|
||||
|
||||
int closestWidth = -1;
|
||||
int closestHeight = -1;
|
||||
@ -2589,7 +2628,7 @@ int videoInput::start(int deviceID, videoDevice *VD){
|
||||
if( closestWidth != -1 && closestHeight != -1){
|
||||
getMediaSubtypeAsString(newMediaSubtype, guidStr);
|
||||
|
||||
if(verbose)printf("SETUP: closest supported size is %s @ %i %i\n", guidStr, closestWidth, closestHeight);
|
||||
DebugPrintOut("SETUP: closest supported size is %s @ %i %i\n", guidStr, closestWidth, closestHeight);
|
||||
if( setSizeAndSubtype(VD, closestWidth, closestHeight, newMediaSubtype) ){
|
||||
VD->setSize(closestWidth, closestHeight);
|
||||
foundSize = true;
|
||||
@ -2611,21 +2650,21 @@ int videoInput::start(int deviceID, videoDevice *VD){
|
||||
// Create the Sample Grabber.
|
||||
hr = CoCreateInstance(CLSID_SampleGrabber, NULL, CLSCTX_INPROC_SERVER,IID_IBaseFilter, (void**)&VD->pGrabberF);
|
||||
if (FAILED(hr)){
|
||||
if(verbose)printf("Could not Create Sample Grabber - CoCreateInstance()\n");
|
||||
DebugPrintOut("Could not Create Sample Grabber - CoCreateInstance()\n");
|
||||
stopDevice(deviceID);
|
||||
return hr;
|
||||
}
|
||||
|
||||
hr = VD->pGraph->AddFilter(VD->pGrabberF, L"Sample Grabber");
|
||||
if (FAILED(hr)){
|
||||
if(verbose)printf("Could not add Sample Grabber - AddFilter()\n");
|
||||
DebugPrintOut("Could not add Sample Grabber - AddFilter()\n");
|
||||
stopDevice(deviceID);
|
||||
return hr;
|
||||
}
|
||||
|
||||
hr = VD->pGrabberF->QueryInterface(IID_ISampleGrabber, (void**)&VD->pGrabber);
|
||||
if (FAILED(hr)){
|
||||
if(verbose)printf("ERROR: Could not query SampleGrabber\n");
|
||||
DebugPrintOut("ERROR: Could not query SampleGrabber\n");
|
||||
stopDevice(deviceID);
|
||||
return hr;
|
||||
}
|
||||
@ -2644,11 +2683,11 @@ int videoInput::start(int deviceID, videoDevice *VD){
|
||||
//We use SampleCB
|
||||
hr = VD->pGrabber->SetCallback(VD->sgCallback, 0);
|
||||
if (FAILED(hr)){
|
||||
if(verbose)printf("ERROR: problem setting callback\n");
|
||||
DebugPrintOut("ERROR: problem setting callback\n");
|
||||
stopDevice(deviceID);
|
||||
return hr;
|
||||
}else{
|
||||
if(verbose)printf("SETUP: Capture callback set\n");
|
||||
DebugPrintOut("SETUP: Capture callback set\n");
|
||||
}
|
||||
}
|
||||
|
||||
@ -2671,7 +2710,7 @@ int videoInput::start(int deviceID, videoDevice *VD){
|
||||
VD->streamConf->Release();
|
||||
VD->streamConf = NULL;
|
||||
}else{
|
||||
if(verbose)printf("ERROR: connecting device - prehaps it is already being used?\n");
|
||||
DebugPrintOut("ERROR: connecting device - prehaps it is already being used?\n");
|
||||
stopDevice(deviceID);
|
||||
return S_FALSE;
|
||||
}
|
||||
@ -2681,14 +2720,14 @@ int videoInput::start(int deviceID, videoDevice *VD){
|
||||
//used to give the video stream somewhere to go to.
|
||||
hr = CoCreateInstance(CLSID_NullRenderer, NULL, CLSCTX_INPROC_SERVER, IID_IBaseFilter, (void**)(&VD->pDestFilter));
|
||||
if (FAILED(hr)){
|
||||
if(verbose)printf("ERROR: Could not create filter - NullRenderer\n");
|
||||
DebugPrintOut("ERROR: Could not create filter - NullRenderer\n");
|
||||
stopDevice(deviceID);
|
||||
return hr;
|
||||
}
|
||||
|
||||
hr = VD->pGraph->AddFilter(VD->pDestFilter, L"NullRenderer");
|
||||
if (FAILED(hr)){
|
||||
if(verbose)printf("ERROR: Could not add filter - NullRenderer\n");
|
||||
DebugPrintOut("ERROR: Could not add filter - NullRenderer\n");
|
||||
stopDevice(deviceID);
|
||||
return hr;
|
||||
}
|
||||
@ -2698,7 +2737,7 @@ int videoInput::start(int deviceID, videoDevice *VD){
|
||||
hr = VD->pCaptureGraph->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video, VD->pVideoInputFilter, VD->pGrabberF, VD->pDestFilter);
|
||||
|
||||
if (FAILED(hr)){
|
||||
if(verbose)printf("ERROR: Could not connect pins - RenderStream()\n");
|
||||
DebugPrintOut("ERROR: Could not connect pins - RenderStream()\n");
|
||||
stopDevice(deviceID);
|
||||
return hr;
|
||||
}
|
||||
@ -2709,7 +2748,7 @@ int videoInput::start(int deviceID, videoDevice *VD){
|
||||
IMediaFilter *pMediaFilter = 0;
|
||||
hr = VD->pGraph->QueryInterface(IID_IMediaFilter, (void**)&pMediaFilter);
|
||||
if (FAILED(hr)){
|
||||
if(verbose)printf("ERROR: Could not get IID_IMediaFilter interface\n");
|
||||
DebugPrintOut("ERROR: Could not get IID_IMediaFilter interface\n");
|
||||
}else{
|
||||
pMediaFilter->SetSyncSource(NULL);
|
||||
pMediaFilter->Release();
|
||||
@ -2721,7 +2760,7 @@ int videoInput::start(int deviceID, videoDevice *VD){
|
||||
hr = VD->pControl->Run();
|
||||
|
||||
if (FAILED(hr)){
|
||||
if(verbose)printf("ERROR: Could not start graph\n");
|
||||
DebugPrintOut("ERROR: Could not start graph\n");
|
||||
stopDevice(deviceID);
|
||||
return hr;
|
||||
}
|
||||
@ -2739,7 +2778,7 @@ int videoInput::start(int deviceID, videoDevice *VD){
|
||||
|
||||
}
|
||||
|
||||
if(verbose)printf("SETUP: Device is setup and ready to capture.\n\n");
|
||||
DebugPrintOut("SETUP: Device is setup and ready to capture.\n\n");
|
||||
VD->readyToCapture = true;
|
||||
|
||||
//Release filters - seen someone else do this
|
||||
@ -3016,7 +3055,7 @@ HRESULT videoInput::routeCrossbar(ICaptureGraphBuilder2 **ppBuild, IBaseFilter *
|
||||
|
||||
bool foundDevice = false;
|
||||
|
||||
if(verbose)printf("SETUP: You are not a webcam! Setting Crossbar\n");
|
||||
DebugPrintOut("SETUP: You are not a webcam! Setting Crossbar\n");
|
||||
pXBar1->Release();
|
||||
|
||||
IAMCrossbar *Crossbar;
|
||||
@ -3036,24 +3075,24 @@ HRESULT videoInput::routeCrossbar(ICaptureGraphBuilder2 **ppBuild, IBaseFilter *
|
||||
hr = Crossbar->get_CrossbarPinInfo( iPin , pIndex , &pRIndex , &pType);
|
||||
|
||||
if( pType == conType){
|
||||
if(verbose)printf("SETUP: Found Physical Interface");
|
||||
DebugPrintOut("SETUP: Found Physical Interface");
|
||||
|
||||
switch(conType){
|
||||
|
||||
case PhysConn_Video_Composite:
|
||||
if(verbose)printf(" - Composite\n");
|
||||
DebugPrintOut(" - Composite\n");
|
||||
break;
|
||||
case PhysConn_Video_SVideo:
|
||||
if(verbose)printf(" - S-Video\n");
|
||||
DebugPrintOut(" - S-Video\n");
|
||||
break;
|
||||
case PhysConn_Video_Tuner:
|
||||
if(verbose)printf(" - Tuner\n");
|
||||
DebugPrintOut(" - Tuner\n");
|
||||
break;
|
||||
case PhysConn_Video_USB:
|
||||
if(verbose)printf(" - USB\n");
|
||||
DebugPrintOut(" - USB\n");
|
||||
break;
|
||||
case PhysConn_Video_1394:
|
||||
if(verbose)printf(" - Firewire\n");
|
||||
DebugPrintOut(" - Firewire\n");
|
||||
break;
|
||||
}
|
||||
|
||||
@ -3074,7 +3113,7 @@ HRESULT videoInput::routeCrossbar(ICaptureGraphBuilder2 **ppBuild, IBaseFilter *
|
||||
}
|
||||
Crossbar->Route(pOIndex,pIndex);
|
||||
}else{
|
||||
if(verbose) printf("SETUP: Didn't find specified Physical Connection type. Using Defualt. \n");
|
||||
DebugPrintOut("SETUP: Didn't find specified Physical Connection type. Using Defualt.\n");
|
||||
}
|
||||
|
||||
//we only free the crossbar when we close or restart the device
|
||||
@ -3086,20 +3125,13 @@ HRESULT videoInput::routeCrossbar(ICaptureGraphBuilder2 **ppBuild, IBaseFilter *
|
||||
if(pXBar1)pXBar1 = NULL;
|
||||
|
||||
}else{
|
||||
if(verbose) printf("SETUP: You are a webcam or snazzy firewire cam! No Crossbar needed\n");
|
||||
DebugPrintOut("SETUP: You are a webcam or snazzy firewire cam! No Crossbar needed\n");
|
||||
return hr;
|
||||
}
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
struct SuppressVideoInputMessages
|
||||
{
|
||||
SuppressVideoInputMessages() { videoInput::setVerbose(false); }
|
||||
};
|
||||
|
||||
static SuppressVideoInputMessages do_it;
|
||||
|
||||
namespace cv
|
||||
{
|
||||
videoInput VideoCapture_DShow::g_VI;
|
||||
|
Loading…
x
Reference in New Issue
Block a user