Commit 05563f5b authored by Alexey Nikolaev's avatar Alexey Nikolaev Committed by Alexander Alekhin

Merge pull request #14592 from aleksey-nikolaev:master

VideoCapture Direct Show. Added getter for CV_CAP_PROP_CONVERT_RGB, CAP_PROP_CHANNEL properties. (#14592)

* Added getter for CV_CAP_PROP_CONVERT_RGB, CAP_PROP_CHANNEL properties.
Some refactoring.

* One space less.
parent 61d3222a
...@@ -527,6 +527,8 @@ class videoInput{ ...@@ -527,6 +527,8 @@ class videoInput{
int getFourcc(int deviceID) const; int getFourcc(int deviceID) const;
double getFPS(int deviceID) const; double getFPS(int deviceID) const;
int getChannel(int deviceID) const;
// RGB conversion setting // RGB conversion setting
bool getConvertRGB(int deviceID); bool getConvertRGB(int deviceID);
bool setConvertRGB(int deviceID, bool enable); bool setConvertRGB(int deviceID, bool enable);
...@@ -962,6 +964,16 @@ videoDevice::~videoDevice(){ ...@@ -962,6 +964,16 @@ videoDevice::~videoDevice(){
HRESULT HR = NOERROR; HRESULT HR = NOERROR;
//Check to see if the graph is running, if so stop it.
if( (pControl) )
{
HR = pControl->Pause();
if (FAILED(HR)) DebugPrintOut("ERROR - Could not pause pControl\n");
HR = pControl->Stop();
if (FAILED(HR)) DebugPrintOut("ERROR - Could not stop pControl\n");
}
//Stop the callback and free it //Stop the callback and free it
if( (sgCallback) && (pGrabber) ) if( (sgCallback) && (pGrabber) )
{ {
...@@ -978,16 +990,6 @@ videoDevice::~videoDevice(){ ...@@ -978,16 +990,6 @@ videoDevice::~videoDevice(){
delete sgCallback; delete sgCallback;
} }
//Check to see if the graph is running, if so stop it.
if( (pControl) )
{
HR = pControl->Pause();
if (FAILED(HR)) DebugPrintOut("ERROR - Could not pause pControl\n");
HR = pControl->Stop();
if (FAILED(HR)) DebugPrintOut("ERROR - Could not stop pControl\n");
}
//Disconnect filters from capture device //Disconnect filters from capture device
if( (pVideoInputFilter) )NukeDownstream(pVideoInputFilter); if( (pVideoInputFilter) )NukeDownstream(pVideoInputFilter);
...@@ -1479,6 +1481,12 @@ double videoInput::getFPS(int id) const ...@@ -1479,6 +1481,12 @@ double videoInput::getFPS(int id) const
} }
int videoInput::getChannel(int deviceID) const
{
if (!isDeviceSetup(deviceID))
return 0;
return VDList[deviceID]->storeConn;
}
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
// //
...@@ -3332,11 +3340,15 @@ double VideoCapture_DShow::getProperty(int propIdx) const ...@@ -3332,11 +3340,15 @@ double VideoCapture_DShow::getProperty(int propIdx) const
return g_VI.getFourcc(m_index); return g_VI.getFourcc(m_index);
case CV_CAP_PROP_FPS: case CV_CAP_PROP_FPS:
return g_VI.getFPS(m_index); return g_VI.getFPS(m_index);
case CV_CAP_PROP_CONVERT_RGB:
return g_VI.getConvertRGB(m_index);
case CAP_PROP_CHANNEL:
return g_VI.getChannel(m_index);
case CV_CAP_PROP_AUTOFOCUS: case CV_CAP_PROP_AUTOFOCUS:
// Flags indicate whether or not autofocus is enabled // Flags indicate whether or not autofocus is enabled
if (g_VI.getVideoSettingCamera(m_index, CameraControl_Focus, min_value, max_value, stepping_delta, current_value, flags, defaultValue)) if (g_VI.getVideoSettingCamera(m_index, CameraControl_Focus, min_value, max_value, stepping_delta, current_value, flags, defaultValue))
return (double)flags; return (double)flags;
return -1; break;
// video filter properties // video filter properties
case CV_CAP_PROP_BRIGHTNESS: case CV_CAP_PROP_BRIGHTNESS:
...@@ -3351,7 +3363,7 @@ double VideoCapture_DShow::getProperty(int propIdx) const ...@@ -3351,7 +3363,7 @@ double VideoCapture_DShow::getProperty(int propIdx) const
case CV_CAP_PROP_GAIN: case CV_CAP_PROP_GAIN:
if (g_VI.getVideoSettingFilter(m_index, g_VI.getVideoPropertyFromCV(propIdx), min_value, max_value, stepping_delta, current_value, flags, defaultValue)) if (g_VI.getVideoSettingFilter(m_index, g_VI.getVideoPropertyFromCV(propIdx), min_value, max_value, stepping_delta, current_value, flags, defaultValue))
return (double)current_value; return (double)current_value;
return -1; break;
// camera properties // camera properties
case CV_CAP_PROP_PAN: case CV_CAP_PROP_PAN:
...@@ -3363,14 +3375,12 @@ double VideoCapture_DShow::getProperty(int propIdx) const ...@@ -3363,14 +3375,12 @@ double VideoCapture_DShow::getProperty(int propIdx) const
case CV_CAP_PROP_FOCUS: case CV_CAP_PROP_FOCUS:
if (g_VI.getVideoSettingCamera(m_index, g_VI.getCameraPropertyFromCV(propIdx), min_value, max_value, stepping_delta, current_value, flags, defaultValue)) if (g_VI.getVideoSettingCamera(m_index, g_VI.getCameraPropertyFromCV(propIdx), min_value, max_value, stepping_delta, current_value, flags, defaultValue))
return (double)current_value; return (double)current_value;
return -1; break;
} case CV_CAP_PROP_SETTINGS:
if (propIdx == CV_CAP_PROP_SETTINGS )
{
return g_VI.property_window_count(m_index); return g_VI.property_window_count(m_index);
default:
break;
} }
// unknown parameter or value not available // unknown parameter or value not available
return -1; return -1;
} }
...@@ -3470,12 +3480,6 @@ bool VideoCapture_DShow::setProperty(int propIdx, double propVal) ...@@ -3470,12 +3480,6 @@ bool VideoCapture_DShow::setProperty(int propIdx, double propVal)
return true; return true;
} }
// show video/camera filter dialog
if (propIdx == CV_CAP_PROP_SETTINGS )
{
return g_VI.showSettingsWindow(m_index);
}
//video Filter properties //video Filter properties
switch (propIdx) switch (propIdx)
{ {
...@@ -3503,6 +3507,9 @@ bool VideoCapture_DShow::setProperty(int propIdx, double propVal) ...@@ -3503,6 +3507,9 @@ bool VideoCapture_DShow::setProperty(int propIdx, double propVal)
case CV_CAP_PROP_IRIS: case CV_CAP_PROP_IRIS:
case CV_CAP_PROP_FOCUS: case CV_CAP_PROP_FOCUS:
return g_VI.setVideoSettingCamera(m_index, g_VI.getCameraPropertyFromCV(propIdx), (long)propVal); return g_VI.setVideoSettingCamera(m_index, g_VI.getCameraPropertyFromCV(propIdx), (long)propVal);
// show video/camera filter dialog
case CV_CAP_PROP_SETTINGS:
return g_VI.showSettingsWindow(m_index);
} }
return false; return false;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment