221b522118
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 |
||
---|---|---|
peerconnection | ||
src | ||
test | ||
third_party | ||
third_party_mods | ||
tools | ||
android-webrtc.mk | ||
Android.mk | ||
AUTHORS | ||
codereview.settings | ||
DEPS | ||
libvpx.mk | ||
LICENSE | ||
license_template.txt | ||
LICENSE_THIRD_PARTY | ||
OWNERS | ||
PATENTS | ||
PRESUBMIT.py | ||
WATCHLISTS | ||
webrtc.gyp |