wu@webrtc.org 221b522118 Return the number of /dev/video* without trying to open it.
Consider the case when there're /dev/video0 and /dev/video1. But for somereason the video0 is not in a correct state and can't be open. As a result, current NumberOfDevices will return 1, which is fine. However, we will then never be able to get the device we really want - /dev/video1. Consider the code below, the GetCaptureDevice will fail because it calls into DeviceInfoLinux::GetDeviceName(0, ...) which will again try to open the /dev/video0. So the root cause is the mismatching of the NumberOfDevices and GetDeviceName.

Since we will open the device in DeviceInfoLinux::GetDeviceName anyway, I think we should return the number of /dev/video* in DeviceInfoLinux::NumberOfDevices without trying to open it. Otherwise the DeviceInfoLinux::NumberOfDevices should return more information like which /dev/video* is valid which is not.

bool found = false;
for (int i = 0; i < vie_capture->NumberOfCaptureDevices(); ++i) {
  if (vie_capture->GetCaptureDevice(i, ...) == 0) {
    found = true;
    break;
  }
}
Review URL: http://webrtc-codereview.appspot.com/148004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@635 4adac7df-926f-26a2-2b94-8c16560cd09d
2011-09-21 16:57:15 +00:00
2011-09-14 17:02:44 +00:00
2011-08-05 22:20:03 +00:00
2011-09-06 10:12:28 +00:00
2011-09-19 21:59:33 +00:00
2011-05-31 22:47:37 +00:00
2011-09-14 17:02:44 +00:00
Description
No description provided
108 MiB
Languages
C++ 76%
C 16%
Python 2.3%
Java 2.1%
Objective-C++ 1.5%
Other 1.9%