Remove DeviceManager and DeviceInfo.
BUG=webrtc:5615, webrtc:5620
Review URL: https://codereview.webrtc.org/1715883002
Cr-Commit-Position: refs/heads/master@{#12020}
diff --git a/talk/app/webrtc/legacy_objc_api.gyp b/talk/app/webrtc/legacy_objc_api.gyp
index 9b3bb85..d2698e4 100755
--- a/talk/app/webrtc/legacy_objc_api.gyp
+++ b/talk/app/webrtc/legacy_objc_api.gyp
@@ -178,6 +178,7 @@
'xcode_settings': {
'OTHER_LDFLAGS': [
'-framework Cocoa',
+ '-framework OpenGL',
],
},
},
diff --git a/talk/app/webrtc/objc/RTCVideoCapturer.mm b/talk/app/webrtc/objc/RTCVideoCapturer.mm
index 50e1cef..9dbc201 100644
--- a/talk/app/webrtc/objc/RTCVideoCapturer.mm
+++ b/talk/app/webrtc/objc/RTCVideoCapturer.mm
@@ -34,25 +34,16 @@
#include <memory>
#include "webrtc/media/base/videocapturer.h"
-#include "webrtc/media/devices/devicemanager.h"
+#include "webrtc/media/engine/webrtcvideocapturerfactory.h"
@implementation RTCVideoCapturer {
std::unique_ptr<cricket::VideoCapturer> _capturer;
}
+ (RTCVideoCapturer*)capturerWithDeviceName:(NSString*)deviceName {
- const std::string& device_name = std::string([deviceName UTF8String]);
- std::unique_ptr<cricket::DeviceManagerInterface> device_manager(
- cricket::DeviceManagerFactory::Create());
- bool initialized = device_manager->Init();
- NSAssert(initialized, @"DeviceManager::Init() failed");
- cricket::Device device;
- if (!device_manager->GetVideoCaptureDevice(device_name, &device)) {
- LOG(LS_ERROR) << "GetVideoCaptureDevice failed";
- return 0;
- }
- std::unique_ptr<cricket::VideoCapturer> capturer(
- device_manager->CreateVideoCapturer(device));
+ cricket::WebRtcVideoDeviceCapturerFactory factory;
+ cricket::Device device(std::string(deviceName.UTF8String), 0);
+ rtc::scoped_ptr<cricket::VideoCapturer> capturer(factory.Create(device));
RTCVideoCapturer* rtcCapturer =
[[RTCVideoCapturer alloc] initWithCapturer:capturer.release()];
return rtcCapturer;
diff --git a/webrtc/api/api.gyp b/webrtc/api/api.gyp
index d97c38b..93db18b 100644
--- a/webrtc/api/api.gyp
+++ b/webrtc/api/api.gyp
@@ -236,6 +236,13 @@
'objc/RTCNSGLVideoView.h',
'objc/RTCNSGLVideoView.m',
],
+ 'link_settings': {
+ 'xcode_settings': {
+ 'OTHER_LDFLAGS': [
+ '-framework OpenGL',
+ ],
+ },
+ },
}],
],
}
diff --git a/webrtc/examples/peerconnection/client/conductor.cc b/webrtc/examples/peerconnection/client/conductor.cc
index 2facf94..ca07ef3 100644
--- a/webrtc/examples/peerconnection/client/conductor.cc
+++ b/webrtc/examples/peerconnection/client/conductor.cc
@@ -19,7 +19,8 @@
#include "webrtc/base/json.h"
#include "webrtc/base/logging.h"
#include "webrtc/examples/peerconnection/client/defaults.h"
-#include "webrtc/media/devices/devicemanager.h"
+#include "webrtc/media/engine/webrtcvideocapturerfactory.h"
+#include "webrtc/modules/video_capture/video_capture_factory.h"
// Names used for a IceCandidate JSON object.
const char kCandidateSdpMidName[] = "sdpMid";
@@ -369,23 +370,31 @@
}
cricket::VideoCapturer* Conductor::OpenVideoCaptureDevice() {
- rtc::scoped_ptr<cricket::DeviceManagerInterface> dev_manager(
- cricket::DeviceManagerFactory::Create());
- if (!dev_manager->Init()) {
- LOG(LS_ERROR) << "Can't create device manager";
- return NULL;
+ std::vector<std::string> device_names;
+ {
+ std::unique_ptr<webrtc::VideoCaptureModule::DeviceInfo> info(
+ webrtc::VideoCaptureFactory::CreateDeviceInfo(0));
+ if (!info) {
+ return nullptr;
+ }
+ int num_devices = info->NumberOfDevices();
+ for (int i = 0; i < num_devices; ++i) {
+ const uint32_t kSize = 256;
+ char name[kSize] = {0};
+ char id[kSize] = {0};
+ if (info->GetDeviceName(i, name, kSize, id, kSize) != -1) {
+ device_names.push_back(name);
+ }
+ }
}
- std::vector<cricket::Device> devs;
- if (!dev_manager->GetVideoCaptureDevices(&devs)) {
- LOG(LS_ERROR) << "Can't enumerate video devices";
- return NULL;
- }
- std::vector<cricket::Device>::iterator dev_it = devs.begin();
- cricket::VideoCapturer* capturer = NULL;
- for (; dev_it != devs.end(); ++dev_it) {
- capturer = dev_manager->CreateVideoCapturer(*dev_it);
- if (capturer != NULL)
+
+ cricket::WebRtcVideoDeviceCapturerFactory factory;
+ cricket::VideoCapturer* capturer = nullptr;
+ for (const auto& name : device_names) {
+ capturer = factory.Create(cricket::Device(name, 0));
+ if (capturer) {
break;
+ }
}
return capturer;
}
diff --git a/webrtc/media/base/fakemediaengine.h b/webrtc/media/base/fakemediaengine.h
index 8869667..831ac06 100644
--- a/webrtc/media/base/fakemediaengine.h
+++ b/webrtc/media/base/fakemediaengine.h
@@ -750,11 +750,6 @@
const std::vector<VideoCodec>& codecs() const { return codecs_; }
void SetCodecs(const std::vector<VideoCodec> codecs) { codecs_ = codecs; }
- bool SetCaptureDevice(const Device* device) {
- in_device_ = (device) ? device->name : "";
- options_changed_ = true;
- return true;
- }
bool SetCapture(bool capture) {
capture_ = capture;
return true;
@@ -763,7 +758,6 @@
private:
std::vector<FakeVideoMediaChannel*> channels_;
std::vector<VideoCodec> codecs_;
- std::string in_device_;
bool capture_;
VideoOptions options_;
diff --git a/webrtc/media/base/mediaengine.h b/webrtc/media/base/mediaengine.h
index 479d1ac..f113840 100644
--- a/webrtc/media/base/mediaengine.h
+++ b/webrtc/media/base/mediaengine.h
@@ -26,7 +26,6 @@
#include "webrtc/media/base/mediacommon.h"
#include "webrtc/media/base/videocapturer.h"
#include "webrtc/media/base/videocommon.h"
-#include "webrtc/media/devices/devicemanager.h"
#if defined(GOOGLE_CHROME_BUILD) || defined(CHROMIUM_BUILD)
#define DISABLE_MEDIA_ENGINE_FACTORY
diff --git a/webrtc/media/base/videocapturer.h b/webrtc/media/base/videocapturer.h
index b8b5e1d..84f896b 100644
--- a/webrtc/media/base/videocapturer.h
+++ b/webrtc/media/base/videocapturer.h
@@ -30,7 +30,6 @@
#include "webrtc/media/base/videobroadcaster.h"
#include "webrtc/media/base/videocommon.h"
#include "webrtc/media/base/videoframefactory.h"
-#include "webrtc/media/devices/devicemanager.h"
namespace cricket {
diff --git a/webrtc/media/base/videoengine_unittest.h b/webrtc/media/base/videoengine_unittest.h
index 2b4858e..f44e63a 100644
--- a/webrtc/media/base/videoengine_unittest.h
+++ b/webrtc/media/base/videoengine_unittest.h
@@ -109,7 +109,6 @@
}
virtual void SetUp() {
- cricket::Device device("test", "device");
engine_.Init();
channel_.reset(engine_.CreateChannel(call_.get(), cricket::MediaConfig(),
cricket::VideoOptions()));
diff --git a/webrtc/media/devices/deviceinfo.h b/webrtc/media/devices/deviceinfo.h
deleted file mode 100644
index 3023b1c..0000000
--- a/webrtc/media/devices/deviceinfo.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MEDIA_DEVICES_DEVICEINFO_H_
-#define WEBRTC_MEDIA_DEVICES_DEVICEINFO_H_
-
-#include <string>
-
-#include "webrtc/media/devices/devicemanager.h"
-
-namespace cricket {
-
-bool GetUsbId(const Device& device, std::string* usb_id);
-bool GetUsbVersion(const Device& device, std::string* usb_version);
-
-} // namespace cricket
-
-#endif // WEBRTC_MEDIA_DEVICES_DEVICEINFO_H_
diff --git a/webrtc/media/devices/devicemanager.cc b/webrtc/media/devices/devicemanager.cc
deleted file mode 100644
index 9fca67c..0000000
--- a/webrtc/media/devices/devicemanager.cc
+++ /dev/null
@@ -1,305 +0,0 @@
-/*
- * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/media/devices/devicemanager.h"
-
-#include "webrtc/base/fileutils.h"
-#include "webrtc/base/logging.h"
-#include "webrtc/base/pathutils.h"
-#include "webrtc/base/stringutils.h"
-#include "webrtc/base/thread.h"
-#include "webrtc/base/windowpicker.h"
-#include "webrtc/base/windowpickerfactory.h"
-#include "webrtc/media/base/mediacommon.h"
-#include "webrtc/media/base/videocapturer.h"
-#include "webrtc/media/base/videocapturerfactory.h"
-#include "webrtc/media/devices/deviceinfo.h"
-
-#ifdef HAVE_WEBRTC_VIDEO
-#include "webrtc/media/engine/webrtcvideocapturerfactory.h"
-#endif // HAVE_WEBRTC_VIDEO
-
-namespace {
-
-bool StringMatchWithWildcard(
- const std::pair<const std::basic_string<char>, cricket::VideoFormat> key,
- const std::string& val) {
- return rtc::string_match(val.c_str(), key.first.c_str());
-}
-
-} // namespace
-
-namespace cricket {
-
-// Initialize to empty string.
-const char DeviceManagerInterface::kDefaultDeviceName[] = "";
-
-DeviceManager::DeviceManager()
- : initialized_(false),
- window_picker_(rtc::WindowPickerFactory::CreateWindowPicker()) {
-#ifdef HAVE_WEBRTC_VIDEO
- SetVideoDeviceCapturerFactory(new WebRtcVideoDeviceCapturerFactory());
-#endif // HAVE_WEBRTC_VIDEO
-}
-
-DeviceManager::~DeviceManager() {
- if (initialized()) {
- Terminate();
- }
-}
-
-bool DeviceManager::Init() {
- if (!initialized()) {
- if (!watcher()->Start()) {
- return false;
- }
- set_initialized(true);
- }
- return true;
-}
-
-void DeviceManager::Terminate() {
- if (initialized()) {
- watcher()->Stop();
- set_initialized(false);
- }
-}
-
-int DeviceManager::GetCapabilities() {
- std::vector<Device> devices;
- int caps = VIDEO_RECV;
- if (GetAudioInputDevices(&devices) && !devices.empty()) {
- caps |= AUDIO_SEND;
- }
- if (GetAudioOutputDevices(&devices) && !devices.empty()) {
- caps |= AUDIO_RECV;
- }
- if (GetVideoCaptureDevices(&devices) && !devices.empty()) {
- caps |= VIDEO_SEND;
- }
- return caps;
-}
-
-bool DeviceManager::GetAudioInputDevices(std::vector<Device>* devices) {
- return GetAudioDevices(true, devices);
-}
-
-bool DeviceManager::GetAudioOutputDevices(std::vector<Device>* devices) {
- return GetAudioDevices(false, devices);
-}
-
-bool DeviceManager::GetAudioInputDevice(const std::string& name, Device* out) {
- return GetAudioDevice(true, name, out);
-}
-
-bool DeviceManager::GetAudioOutputDevice(const std::string& name, Device* out) {
- return GetAudioDevice(false, name, out);
-}
-
-bool DeviceManager::GetVideoCaptureDevices(std::vector<Device>* devices) {
- devices->clear();
-#if defined(ANDROID) || defined(WEBRTC_IOS)
- // On Android and iOS, we treat the camera(s) as a single device. Even if
- // there are multiple cameras, that's abstracted away at a higher level.
- Device dev("camera", "1"); // name and ID
- devices->push_back(dev);
- return true;
-#else
- return false;
-#endif
-}
-
-bool DeviceManager::GetVideoCaptureDevice(const std::string& name,
- Device* out) {
- // If the name is empty, return the default device.
- if (name.empty() || name == kDefaultDeviceName) {
- return GetDefaultVideoCaptureDevice(out);
- }
-
- std::vector<Device> devices;
- if (!GetVideoCaptureDevices(&devices)) {
- return false;
- }
-
- for (std::vector<Device>::const_iterator it = devices.begin();
- it != devices.end(); ++it) {
- if (name == it->name) {
- *out = *it;
- return true;
- }
- }
-
- return false;
-}
-
-void DeviceManager::SetVideoCaptureDeviceMaxFormat(
- const std::string& usb_id,
- const VideoFormat& max_format) {
- max_formats_[usb_id] = max_format;
-}
-
-void DeviceManager::ClearVideoCaptureDeviceMaxFormat(
- const std::string& usb_id) {
- max_formats_.erase(usb_id);
-}
-
-VideoCapturer* DeviceManager::CreateVideoCapturer(const Device& device) const {
- if (!video_device_capturer_factory_) {
- LOG(LS_ERROR) << "No video capturer factory for devices.";
- return NULL;
- }
- cricket::VideoCapturer* capturer =
- video_device_capturer_factory_->Create(device);
- if (!capturer) {
- return NULL;
- }
- LOG(LS_INFO) << "Created VideoCapturer for " << device.name;
- VideoFormat video_format;
- bool has_max = GetMaxFormat(device, &video_format);
- capturer->set_enable_camera_list(has_max);
- if (has_max) {
- capturer->ConstrainSupportedFormats(video_format);
- }
- return capturer;
-}
-
-bool DeviceManager::GetWindows(
- std::vector<rtc::WindowDescription>* descriptions) {
- if (!window_picker_) {
- return false;
- }
- return window_picker_->GetWindowList(descriptions);
-}
-
-bool DeviceManager::GetDesktops(
- std::vector<rtc::DesktopDescription>* descriptions) {
- if (!window_picker_) {
- return false;
- }
- return window_picker_->GetDesktopList(descriptions);
-}
-
-VideoCapturer* DeviceManager::CreateScreenCapturer(
- const ScreencastId& screenid) const {
- if (!screen_capturer_factory_) {
- LOG(LS_ERROR) << "No video capturer factory for screens.";
- return NULL;
- }
- return screen_capturer_factory_->Create(screenid);
-}
-
-bool DeviceManager::GetAudioDevices(bool input,
- std::vector<Device>* devs) {
- devs->clear();
-#if defined(ANDROID)
- // Under Android, 0 is always required for the playout device and 0 is the
- // default for the recording device.
- devs->push_back(Device("default-device", 0));
- return true;
-#else
- // Other platforms either have their own derived class implementation
- // (desktop) or don't use device manager for audio devices (iOS).
- return false;
-#endif
-}
-
-bool DeviceManager::GetAudioDevice(bool is_input, const std::string& name,
- Device* out) {
- // If the name is empty, return the default device id.
- if (name.empty() || name == kDefaultDeviceName) {
- *out = Device(name, -1);
- return true;
- }
-
- std::vector<Device> devices;
- bool ret = is_input ? GetAudioInputDevices(&devices) :
- GetAudioOutputDevices(&devices);
- if (ret) {
- ret = false;
- for (size_t i = 0; i < devices.size(); ++i) {
- if (devices[i].name == name) {
- *out = devices[i];
- ret = true;
- break;
- }
- }
- }
- return ret;
-}
-
-bool DeviceManager::GetDefaultVideoCaptureDevice(Device* device) {
- bool ret = false;
- // We just return the first device.
- std::vector<Device> devices;
- ret = (GetVideoCaptureDevices(&devices) && !devices.empty());
- if (ret) {
- *device = devices[0];
- }
- return ret;
-}
-
-bool DeviceManager::IsInWhitelist(const std::string& key,
- VideoFormat* video_format) const {
- std::map<std::string, VideoFormat>::const_iterator found =
- std::search_n(max_formats_.begin(), max_formats_.end(), 1, key,
- StringMatchWithWildcard);
- if (found == max_formats_.end()) {
- return false;
- }
- *video_format = found->second;
- return true;
-}
-
-bool DeviceManager::GetMaxFormat(const Device& device,
- VideoFormat* video_format) const {
- // Match USB ID if available. Failing that, match device name.
- std::string usb_id;
- if (GetUsbId(device, &usb_id) && IsInWhitelist(usb_id, video_format)) {
- return true;
- }
- return IsInWhitelist(device.name, video_format);
-}
-
-bool DeviceManager::ShouldDeviceBeIgnored(const std::string& device_name,
- const char* const exclusion_list[]) {
- // If exclusion_list is empty return directly.
- if (!exclusion_list)
- return false;
-
- int i = 0;
- while (exclusion_list[i]) {
- if (strnicmp(device_name.c_str(), exclusion_list[i],
- strlen(exclusion_list[i])) == 0) {
- LOG(LS_INFO) << "Ignoring device " << device_name;
- return true;
- }
- ++i;
- }
- return false;
-}
-
-bool DeviceManager::FilterDevices(std::vector<Device>* devices,
- const char* const exclusion_list[]) {
- if (!devices) {
- return false;
- }
-
- for (std::vector<Device>::iterator it = devices->begin();
- it != devices->end(); ) {
- if (ShouldDeviceBeIgnored(it->name, exclusion_list)) {
- it = devices->erase(it);
- } else {
- ++it;
- }
- }
- return true;
-}
-
-} // namespace cricket
diff --git a/webrtc/media/devices/devicemanager.h b/webrtc/media/devices/devicemanager.h
deleted file mode 100644
index 01f4cb3..0000000
--- a/webrtc/media/devices/devicemanager.h
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MEDIA_DEVICES_DEVICEMANAGER_H_
-#define WEBRTC_MEDIA_DEVICES_DEVICEMANAGER_H_
-
-#include <map>
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "webrtc/base/sigslot.h"
-#include "webrtc/base/stringencode.h"
-#include "webrtc/base/window.h"
-#include "webrtc/media/base/device.h"
-#include "webrtc/media/base/screencastid.h"
-#include "webrtc/media/base/videocapturerfactory.h"
-#include "webrtc/media/base/videocommon.h"
-
-namespace rtc {
-
-class DesktopDescription;
-class WindowDescription;
-class WindowPicker;
-
-}
-namespace cricket {
-
-class VideoCapturer;
-
-// DeviceManagerInterface - interface to manage the audio and
-// video devices on the system.
-class DeviceManagerInterface {
- public:
- virtual ~DeviceManagerInterface() { }
-
- // Initialization
- virtual bool Init() = 0;
- virtual void Terminate() = 0;
-
- // Capabilities
- virtual int GetCapabilities() = 0;
-
- // Device enumeration
- virtual bool GetAudioInputDevices(std::vector<Device>* devices) = 0;
- virtual bool GetAudioOutputDevices(std::vector<Device>* devices) = 0;
-
- virtual bool GetAudioInputDevice(const std::string& name, Device* out) = 0;
- virtual bool GetAudioOutputDevice(const std::string& name, Device* out) = 0;
-
- virtual bool GetVideoCaptureDevices(std::vector<Device>* devs) = 0;
- virtual bool GetVideoCaptureDevice(const std::string& name, Device* out) = 0;
-
- // If the device manager needs to create video capturers, here is
- // how to control which video capturers are created. These take
- // ownership of the factories.
- virtual void SetVideoDeviceCapturerFactory(
- VideoDeviceCapturerFactory* video_device_capturer_factory) = 0;
- virtual void SetScreenCapturerFactory(
- ScreenCapturerFactory* screen_capturer_factory) = 0;
-
- // Caps the capture format according to max format for capturers created
- // by CreateVideoCapturer(). See ConstrainSupportedFormats() in
- // videocapturer.h for more detail.
- // Note that once a VideoCapturer has been created, calling this API will
- // not affect it.
- virtual void SetVideoCaptureDeviceMaxFormat(
- const std::string& usb_id,
- const VideoFormat& max_format) = 0;
- virtual void ClearVideoCaptureDeviceMaxFormat(const std::string& usb_id) = 0;
-
- // Device creation
- virtual VideoCapturer* CreateVideoCapturer(const Device& device) const = 0;
-
- virtual bool GetWindows(
- std::vector<rtc::WindowDescription>* descriptions) = 0;
- virtual bool GetDesktops(
- std::vector<rtc::DesktopDescription>* descriptions) = 0;
- virtual VideoCapturer* CreateScreenCapturer(
- const ScreencastId& screenid) const = 0;
-
- sigslot::signal0<> SignalDevicesChange;
-
- static const char kDefaultDeviceName[];
-};
-
-class DeviceWatcher {
- public:
- explicit DeviceWatcher(DeviceManagerInterface* dm) {}
- virtual ~DeviceWatcher() {}
- virtual bool Start() { return true; }
- virtual void Stop() {}
-};
-
-class DeviceManagerFactory {
- public:
- static DeviceManagerInterface* Create();
-
- private:
- DeviceManagerFactory() {}
-};
-
-class DeviceManager : public DeviceManagerInterface {
- public:
- DeviceManager();
- virtual ~DeviceManager();
-
- // Initialization
- virtual bool Init();
- virtual void Terminate();
-
- // Capabilities
- virtual int GetCapabilities();
-
- // Device enumeration
- virtual bool GetAudioInputDevices(std::vector<Device>* devices);
- virtual bool GetAudioOutputDevices(std::vector<Device>* devices);
-
- virtual bool GetAudioInputDevice(const std::string& name, Device* out);
- virtual bool GetAudioOutputDevice(const std::string& name, Device* out);
-
- virtual bool GetVideoCaptureDevices(std::vector<Device>* devs);
- virtual bool GetVideoCaptureDevice(const std::string& name, Device* out);
-
- virtual void SetVideoDeviceCapturerFactory(
- VideoDeviceCapturerFactory* video_device_capturer_factory) {
- video_device_capturer_factory_.reset(video_device_capturer_factory);
- }
- virtual void SetScreenCapturerFactory(
- ScreenCapturerFactory* screen_capturer_factory) {
- screen_capturer_factory_.reset(screen_capturer_factory);
- }
-
-
- virtual void SetVideoCaptureDeviceMaxFormat(const std::string& usb_id,
- const VideoFormat& max_format);
- virtual void ClearVideoCaptureDeviceMaxFormat(const std::string& usb_id);
-
- // TODO(pthatcher): Rename to CreateVideoDeviceCapturer.
- virtual VideoCapturer* CreateVideoCapturer(const Device& device) const;
-
- virtual bool GetWindows(
- std::vector<rtc::WindowDescription>* descriptions);
- virtual bool GetDesktops(
- std::vector<rtc::DesktopDescription>* descriptions);
- virtual VideoCapturer* CreateScreenCapturer(
- const ScreencastId& screenid) const;
-
- // The exclusion_list MUST be a NULL terminated list.
- static bool FilterDevices(std::vector<Device>* devices,
- const char* const exclusion_list[]);
- bool initialized() const { return initialized_; }
-
- protected:
- virtual bool GetAudioDevices(bool input, std::vector<Device>* devs);
- virtual bool GetAudioDevice(bool is_input, const std::string& name,
- Device* out);
- virtual bool GetDefaultVideoCaptureDevice(Device* device);
- bool IsInWhitelist(const std::string& key, VideoFormat* video_format) const;
- virtual bool GetMaxFormat(const Device& device,
- VideoFormat* video_format) const;
-
- void set_initialized(bool initialized) { initialized_ = initialized; }
-
- void set_watcher(DeviceWatcher* watcher) { watcher_.reset(watcher); }
- DeviceWatcher* watcher() { return watcher_.get(); }
-
- private:
- // The exclusion_list MUST be a NULL terminated list.
- static bool ShouldDeviceBeIgnored(const std::string& device_name,
- const char* const exclusion_list[]);
-
- bool initialized_;
- std::unique_ptr<
- VideoDeviceCapturerFactory> video_device_capturer_factory_;
- std::unique_ptr<
- ScreenCapturerFactory> screen_capturer_factory_;
- std::map<std::string, VideoFormat> max_formats_;
- std::unique_ptr<DeviceWatcher> watcher_;
- std::unique_ptr<rtc::WindowPicker> window_picker_;
-};
-
-} // namespace cricket
-
-#endif // WEBRTC_MEDIA_DEVICES_DEVICEMANAGER_H_
diff --git a/webrtc/media/devices/devicemanager_unittest.cc b/webrtc/media/devices/devicemanager_unittest.cc
deleted file mode 100644
index abf018a..0000000
--- a/webrtc/media/devices/devicemanager_unittest.cc
+++ /dev/null
@@ -1,443 +0,0 @@
-/*
- * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/media/devices/devicemanager.h"
-
-#ifdef WIN32
-#include <objbase.h>
-#include "webrtc/base/win32.h"
-#endif
-
-#include <memory>
-#include <string>
-
-#include "webrtc/base/arraysize.h"
-#include "webrtc/base/fileutils.h"
-#include "webrtc/base/gunit.h"
-#include "webrtc/base/logging.h"
-#include "webrtc/base/pathutils.h"
-#include "webrtc/base/stream.h"
-#include "webrtc/base/windowpickerfactory.h"
-#include "webrtc/media/base/fakevideocapturer.h"
-#include "webrtc/media/base/screencastid.h"
-#include "webrtc/media/base/testutils.h"
-#include "webrtc/media/base/videocapturerfactory.h"
-#include "webrtc/media/devices/v4llookup.h"
-
-#ifdef WEBRTC_LINUX
-// TODO(juberti): Figure out why this doesn't compile on Windows.
-#include "webrtc/base/fileutils_mock.h"
-#endif // WEBRTC_LINUX
-
-using rtc::Pathname;
-using rtc::FileTimeType;
-using cricket::Device;
-using cricket::DeviceManager;
-using cricket::DeviceManagerFactory;
-using cricket::DeviceManagerInterface;
-
-const cricket::VideoFormat kVgaFormat(640, 480,
- cricket::VideoFormat::FpsToInterval(30),
- cricket::FOURCC_I420);
-const cricket::VideoFormat kHdFormat(1280, 720,
- cricket::VideoFormat::FpsToInterval(30),
- cricket::FOURCC_I420);
-
-class FakeVideoDeviceCapturerFactory :
- public cricket::VideoDeviceCapturerFactory {
- public:
- FakeVideoDeviceCapturerFactory() {}
- virtual ~FakeVideoDeviceCapturerFactory() {}
-
- virtual cricket::VideoCapturer* Create(const cricket::Device& device) {
- return new cricket::FakeVideoCapturer;
- }
-};
-
-class FakeScreenCapturerFactory : public cricket::ScreenCapturerFactory {
- public:
- FakeScreenCapturerFactory() {}
- virtual ~FakeScreenCapturerFactory() {}
-
- virtual cricket::VideoCapturer* Create(
- const cricket::ScreencastId& screenid) {
- return new cricket::FakeVideoCapturer;
- }
-};
-
-class DeviceManagerTestFake : public testing::Test {
- public:
- virtual void SetUp() {
- dm_.reset(DeviceManagerFactory::Create());
- EXPECT_TRUE(dm_->Init());
- DeviceManager* device_manager = static_cast<DeviceManager*>(dm_.get());
- device_manager->SetVideoDeviceCapturerFactory(
- new FakeVideoDeviceCapturerFactory());
- device_manager->SetScreenCapturerFactory(
- new FakeScreenCapturerFactory());
- }
-
- virtual void TearDown() {
- dm_->Terminate();
- }
-
- protected:
- std::unique_ptr<DeviceManagerInterface> dm_;
-};
-
-
-// Test that we startup/shutdown properly.
-TEST(DeviceManagerTest, StartupShutdown) {
- std::unique_ptr<DeviceManagerInterface> dm(DeviceManagerFactory::Create());
- EXPECT_TRUE(dm->Init());
- dm->Terminate();
-}
-
-// Test CoInitEx behavior
-#ifdef WIN32
-TEST(DeviceManagerTest, CoInitialize) {
- std::unique_ptr<DeviceManagerInterface> dm(DeviceManagerFactory::Create());
- std::vector<Device> devices;
- // Ensure that calls to video device work if COM is not yet initialized.
- EXPECT_TRUE(dm->Init());
- EXPECT_TRUE(dm->GetVideoCaptureDevices(&devices));
- dm->Terminate();
- // Ensure that the ref count is correct.
- EXPECT_EQ(S_OK, CoInitializeEx(NULL, COINIT_MULTITHREADED));
- CoUninitialize();
- // Ensure that Init works in COINIT_APARTMENTTHREADED setting.
- EXPECT_EQ(S_OK, CoInitializeEx(NULL, COINIT_APARTMENTTHREADED));
- EXPECT_TRUE(dm->Init());
- dm->Terminate();
- CoUninitialize();
- // Ensure that the ref count is correct.
- EXPECT_EQ(S_OK, CoInitializeEx(NULL, COINIT_APARTMENTTHREADED));
- CoUninitialize();
- // Ensure that Init works in COINIT_MULTITHREADED setting.
- EXPECT_EQ(S_OK, CoInitializeEx(NULL, COINIT_MULTITHREADED));
- EXPECT_TRUE(dm->Init());
- dm->Terminate();
- CoUninitialize();
- // Ensure that the ref count is correct.
- EXPECT_EQ(S_OK, CoInitializeEx(NULL, COINIT_MULTITHREADED));
- CoUninitialize();
-}
-#endif
-
-// Test enumerating devices (although we may not find any).
-TEST(DeviceManagerTest, GetDevices) {
- std::unique_ptr<DeviceManagerInterface> dm(DeviceManagerFactory::Create());
- std::vector<Device> audio_ins, audio_outs, video_ins;
- std::vector<cricket::Device> video_in_devs;
- cricket::Device def_video;
- EXPECT_TRUE(dm->Init());
- EXPECT_TRUE(dm->GetAudioInputDevices(&audio_ins));
- EXPECT_TRUE(dm->GetAudioOutputDevices(&audio_outs));
- EXPECT_TRUE(dm->GetVideoCaptureDevices(&video_ins));
- EXPECT_TRUE(dm->GetVideoCaptureDevices(&video_in_devs));
- EXPECT_EQ(video_ins.size(), video_in_devs.size());
- // If we have any video devices, we should be able to pick a default.
- EXPECT_TRUE(dm->GetVideoCaptureDevice(
- cricket::DeviceManagerInterface::kDefaultDeviceName, &def_video)
- != video_ins.empty());
-}
-
-// Test that we return correct ids for default and bogus devices.
-TEST(DeviceManagerTest, GetAudioDeviceIds) {
- std::unique_ptr<DeviceManagerInterface> dm(DeviceManagerFactory::Create());
- Device device;
- EXPECT_TRUE(dm->Init());
- EXPECT_TRUE(dm->GetAudioInputDevice(
- cricket::DeviceManagerInterface::kDefaultDeviceName, &device));
- EXPECT_EQ("-1", device.id);
- EXPECT_TRUE(dm->GetAudioOutputDevice(
- cricket::DeviceManagerInterface::kDefaultDeviceName, &device));
- EXPECT_EQ("-1", device.id);
- EXPECT_FALSE(dm->GetAudioInputDevice("_NOT A REAL DEVICE_", &device));
- EXPECT_FALSE(dm->GetAudioOutputDevice("_NOT A REAL DEVICE_", &device));
-}
-
-// Test that we get the video capture device by name properly.
-TEST(DeviceManagerTest, GetVideoDeviceIds) {
- std::unique_ptr<DeviceManagerInterface> dm(DeviceManagerFactory::Create());
- Device device;
- EXPECT_TRUE(dm->Init());
- EXPECT_FALSE(dm->GetVideoCaptureDevice("_NOT A REAL DEVICE_", &device));
- std::vector<Device> video_ins;
- EXPECT_TRUE(dm->GetVideoCaptureDevices(&video_ins));
- if (!video_ins.empty()) {
- // Get the default device with the parameter kDefaultDeviceName.
- EXPECT_TRUE(dm->GetVideoCaptureDevice(
- cricket::DeviceManagerInterface::kDefaultDeviceName, &device));
-
- // Get the first device with the parameter video_ins[0].name.
- EXPECT_TRUE(dm->GetVideoCaptureDevice(video_ins[0].name, &device));
- EXPECT_EQ(device.name, video_ins[0].name);
- EXPECT_EQ(device.id, video_ins[0].id);
- }
-}
-
-TEST(DeviceManagerTest, VerifyDevicesListsAreCleared) {
- const std::string imaginary("_NOT A REAL DEVICE_");
- std::unique_ptr<DeviceManagerInterface> dm(DeviceManagerFactory::Create());
- std::vector<Device> audio_ins, audio_outs, video_ins;
- audio_ins.push_back(Device(imaginary, imaginary));
- audio_outs.push_back(Device(imaginary, imaginary));
- video_ins.push_back(Device(imaginary, imaginary));
- EXPECT_TRUE(dm->Init());
- EXPECT_TRUE(dm->GetAudioInputDevices(&audio_ins));
- EXPECT_TRUE(dm->GetAudioOutputDevices(&audio_outs));
- EXPECT_TRUE(dm->GetVideoCaptureDevices(&video_ins));
- for (size_t i = 0; i < audio_ins.size(); ++i) {
- EXPECT_NE(imaginary, audio_ins[i].name);
- }
- for (size_t i = 0; i < audio_outs.size(); ++i) {
- EXPECT_NE(imaginary, audio_outs[i].name);
- }
- for (size_t i = 0; i < video_ins.size(); ++i) {
- EXPECT_NE(imaginary, video_ins[i].name);
- }
-}
-
-static bool CompareDeviceList(std::vector<Device>& devices,
- const char* const device_list[], int list_size) {
- if (list_size != static_cast<int>(devices.size())) {
- return false;
- }
- for (int i = 0; i < list_size; ++i) {
- if (devices[i].name.compare(device_list[i]) != 0) {
- return false;
- }
- }
- return true;
-}
-
-TEST(DeviceManagerTest, VerifyFilterDevices) {
- static const char* const kTotalDevicesName[] = {
- "Google Camera Adapters are tons of fun.",
- "device1",
- "device2",
- "device3",
- "device4",
- "device5",
- "Google Camera Adapter 0",
- "Google Camera Adapter 1",
- };
- static const char* const kFilteredDevicesName[] = {
- "device2",
- "device4",
- "Google Camera Adapter",
- NULL,
- };
- static const char* const kDevicesName[] = {
- "device1",
- "device3",
- "device5",
- };
- std::vector<Device> devices;
- for (int i = 0; i < arraysize(kTotalDevicesName); ++i) {
- devices.push_back(Device(kTotalDevicesName[i], i));
- }
- EXPECT_TRUE(CompareDeviceList(devices, kTotalDevicesName,
- arraysize(kTotalDevicesName)));
- // Return false if given NULL as the exclusion list.
- EXPECT_TRUE(DeviceManager::FilterDevices(&devices, NULL));
- // The devices should not change.
- EXPECT_TRUE(CompareDeviceList(devices, kTotalDevicesName,
- arraysize(kTotalDevicesName)));
- EXPECT_TRUE(DeviceManager::FilterDevices(&devices, kFilteredDevicesName));
- EXPECT_TRUE(CompareDeviceList(devices, kDevicesName,
- arraysize(kDevicesName)));
-}
-
-#ifdef WEBRTC_LINUX
-class FakeV4LLookup : public cricket::V4LLookup {
- public:
- explicit FakeV4LLookup(std::vector<std::string> device_paths)
- : device_paths_(device_paths) {}
-
- protected:
- bool CheckIsV4L2Device(const std::string& device) {
- return std::find(device_paths_.begin(), device_paths_.end(), device)
- != device_paths_.end();
- }
-
- private:
- std::vector<std::string> device_paths_;
-};
-
-TEST(DeviceManagerTest, GetVideoCaptureDevices_K2_6) {
- std::vector<std::string> devices;
- devices.push_back("/dev/video0");
- devices.push_back("/dev/video5");
- cricket::V4LLookup::SetV4LLookup(new FakeV4LLookup(devices));
-
- std::vector<rtc::FakeFileSystem::File> files;
- files.push_back(rtc::FakeFileSystem::File("/dev/video0", ""));
- files.push_back(rtc::FakeFileSystem::File("/dev/video5", ""));
- files.push_back(rtc::FakeFileSystem::File(
- "/sys/class/video4linux/video0/name", "Video Device 1"));
- files.push_back(rtc::FakeFileSystem::File(
- "/sys/class/video4linux/video1/model", "Bad Device"));
- files.push_back(
- rtc::FakeFileSystem::File("/sys/class/video4linux/video5/model",
- "Video Device 2"));
- rtc::FilesystemScope fs(new rtc::FakeFileSystem(files));
-
- std::unique_ptr<DeviceManagerInterface> dm(DeviceManagerFactory::Create());
- std::vector<Device> video_ins;
- EXPECT_TRUE(dm->Init());
- EXPECT_TRUE(dm->GetVideoCaptureDevices(&video_ins));
- EXPECT_EQ(2u, video_ins.size());
- EXPECT_EQ("Video Device 1", video_ins.at(0).name);
- EXPECT_EQ("Video Device 2", video_ins.at(1).name);
-}
-
-TEST(DeviceManagerTest, GetVideoCaptureDevices_K2_4) {
- std::vector<std::string> devices;
- devices.push_back("/dev/video0");
- devices.push_back("/dev/video5");
- cricket::V4LLookup::SetV4LLookup(new FakeV4LLookup(devices));
-
- std::vector<rtc::FakeFileSystem::File> files;
- files.push_back(rtc::FakeFileSystem::File("/dev/video0", ""));
- files.push_back(rtc::FakeFileSystem::File("/dev/video5", ""));
- files.push_back(rtc::FakeFileSystem::File(
- "/proc/video/dev/video0",
- "param1: value1\nname: Video Device 1\n param2: value2\n"));
- files.push_back(rtc::FakeFileSystem::File(
- "/proc/video/dev/video1",
- "param1: value1\nname: Bad Device\n param2: value2\n"));
- files.push_back(rtc::FakeFileSystem::File(
- "/proc/video/dev/video5",
- "param1: value1\nname: Video Device 2\n param2: value2\n"));
- rtc::FilesystemScope fs(new rtc::FakeFileSystem(files));
-
- std::unique_ptr<DeviceManagerInterface> dm(DeviceManagerFactory::Create());
- std::vector<Device> video_ins;
- EXPECT_TRUE(dm->Init());
- EXPECT_TRUE(dm->GetVideoCaptureDevices(&video_ins));
- EXPECT_EQ(2u, video_ins.size());
- EXPECT_EQ("Video Device 1", video_ins.at(0).name);
- EXPECT_EQ("Video Device 2", video_ins.at(1).name);
-}
-
-TEST(DeviceManagerTest, GetVideoCaptureDevices_KUnknown) {
- std::vector<std::string> devices;
- devices.push_back("/dev/video0");
- devices.push_back("/dev/video5");
- cricket::V4LLookup::SetV4LLookup(new FakeV4LLookup(devices));
-
- std::vector<rtc::FakeFileSystem::File> files;
- files.push_back(rtc::FakeFileSystem::File("/dev/video0", ""));
- files.push_back(rtc::FakeFileSystem::File("/dev/video1", ""));
- files.push_back(rtc::FakeFileSystem::File("/dev/video5", ""));
- rtc::FilesystemScope fs(new rtc::FakeFileSystem(files));
-
- std::unique_ptr<DeviceManagerInterface> dm(DeviceManagerFactory::Create());
- std::vector<Device> video_ins;
- EXPECT_TRUE(dm->Init());
- EXPECT_TRUE(dm->GetVideoCaptureDevices(&video_ins));
- EXPECT_EQ(2u, video_ins.size());
- EXPECT_EQ("/dev/video0", video_ins.at(0).name);
- EXPECT_EQ("/dev/video5", video_ins.at(1).name);
-}
-#endif // WEBRTC_LINUX
-
-// TODO(noahric): These are flaky on windows on headless machines.
-#ifndef WIN32
-TEST(DeviceManagerTest, GetWindows) {
- if (!rtc::WindowPickerFactory::IsSupported()) {
- LOG(LS_INFO) << "skipping test: window capturing is not supported with "
- << "current configuration.";
- return;
- }
- std::unique_ptr<DeviceManagerInterface> dm(DeviceManagerFactory::Create());
- dm->SetScreenCapturerFactory(new FakeScreenCapturerFactory());
- std::vector<rtc::WindowDescription> descriptions;
- EXPECT_TRUE(dm->Init());
- if (!dm->GetWindows(&descriptions) || descriptions.empty()) {
- LOG(LS_INFO) << "skipping test: window capturing. Does not have any "
- << "windows to capture.";
- return;
- }
- std::unique_ptr<cricket::VideoCapturer> capturer(dm->CreateScreenCapturer(
- cricket::ScreencastId(descriptions.front().id())));
- EXPECT_FALSE(capturer.get() == NULL);
- // TODO(hellner): creating a window capturer and immediately deleting it
- // results in "Continuous Build and Test Mainline - Mac opt" failure (crash).
- // Remove the following line as soon as this has been resolved.
- rtc::Thread::Current()->ProcessMessages(1);
-}
-
-TEST(DeviceManagerTest, GetDesktops) {
- if (!rtc::WindowPickerFactory::IsSupported()) {
- LOG(LS_INFO) << "skipping test: desktop capturing is not supported with "
- << "current configuration.";
- return;
- }
- std::unique_ptr<DeviceManagerInterface> dm(DeviceManagerFactory::Create());
- dm->SetScreenCapturerFactory(new FakeScreenCapturerFactory());
- std::vector<rtc::DesktopDescription> descriptions;
- EXPECT_TRUE(dm->Init());
- if (!dm->GetDesktops(&descriptions) || descriptions.empty()) {
- LOG(LS_INFO) << "skipping test: desktop capturing. Does not have any "
- << "desktops to capture.";
- return;
- }
- std::unique_ptr<cricket::VideoCapturer> capturer(dm->CreateScreenCapturer(
- cricket::ScreencastId(descriptions.front().id())));
- EXPECT_FALSE(capturer.get() == NULL);
-}
-#endif // !WIN32
-
-TEST_F(DeviceManagerTestFake, CaptureConstraintsWhitelisted) {
- const Device device("white", "white_id");
- dm_->SetVideoCaptureDeviceMaxFormat(device.name, kHdFormat);
- std::unique_ptr<cricket::VideoCapturer> capturer(
- dm_->CreateVideoCapturer(device));
- cricket::VideoFormat best_format;
- capturer->set_enable_camera_list(true);
- EXPECT_TRUE(capturer->GetBestCaptureFormat(kHdFormat, &best_format));
- EXPECT_EQ(kHdFormat, best_format);
-}
-
-TEST_F(DeviceManagerTestFake, CaptureConstraintsNotWhitelisted) {
- const Device device("regular", "regular_id");
- std::unique_ptr<cricket::VideoCapturer> capturer(
- dm_->CreateVideoCapturer(device));
- cricket::VideoFormat best_format;
- capturer->set_enable_camera_list(true);
- EXPECT_TRUE(capturer->GetBestCaptureFormat(kHdFormat, &best_format));
- EXPECT_EQ(kHdFormat, best_format);
-}
-
-TEST_F(DeviceManagerTestFake, CaptureConstraintsUnWhitelisted) {
- const Device device("un_white", "un_white_id");
- dm_->SetVideoCaptureDeviceMaxFormat(device.name, kHdFormat);
- dm_->ClearVideoCaptureDeviceMaxFormat(device.name);
- std::unique_ptr<cricket::VideoCapturer> capturer(
- dm_->CreateVideoCapturer(device));
- cricket::VideoFormat best_format;
- capturer->set_enable_camera_list(true);
- EXPECT_TRUE(capturer->GetBestCaptureFormat(kHdFormat, &best_format));
- EXPECT_EQ(kHdFormat, best_format);
-}
-
-TEST_F(DeviceManagerTestFake, CaptureConstraintsWildcard) {
- const Device device("any_device", "any_device");
- dm_->SetVideoCaptureDeviceMaxFormat("*", kHdFormat);
- std::unique_ptr<cricket::VideoCapturer> capturer(
- dm_->CreateVideoCapturer(device));
- cricket::VideoFormat best_format;
- capturer->set_enable_camera_list(true);
- EXPECT_TRUE(capturer->GetBestCaptureFormat(kHdFormat, &best_format));
- EXPECT_EQ(kHdFormat, best_format);
-}
diff --git a/webrtc/media/devices/dummydevicemanager.cc b/webrtc/media/devices/dummydevicemanager.cc
deleted file mode 100644
index c1ff5eb..0000000
--- a/webrtc/media/devices/dummydevicemanager.cc
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/media/devices/dummydevicemanager.h"
-
-namespace cricket {
-
-const char DeviceManagerInterface::kDefaultDeviceName[] = "";
-
-DeviceManagerInterface* DeviceManagerFactory::Create() {
- return new DummyDeviceManager();
-}
-
-}; // namespace cricket
diff --git a/webrtc/media/devices/dummydevicemanager.h b/webrtc/media/devices/dummydevicemanager.h
deleted file mode 100644
index 795689b..0000000
--- a/webrtc/media/devices/dummydevicemanager.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MEDIA_DEVICES_DUMMYDEVICEMANAGER_H_
-#define WEBRTC_MEDIA_DEVICES_DUMMYDEVICEMANAGER_H_
-
-#include <vector>
-
-#include "webrtc/media/base/mediacommon.h"
-#include "webrtc/media/devices/fakedevicemanager.h"
-
-namespace cricket {
-
-class DummyDeviceManager : public FakeDeviceManager {
- public:
- DummyDeviceManager() {
- std::vector<std::string> devices;
- devices.push_back(DeviceManagerInterface::kDefaultDeviceName);
- SetAudioInputDevices(devices);
- SetAudioOutputDevices(devices);
- SetVideoCaptureDevices(devices);
- }
-};
-
-} // namespace cricket
-
-#endif // WEBRTC_MEDIA_DEVICES_DUMMYDEVICEMANAGER_H_
diff --git a/webrtc/media/devices/dummydevicemanager_unittest.cc b/webrtc/media/devices/dummydevicemanager_unittest.cc
deleted file mode 100644
index 93462d8..0000000
--- a/webrtc/media/devices/dummydevicemanager_unittest.cc
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/base/gunit.h"
-#include "webrtc/media/devices/dummydevicemanager.h"
-
-using cricket::Device;
-using cricket::DummyDeviceManager;
-
-// Test that we startup/shutdown properly.
-TEST(DummyDeviceManagerTest, StartupShutdown) {
- DummyDeviceManager dm;
- EXPECT_TRUE(dm.Init());
- dm.Terminate();
-}
-
-// Test enumerating capabilities.
-TEST(DummyDeviceManagerTest, GetCapabilities) {
- DummyDeviceManager dm;
- int capabilities = dm.GetCapabilities();
- EXPECT_EQ((cricket::AUDIO_SEND | cricket::AUDIO_RECV |
- cricket::VIDEO_SEND | cricket::VIDEO_RECV), capabilities);
-}
-
-// Test enumerating devices.
-TEST(DummyDeviceManagerTest, GetDevices) {
- DummyDeviceManager dm;
- EXPECT_TRUE(dm.Init());
- std::vector<Device> audio_ins, audio_outs, video_ins;
- EXPECT_TRUE(dm.GetAudioInputDevices(&audio_ins));
- EXPECT_TRUE(dm.GetAudioOutputDevices(&audio_outs));
- EXPECT_TRUE(dm.GetVideoCaptureDevices(&video_ins));
-}
-
-// Test that we return correct ids for default and bogus devices.
-TEST(DummyDeviceManagerTest, GetAudioDeviceIds) {
- DummyDeviceManager dm;
- Device device;
- EXPECT_TRUE(dm.Init());
- EXPECT_TRUE(dm.GetAudioInputDevice(
- cricket::DeviceManagerInterface::kDefaultDeviceName, &device));
- EXPECT_EQ("-1", device.id);
- EXPECT_TRUE(dm.GetAudioOutputDevice(
- cricket::DeviceManagerInterface::kDefaultDeviceName, &device));
- EXPECT_EQ("-1", device.id);
- EXPECT_FALSE(dm.GetAudioInputDevice("_NOT A REAL DEVICE_", &device));
- EXPECT_FALSE(dm.GetAudioOutputDevice("_NOT A REAL DEVICE_", &device));
-}
-
-// Test that we get the video capture device by name properly.
-TEST(DummyDeviceManagerTest, GetVideoDeviceIds) {
- DummyDeviceManager dm;
- Device device;
- EXPECT_TRUE(dm.Init());
- EXPECT_FALSE(dm.GetVideoCaptureDevice("_NOT A REAL DEVICE_", &device));
- EXPECT_TRUE(dm.GetVideoCaptureDevice(
- cricket::DeviceManagerInterface::kDefaultDeviceName, &device));
-}
-
-TEST(DummyDeviceManagerTest, VerifyDevicesListsAreCleared) {
- const std::string imaginary("_NOT A REAL DEVICE_");
- DummyDeviceManager dm;
- std::vector<Device> audio_ins, audio_outs, video_ins;
- audio_ins.push_back(Device(imaginary, imaginary));
- audio_outs.push_back(Device(imaginary, imaginary));
- video_ins.push_back(Device(imaginary, imaginary));
- EXPECT_TRUE(dm.Init());
- EXPECT_TRUE(dm.GetAudioInputDevices(&audio_ins));
- EXPECT_TRUE(dm.GetAudioOutputDevices(&audio_outs));
- EXPECT_TRUE(dm.GetVideoCaptureDevices(&video_ins));
- for (size_t i = 0; i < audio_ins.size(); ++i) {
- EXPECT_NE(imaginary, audio_ins[i].name);
- }
- for (size_t i = 0; i < audio_outs.size(); ++i) {
- EXPECT_NE(imaginary, audio_outs[i].name);
- }
- for (size_t i = 0; i < video_ins.size(); ++i) {
- EXPECT_NE(imaginary, video_ins[i].name);
- }
-}
diff --git a/webrtc/media/devices/fakedevicemanager.h b/webrtc/media/devices/fakedevicemanager.h
deleted file mode 100644
index bf5140c..0000000
--- a/webrtc/media/devices/fakedevicemanager.h
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
- * Copyright (c) 2008 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MEDIA_DEVICES_FAKEDEVICEMANAGER_H_
-#define WEBRTC_MEDIA_DEVICES_FAKEDEVICEMANAGER_H_
-
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "webrtc/base/window.h"
-#include "webrtc/base/windowpicker.h"
-#include "webrtc/media/base/fakevideocapturer.h"
-#include "webrtc/media/base/mediacommon.h"
-#include "webrtc/media/devices/devicemanager.h"
-
-namespace cricket {
-
-class FakeDeviceManager : public DeviceManagerInterface {
- public:
- FakeDeviceManager() {}
- virtual bool Init() {
- return true;
- }
- virtual void Terminate() {
- }
- virtual int GetCapabilities() {
- std::vector<Device> devices;
- int caps = VIDEO_RECV;
- if (!input_devices_.empty()) {
- caps |= AUDIO_SEND;
- }
- if (!output_devices_.empty()) {
- caps |= AUDIO_RECV;
- }
- if (!vidcap_devices_.empty()) {
- caps |= VIDEO_SEND;
- }
- return caps;
- }
- virtual bool GetAudioInputDevices(std::vector<Device>* devs) {
- *devs = input_devices_;
- return true;
- }
- virtual bool GetAudioOutputDevices(std::vector<Device>* devs) {
- *devs = output_devices_;
- return true;
- }
- virtual bool GetAudioInputDevice(const std::string& name, Device* out) {
- return GetAudioDevice(true, name, out);
- }
- virtual bool GetAudioOutputDevice(const std::string& name, Device* out) {
- return GetAudioDevice(false, name, out);
- }
- virtual bool GetVideoCaptureDevices(std::vector<Device>* devs) {
- *devs = vidcap_devices_;
- return true;
- }
- virtual void SetVideoDeviceCapturerFactory(
- VideoDeviceCapturerFactory* video_device_capturer_factory) {
- }
- virtual void SetScreenCapturerFactory(
- ScreenCapturerFactory* screen_capturer_factory) {
- screen_capturer_factory_.reset(screen_capturer_factory);
- }
- virtual void SetVideoCaptureDeviceMaxFormat(const std::string& usb_id,
- const VideoFormat& max_format) {
- max_formats_[usb_id] = max_format;
- }
- bool IsMaxFormatForDevice(const std::string& usb_id,
- const VideoFormat& max_format) const {
- std::map<std::string, VideoFormat>::const_iterator found =
- max_formats_.find(usb_id);
- return (found != max_formats_.end()) ?
- max_format == found->second :
- false;
- }
- virtual void ClearVideoCaptureDeviceMaxFormat(const std::string& usb_id) {
- max_formats_.erase(usb_id);
- }
- virtual VideoCapturer* CreateVideoCapturer(const Device& device) const {
- return new FakeVideoCapturer();
- }
- virtual VideoCapturer* CreateScreenCapturer(
- const ScreencastId& screenid) const {
- if (!screen_capturer_factory_) {
- return new FakeVideoCapturer();
- }
- return screen_capturer_factory_->Create(screenid);
- }
- virtual bool GetWindows(
- std::vector<rtc::WindowDescription>* descriptions) {
- descriptions->clear();
- const uint32_t id = 1u; // Note that 0 is not a valid ID.
- const rtc::WindowId window_id =
- rtc::WindowId::Cast(id);
- std::string title = "FakeWindow";
- rtc::WindowDescription window_description(window_id, title);
- descriptions->push_back(window_description);
- return true;
- }
- virtual VideoCapturer* CreateWindowCapturer(rtc::WindowId window) {
- if (!window.IsValid()) {
- return NULL;
- }
- return new FakeVideoCapturer;
- }
- virtual bool GetDesktops(
- std::vector<rtc::DesktopDescription>* descriptions) {
- descriptions->clear();
- const int id = 0;
- const int valid_index = 0;
- const rtc::DesktopId desktop_id =
- rtc::DesktopId::Cast(id, valid_index);
- std::string title = "FakeDesktop";
- rtc::DesktopDescription desktop_description(desktop_id, title);
- descriptions->push_back(desktop_description);
- return true;
- }
- virtual VideoCapturer* CreateDesktopCapturer(rtc::DesktopId desktop) {
- if (!desktop.IsValid()) {
- return NULL;
- }
- return new FakeVideoCapturer;
- }
-
- virtual bool GetDefaultVideoCaptureDevice(Device* device) {
- if (vidcap_devices_.empty()) {
- return false;
- }
- *device = vidcap_devices_[0];
- return true;
- }
-
-#if defined(WEBRTC_MAC) && !defined(WEBRTC_IOS)
- bool QtKitToSgDevice(const std::string& qtkit_name, Device* out) {
- out->name = qtkit_name;
- out->id = "sg:" + qtkit_name;
- return true;
- }
-#endif
-
- void SetAudioInputDevices(const std::vector<std::string>& devices) {
- input_devices_.clear();
- for (size_t i = 0; i < devices.size(); ++i) {
- input_devices_.push_back(Device(devices[i],
- static_cast<int>(i)));
- }
- SignalDevicesChange();
- }
- void SetAudioOutputDevices(const std::vector<std::string>& devices) {
- output_devices_.clear();
- for (size_t i = 0; i < devices.size(); ++i) {
- output_devices_.push_back(Device(devices[i],
- static_cast<int>(i)));
- }
- SignalDevicesChange();
- }
- void SetVideoCaptureDevices(const std::vector<std::string>& devices) {
- vidcap_devices_.clear();
- for (size_t i = 0; i < devices.size(); ++i) {
- vidcap_devices_.push_back(Device(devices[i],
- static_cast<int>(i)));
- }
- SignalDevicesChange();
- }
- virtual bool GetVideoCaptureDevice(const std::string& name,
- Device* out) {
- if (vidcap_devices_.empty())
- return false;
-
- // If the name is empty, return the default device.
- if (name.empty() || name == kDefaultDeviceName) {
- *out = vidcap_devices_[0];
- return true;
- }
-
- return FindDeviceByName(vidcap_devices_, name, out);
- }
- bool GetAudioDevice(bool is_input, const std::string& name,
- Device* out) {
- // If the name is empty, return the default device.
- if (name.empty() || name == kDefaultDeviceName) {
- *out = Device(name, -1);
- return true;
- }
-
- return FindDeviceByName((is_input ? input_devices_ : output_devices_),
- name, out);
- }
- static bool FindDeviceByName(const std::vector<Device>& devices,
- const std::string& name,
- Device* out) {
- for (std::vector<Device>::const_iterator it = devices.begin();
- it != devices.end(); ++it) {
- if (name == it->name) {
- *out = *it;
- return true;
- }
- }
- return false;
- }
-
- private:
- std::vector<Device> input_devices_;
- std::vector<Device> output_devices_;
- std::vector<Device> vidcap_devices_;
- std::map<std::string, VideoFormat> max_formats_;
- std::unique_ptr<
- ScreenCapturerFactory> screen_capturer_factory_;
-};
-
-} // namespace cricket
-
-#endif // WEBRTC_MEDIA_DEVICES_FAKEDEVICEMANAGER_H_
diff --git a/webrtc/media/devices/linuxdeviceinfo.cc b/webrtc/media/devices/linuxdeviceinfo.cc
deleted file mode 100644
index df22614..0000000
--- a/webrtc/media/devices/linuxdeviceinfo.cc
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <memory>
-
-#include "webrtc/media/devices/deviceinfo.h"
-
-#include "webrtc/base/common.h" // for ASSERT
-#include "webrtc/media/devices/libudevsymboltable.h"
-
-namespace cricket {
-
-class ScopedLibUdev {
- public:
- static ScopedLibUdev* Create() {
- ScopedLibUdev* ret_val = new ScopedLibUdev();
- if (!ret_val->Init()) {
- delete ret_val;
- return NULL;
- }
- return ret_val;
- }
- ~ScopedLibUdev() {
- libudev_.Unload();
- }
-
- LibUDevSymbolTable* instance() { return &libudev_; }
-
- private:
- ScopedLibUdev() {}
-
- bool Init() {
- return libudev_.Load() &&
- !IsWrongLibUDevAbiVersion(libudev_.GetDllHandle());
- }
-
- LibUDevSymbolTable libudev_;
-};
-
-class ScopedUdev {
- public:
- explicit ScopedUdev(LibUDevSymbolTable* libudev) : libudev_(libudev) {
- udev_ = libudev_->udev_new()();
- }
- ~ScopedUdev() {
- if (udev_) libudev_->udev_unref()(udev_);
- }
-
- udev* instance() { return udev_; }
-
- private:
- LibUDevSymbolTable* libudev_;
- udev* udev_;
-};
-
-class ScopedUdevEnumerate {
- public:
- ScopedUdevEnumerate(LibUDevSymbolTable* libudev, udev* udev)
- : libudev_(libudev) {
- enumerate_ = libudev_->udev_enumerate_new()(udev);
- }
- ~ScopedUdevEnumerate() {
- if (enumerate_) libudev_->udev_enumerate_unref()(enumerate_);
- }
-
- udev_enumerate* instance() { return enumerate_; }
-
- private:
- LibUDevSymbolTable* libudev_;
- udev_enumerate* enumerate_;
-};
-
-bool GetUsbProperty(const Device& device, const char* property_name,
- std::string* property) {
- std::unique_ptr<ScopedLibUdev> libudev_context(ScopedLibUdev::Create());
- if (!libudev_context) {
- return false;
- }
- ScopedUdev udev_context(libudev_context->instance());
- if (!udev_context.instance()) {
- return false;
- }
- ScopedUdevEnumerate enumerate_context(libudev_context->instance(),
- udev_context.instance());
- if (!enumerate_context.instance()) {
- return false;
- }
- libudev_context->instance()->udev_enumerate_add_match_subsystem()(
- enumerate_context.instance(), "video4linux");
- libudev_context->instance()->udev_enumerate_scan_devices()(
- enumerate_context.instance());
- udev_list_entry* devices =
- libudev_context->instance()->udev_enumerate_get_list_entry()(
- enumerate_context.instance());
- if (!devices) {
- return false;
- }
- udev_list_entry* dev_list_entry = NULL;
- const char* property_value = NULL;
- // Macro that expands to a for-loop over the devices.
- for (dev_list_entry = devices; dev_list_entry != NULL;
- dev_list_entry = libudev_context->instance()->
- udev_list_entry_get_next()(dev_list_entry)) {
- const char* path = libudev_context->instance()->udev_list_entry_get_name()(
- dev_list_entry);
- if (!path) continue;
- udev_device* dev =
- libudev_context->instance()->udev_device_new_from_syspath()(
- udev_context.instance(), path);
- if (!dev) continue;
- const char* device_node =
- libudev_context->instance()->udev_device_get_devnode()(dev);
- if (!device_node || device.id.compare(device_node) != 0) {
- continue;
- }
- dev = libudev_context->instance()->
- udev_device_get_parent_with_subsystem_devtype()(
- dev, "usb", "usb_device");
- if (!dev) continue;
- property_value = libudev_context->instance()->
- udev_device_get_sysattr_value()(
- dev, property_name);
- break;
- }
- if (!property_value) {
- return false;
- }
- property->assign(property_value);
- return true;
-}
-
-bool GetUsbId(const Device& device, std::string* usb_id) {
- std::string id_vendor;
- std::string id_product;
- if (!GetUsbProperty(device, "idVendor", &id_vendor)) {
- return false;
- }
- if (!GetUsbProperty(device, "idProduct", &id_product)) {
- return false;
- }
- usb_id->clear();
- usb_id->append(id_vendor);
- usb_id->append(":");
- usb_id->append(id_product);
- return true;
-}
-
-bool GetUsbVersion(const Device& device, std::string* usb_version) {
- return GetUsbProperty(device, "version", usb_version);
-}
-
-} // namespace cricket
diff --git a/webrtc/media/devices/linuxdevicemanager.cc b/webrtc/media/devices/linuxdevicemanager.cc
deleted file mode 100644
index 2b218c0..0000000
--- a/webrtc/media/devices/linuxdevicemanager.cc
+++ /dev/null
@@ -1,396 +0,0 @@
-/*
- * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/media/devices/linuxdevicemanager.h"
-
-#include <unistd.h>
-
-#include <memory>
-
-#include "webrtc/base/fileutils.h"
-#include "webrtc/base/linux.h"
-#include "webrtc/base/logging.h"
-#include "webrtc/base/pathutils.h"
-#include "webrtc/base/physicalsocketserver.h"
-#include "webrtc/base/stream.h"
-#include "webrtc/base/stringutils.h"
-#include "webrtc/base/thread.h"
-#include "webrtc/media/base/mediacommon.h"
-#include "webrtc/media/devices/libudevsymboltable.h"
-#include "webrtc/media/devices/v4llookup.h"
-#include "webrtc/sound/platformsoundsystem.h"
-#include "webrtc/sound/platformsoundsystemfactory.h"
-#include "webrtc/sound/sounddevicelocator.h"
-#include "webrtc/sound/soundsysteminterface.h"
-
-namespace cricket {
-
-DeviceManagerInterface* DeviceManagerFactory::Create() {
- return new LinuxDeviceManager();
-}
-
-class LinuxDeviceWatcher
- : public DeviceWatcher,
- private rtc::Dispatcher {
- public:
- explicit LinuxDeviceWatcher(DeviceManagerInterface* dm);
- virtual ~LinuxDeviceWatcher();
- virtual bool Start();
- virtual void Stop();
-
- private:
- virtual uint32_t GetRequestedEvents();
- virtual void OnPreEvent(uint32_t ff);
- virtual void OnEvent(uint32_t ff, int err);
- virtual int GetDescriptor();
- virtual bool IsDescriptorClosed();
-
- DeviceManagerInterface* manager_;
- LibUDevSymbolTable libudev_;
- struct udev* udev_;
- struct udev_monitor* udev_monitor_;
- bool registered_;
-};
-
-static const char* const kFilteredAudioDevicesName[] = {
-#if defined(CHROMEOS)
- "surround40:",
- "surround41:",
- "surround50:",
- "surround51:",
- "surround71:",
- "iec958:", // S/PDIF
-#endif
- NULL,
-};
-static const char* kFilteredVideoDevicesName[] = {
- NULL,
-};
-
-LinuxDeviceManager::LinuxDeviceManager()
- : sound_system_(new rtc::PlatformSoundSystemFactory()) {
- set_watcher(new LinuxDeviceWatcher(this));
-}
-
-LinuxDeviceManager::~LinuxDeviceManager() {
-}
-
-bool LinuxDeviceManager::GetAudioDevices(bool input,
- std::vector<Device>* devs) {
- devs->clear();
- if (!sound_system_.get()) {
- return false;
- }
- rtc::SoundSystemInterface::SoundDeviceLocatorList list;
- bool success;
- if (input) {
- success = sound_system_->EnumerateCaptureDevices(&list);
- } else {
- success = sound_system_->EnumeratePlaybackDevices(&list);
- }
- if (!success) {
- LOG(LS_ERROR) << "Can't enumerate devices";
- sound_system_.release();
- return false;
- }
- // We have to start the index at 1 because webrtc VoiceEngine puts the default
- // device at index 0, but Enumerate(Capture|Playback)Devices does not include
- // a locator for the default device.
- int index = 1;
- for (rtc::SoundSystemInterface::SoundDeviceLocatorList::iterator i = list.begin();
- i != list.end();
- ++i, ++index) {
- devs->push_back(Device((*i)->name(), index));
- }
- rtc::SoundSystemInterface::ClearSoundDeviceLocatorList(&list);
- sound_system_.release();
- return FilterDevices(devs, kFilteredAudioDevicesName);
-}
-
-static const std::string kVideoMetaPathK2_4("/proc/video/dev/");
-static const std::string kVideoMetaPathK2_6("/sys/class/video4linux/");
-
-enum MetaType { M2_4, M2_6, NONE };
-
-static void ScanDeviceDirectory(const std::string& devdir,
- std::vector<Device>* devices) {
- std::unique_ptr<rtc::DirectoryIterator> directoryIterator(
- rtc::Filesystem::IterateDirectory());
-
- if (directoryIterator->Iterate(rtc::Pathname(devdir))) {
- do {
- std::string filename = directoryIterator->Name();
- std::string device_name = devdir + filename;
- if (!directoryIterator->IsDots()) {
- if (filename.find("video") == 0 &&
- V4LLookup::IsV4L2Device(device_name)) {
- devices->push_back(Device(device_name, device_name));
- }
- }
- } while (directoryIterator->Next());
- }
-}
-
-static std::string GetVideoDeviceNameK2_6(const std::string& device_meta_path) {
- std::string device_name;
-
- std::unique_ptr<rtc::FileStream> device_meta_stream(
- rtc::Filesystem::OpenFile(device_meta_path, "r"));
-
- if (device_meta_stream) {
- if (device_meta_stream->ReadLine(&device_name) != rtc::SR_SUCCESS) {
- LOG(LS_ERROR) << "Failed to read V4L2 device meta " << device_meta_path;
- }
- device_meta_stream->Close();
- }
-
- return device_name;
-}
-
-static std::string Trim(const std::string& s, const std::string& drop = " \t") {
- std::string::size_type first = s.find_first_not_of(drop);
- std::string::size_type last = s.find_last_not_of(drop);
-
- if (first == std::string::npos || last == std::string::npos)
- return std::string("");
-
- return s.substr(first, last - first + 1);
-}
-
-static std::string GetVideoDeviceNameK2_4(const std::string& device_meta_path) {
- rtc::ConfigParser::MapVector all_values;
-
- rtc::ConfigParser config_parser;
- rtc::FileStream* file_stream =
- rtc::Filesystem::OpenFile(device_meta_path, "r");
-
- if (file_stream == NULL) return "";
-
- config_parser.Attach(file_stream);
- config_parser.Parse(&all_values);
-
- for (rtc::ConfigParser::MapVector::iterator i = all_values.begin();
- i != all_values.end(); ++i) {
- rtc::ConfigParser::SimpleMap::iterator device_name_i =
- i->find("name");
-
- if (device_name_i != i->end()) {
- return device_name_i->second;
- }
- }
-
- return "";
-}
-
-static std::string GetVideoDeviceName(MetaType meta,
- const std::string& device_file_name) {
- std::string device_meta_path;
- std::string device_name;
- std::string meta_file_path;
-
- if (meta == M2_6) {
- meta_file_path = kVideoMetaPathK2_6 + device_file_name + "/name";
-
- LOG(LS_INFO) << "Trying " + meta_file_path;
- device_name = GetVideoDeviceNameK2_6(meta_file_path);
-
- if (device_name.empty()) {
- meta_file_path = kVideoMetaPathK2_6 + device_file_name + "/model";
-
- LOG(LS_INFO) << "Trying " << meta_file_path;
- device_name = GetVideoDeviceNameK2_6(meta_file_path);
- }
- } else {
- meta_file_path = kVideoMetaPathK2_4 + device_file_name;
- LOG(LS_INFO) << "Trying " << meta_file_path;
- device_name = GetVideoDeviceNameK2_4(meta_file_path);
- }
-
- if (device_name.empty()) {
- device_name = "/dev/" + device_file_name;
- LOG(LS_ERROR)
- << "Device name not found, defaulting to device path " << device_name;
- }
-
- LOG(LS_INFO) << "Name for " << device_file_name << " is " << device_name;
-
- return Trim(device_name);
-}
-
-static void ScanV4L2Devices(std::vector<Device>* devices) {
- LOG(LS_INFO) << ("Enumerating V4L2 devices");
-
- MetaType meta;
- std::string metadata_dir;
-
- std::unique_ptr<rtc::DirectoryIterator> directoryIterator(
- rtc::Filesystem::IterateDirectory());
-
- // Try and guess kernel version
- if (directoryIterator->Iterate(kVideoMetaPathK2_6)) {
- meta = M2_6;
- metadata_dir = kVideoMetaPathK2_6;
- } else if (directoryIterator->Iterate(kVideoMetaPathK2_4)) {
- meta = M2_4;
- metadata_dir = kVideoMetaPathK2_4;
- } else {
- meta = NONE;
- }
-
- if (meta != NONE) {
- LOG(LS_INFO) << "V4L2 device metadata found at " << metadata_dir;
-
- do {
- std::string filename = directoryIterator->Name();
-
- if (filename.find("video") == 0) {
- std::string device_path = "/dev/" + filename;
-
- if (V4LLookup::IsV4L2Device(device_path)) {
- devices->push_back(
- Device(GetVideoDeviceName(meta, filename), device_path));
- }
- }
- } while (directoryIterator->Next());
- } else {
- LOG(LS_ERROR) << "Unable to detect v4l2 metadata directory";
- }
-
- if (devices->size() == 0) {
- LOG(LS_INFO) << "Plan B. Scanning all video devices in /dev directory";
- ScanDeviceDirectory("/dev/", devices);
- }
-
- LOG(LS_INFO) << "Total V4L2 devices found : " << devices->size();
-}
-
-bool LinuxDeviceManager::GetVideoCaptureDevices(std::vector<Device>* devices) {
- devices->clear();
- ScanV4L2Devices(devices);
- return FilterDevices(devices, kFilteredVideoDevicesName);
-}
-
-LinuxDeviceWatcher::LinuxDeviceWatcher(DeviceManagerInterface* dm)
- : DeviceWatcher(dm),
- manager_(dm),
- udev_(NULL),
- udev_monitor_(NULL),
- registered_(false) {
-}
-
-LinuxDeviceWatcher::~LinuxDeviceWatcher() {
-}
-
-static rtc::PhysicalSocketServer* CurrentSocketServer() {
- rtc::SocketServer* ss =
- rtc::ThreadManager::Instance()->WrapCurrentThread()->socketserver();
- return reinterpret_cast<rtc::PhysicalSocketServer*>(ss);
-}
-
-bool LinuxDeviceWatcher::Start() {
- // We deliberately return true in the failure paths here because libudev is
- // not a critical component of a Linux system so it may not be present/usable,
- // and we don't want to halt LinuxDeviceManager initialization in such a case.
- if (!libudev_.Load() || IsWrongLibUDevAbiVersion(libudev_.GetDllHandle())) {
- LOG(LS_WARNING)
- << "libudev not present/usable; LinuxDeviceWatcher disabled";
- return true;
- }
- udev_ = libudev_.udev_new()();
- if (!udev_) {
- LOG_ERR(LS_ERROR) << "udev_new()";
- return true;
- }
- // The second argument here is the event source. It can be either "kernel" or
- // "udev", but "udev" is the only correct choice. Apps listen on udev and the
- // udev daemon in turn listens on the kernel.
- udev_monitor_ = libudev_.udev_monitor_new_from_netlink()(udev_, "udev");
- if (!udev_monitor_) {
- LOG_ERR(LS_ERROR) << "udev_monitor_new_from_netlink()";
- return true;
- }
- // We only listen for changes in the video devices. Audio devices are more or
- // less unimportant because receiving device change notifications really only
- // matters for broadcasting updated send/recv capabilities based on whether
- // there is at least one device available, and almost all computers have at
- // least one audio device. Also, PulseAudio device notifications don't come
- // from the udev daemon, they come from the PulseAudio daemon, so we'd only
- // want to listen for audio device changes from udev if using ALSA. For
- // simplicity, we don't bother with any audio stuff at all.
- if (libudev_.udev_monitor_filter_add_match_subsystem_devtype()(
- udev_monitor_, "video4linux", NULL) < 0) {
- LOG_ERR(LS_ERROR) << "udev_monitor_filter_add_match_subsystem_devtype()";
- return true;
- }
- if (libudev_.udev_monitor_enable_receiving()(udev_monitor_) < 0) {
- LOG_ERR(LS_ERROR) << "udev_monitor_enable_receiving()";
- return true;
- }
- CurrentSocketServer()->Add(this);
- registered_ = true;
- return true;
-}
-
-void LinuxDeviceWatcher::Stop() {
- if (registered_) {
- CurrentSocketServer()->Remove(this);
- registered_ = false;
- }
- if (udev_monitor_) {
- libudev_.udev_monitor_unref()(udev_monitor_);
- udev_monitor_ = NULL;
- }
- if (udev_) {
- libudev_.udev_unref()(udev_);
- udev_ = NULL;
- }
- libudev_.Unload();
-}
-
-uint32_t LinuxDeviceWatcher::GetRequestedEvents() {
- return rtc::DE_READ;
-}
-
-void LinuxDeviceWatcher::OnPreEvent(uint32_t ff) {
- // Nothing to do.
-}
-
-void LinuxDeviceWatcher::OnEvent(uint32_t ff, int err) {
- udev_device* device = libudev_.udev_monitor_receive_device()(udev_monitor_);
- if (!device) {
- // Probably the socket connection to the udev daemon was terminated (perhaps
- // the daemon crashed or is being restarted?).
- LOG_ERR(LS_WARNING) << "udev_monitor_receive_device()";
- // Stop listening to avoid potential livelock (an fd with EOF in it is
- // always considered readable).
- CurrentSocketServer()->Remove(this);
- registered_ = false;
- return;
- }
- // Else we read the device successfully.
-
- // Since we already have our own filesystem-based device enumeration code, we
- // simply re-enumerate rather than inspecting the device event.
- libudev_.udev_device_unref()(device);
- manager_->SignalDevicesChange();
-}
-
-int LinuxDeviceWatcher::GetDescriptor() {
- return libudev_.udev_monitor_get_fd()(udev_monitor_);
-}
-
-bool LinuxDeviceWatcher::IsDescriptorClosed() {
- // If it is closed then we will just get an error in
- // udev_monitor_receive_device and unregister, so we don't need to check for
- // it separately.
- return false;
-}
-
-}; // namespace cricket
diff --git a/webrtc/media/devices/linuxdevicemanager.h b/webrtc/media/devices/linuxdevicemanager.h
deleted file mode 100644
index ccca35d..0000000
--- a/webrtc/media/devices/linuxdevicemanager.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MEDIA_DEVICES_LINUXDEVICEMANAGER_H_
-#define WEBRTC_MEDIA_DEVICES_LINUXDEVICEMANAGER_H_
-
-#include <string>
-#include <vector>
-
-#include "webrtc/base/sigslot.h"
-#include "webrtc/base/stringencode.h"
-#include "webrtc/media/devices/devicemanager.h"
-#include "webrtc/sound/soundsystemfactory.h"
-
-namespace cricket {
-
-class LinuxDeviceManager : public DeviceManager {
- public:
- LinuxDeviceManager();
- virtual ~LinuxDeviceManager();
-
- virtual bool GetVideoCaptureDevices(std::vector<Device>* devs);
-
- private:
- virtual bool GetAudioDevices(bool input, std::vector<Device>* devs);
- rtc::SoundSystemHandle sound_system_;
-};
-
-} // namespace cricket
-
-#endif // WEBRTC_MEDIA_DEVICES_LINUXDEVICEMANAGER_H_
diff --git a/webrtc/media/devices/macdeviceinfo.cc b/webrtc/media/devices/macdeviceinfo.cc
deleted file mode 100644
index 3579010..0000000
--- a/webrtc/media/devices/macdeviceinfo.cc
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/media/devices/deviceinfo.h"
-
-namespace cricket {
-
-bool GetUsbId(const Device& device, std::string* usb_id) {
- // Both PID and VID are 4 characters.
- const int id_size = 4;
- if (device.id.size() < 2 * id_size) {
- return false;
- }
-
- // The last characters of device id is a concatenation of VID and then PID.
- const size_t vid_location = device.id.size() - 2 * id_size;
- std::string id_vendor = device.id.substr(vid_location, id_size);
- const size_t pid_location = device.id.size() - id_size;
- std::string id_product = device.id.substr(pid_location, id_size);
-
- usb_id->clear();
- usb_id->append(id_vendor);
- usb_id->append(":");
- usb_id->append(id_product);
- return true;
-}
-
-bool GetUsbVersion(const Device& device, std::string* usb_version) {
- return false;
-}
-
-} // namespace cricket
diff --git a/webrtc/media/devices/macdevicemanager.cc b/webrtc/media/devices/macdevicemanager.cc
deleted file mode 100644
index c2f3d8b..0000000
--- a/webrtc/media/devices/macdevicemanager.cc
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/media/devices/macdevicemanager.h"
-
-#include <memory>
-
-#include <CoreAudio/CoreAudio.h>
-#include <QuickTime/QuickTime.h>
-
-#include "webrtc/base/logging.h"
-#include "webrtc/base/stringutils.h"
-#include "webrtc/base/thread.h"
-#include "webrtc/media/base/mediacommon.h"
-
-class DeviceWatcherImpl;
-
-namespace cricket {
-
-DeviceManagerInterface* DeviceManagerFactory::Create() {
- return new MacDeviceManager();
-}
-
-class MacDeviceWatcher : public DeviceWatcher {
- public:
- explicit MacDeviceWatcher(DeviceManagerInterface* dm);
- virtual ~MacDeviceWatcher();
- virtual bool Start();
- virtual void Stop();
-
- private:
- DeviceManagerInterface* manager_;
- DeviceWatcherImpl* impl_;
-};
-
-static const char* kFilteredAudioDevicesName[] = {
- NULL,
-};
-// TODO(tommyw): Try to get hold of a copy of Final Cut to understand why we
-// crash while scanning their components on OS X.
-static const char* const kFilteredVideoDevicesName[] = {
- "DVCPRO HD", // Final cut
- "Sonix SN9C201p", // Crashes in OpenAComponent and CloseComponent
- NULL,
-};
-static const UInt32 kAudioDeviceNameLength = 64;
-// Obj-C functions defined in macdevicemanagermm.mm
-// TODO(ronghuawu): have a shared header for these function defines.
-extern DeviceWatcherImpl* CreateDeviceWatcherCallback(
- DeviceManagerInterface* dm);
-extern void ReleaseDeviceWatcherCallback(DeviceWatcherImpl* impl);
-extern bool GetAVFoundationVideoDevices(std::vector<Device>* out);
-static bool GetAudioDeviceIDs(bool inputs, std::vector<AudioDeviceID>* out);
-static bool GetAudioDeviceName(AudioDeviceID id, bool input, std::string* out);
-
-MacDeviceManager::MacDeviceManager() {
- set_watcher(new MacDeviceWatcher(this));
-}
-
-MacDeviceManager::~MacDeviceManager() {
-}
-
-bool MacDeviceManager::GetVideoCaptureDevices(std::vector<Device>* devices) {
- devices->clear();
- if (!GetAVFoundationVideoDevices(devices)) {
- return false;
- }
- return FilterDevices(devices, kFilteredVideoDevicesName);
-}
-
-bool MacDeviceManager::GetAudioDevices(bool input,
- std::vector<Device>* devs) {
- devs->clear();
- std::vector<AudioDeviceID> dev_ids;
- bool ret = GetAudioDeviceIDs(input, &dev_ids);
- if (!ret) {
- return false;
- }
- for (size_t i = 0; i < dev_ids.size(); ++i) {
- std::string name;
- if (GetAudioDeviceName(dev_ids[i], input, &name)) {
- devs->push_back(Device(name, dev_ids[i]));
- }
- }
- return FilterDevices(devs, kFilteredAudioDevicesName);
-}
-
-static bool GetAudioDeviceIDs(bool input,
- std::vector<AudioDeviceID>* out_dev_ids) {
- UInt32 propsize;
- OSErr err = AudioHardwareGetPropertyInfo(kAudioHardwarePropertyDevices,
- &propsize, NULL);
- if (0 != err) {
- LOG(LS_ERROR) << "Couldn't get information about property, "
- << "so no device list acquired.";
- return false;
- }
-
- size_t num_devices = propsize / sizeof(AudioDeviceID);
- std::unique_ptr<AudioDeviceID[]> device_ids(
- new AudioDeviceID[num_devices]);
-
- err = AudioHardwareGetProperty(kAudioHardwarePropertyDevices,
- &propsize, device_ids.get());
- if (0 != err) {
- LOG(LS_ERROR) << "Failed to get device ids, "
- << "so no device listing acquired.";
- return false;
- }
-
- for (size_t i = 0; i < num_devices; ++i) {
- AudioDeviceID an_id = device_ids[i];
- // find out the number of channels for this direction
- // (input/output) on this device -
- // we'll ignore anything with no channels.
- err = AudioDeviceGetPropertyInfo(an_id, 0, input,
- kAudioDevicePropertyStreams,
- &propsize, NULL);
- if (0 == err) {
- unsigned num_channels = propsize / sizeof(AudioStreamID);
- if (0 < num_channels) {
- out_dev_ids->push_back(an_id);
- }
- } else {
- LOG(LS_ERROR) << "No property info for stream property for device id "
- << an_id << "(is_input == " << input
- << "), so not including it in the list.";
- }
- }
-
- return true;
-}
-
-static bool GetAudioDeviceName(AudioDeviceID id,
- bool input,
- std::string* out_name) {
- UInt32 nameLength = kAudioDeviceNameLength;
- char name[kAudioDeviceNameLength + 1];
- OSErr err = AudioDeviceGetProperty(id, 0, input,
- kAudioDevicePropertyDeviceName,
- &nameLength, name);
- if (0 != err) {
- LOG(LS_ERROR) << "No name acquired for device id " << id;
- return false;
- }
-
- *out_name = name;
- return true;
-}
-
-MacDeviceWatcher::MacDeviceWatcher(DeviceManagerInterface* manager)
- : DeviceWatcher(manager),
- manager_(manager),
- impl_(NULL) {
-}
-
-MacDeviceWatcher::~MacDeviceWatcher() {
-}
-
-bool MacDeviceWatcher::Start() {
- if (!impl_) {
- impl_ = CreateDeviceWatcherCallback(manager_);
- }
- return impl_ != NULL;
-}
-
-void MacDeviceWatcher::Stop() {
- if (impl_) {
- ReleaseDeviceWatcherCallback(impl_);
- impl_ = NULL;
- }
-}
-
-}; // namespace cricket
diff --git a/webrtc/media/devices/macdevicemanager.h b/webrtc/media/devices/macdevicemanager.h
deleted file mode 100644
index d0a0ac1..0000000
--- a/webrtc/media/devices/macdevicemanager.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MEDIA_DEVICES_MACDEVICEMANAGER_H_
-#define WEBRTC_MEDIA_DEVICES_MACDEVICEMANAGER_H_
-
-#include <string>
-#include <vector>
-
-#include "webrtc/base/sigslot.h"
-#include "webrtc/base/stringencode.h"
-#include "webrtc/media/devices/devicemanager.h"
-
-namespace cricket {
-
-class DeviceWatcher;
-
-class MacDeviceManager : public DeviceManager {
- public:
- MacDeviceManager();
- virtual ~MacDeviceManager();
-
- virtual bool GetVideoCaptureDevices(std::vector<Device>* devs);
-
- private:
- virtual bool GetAudioDevices(bool input, std::vector<Device>* devs);
- bool FilterDevice(const Device& d);
-};
-
-} // namespace cricket
-
-#endif // WEBRTC_MEDIA_DEVICES_MACDEVICEMANAGER_H_
diff --git a/webrtc/media/devices/macdevicemanagermm.mm b/webrtc/media/devices/macdevicemanagermm.mm
deleted file mode 100644
index f0ad39e..0000000
--- a/webrtc/media/devices/macdevicemanagermm.mm
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Copyright (c) 2010 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-// support GCC compiler
-#ifndef __has_feature
-#define __has_feature(x) 0
-#endif
-
-#include "webrtc/media/devices/devicemanager.h"
-
-#import <assert.h>
-#ifdef __MAC_OS_X_VERSION_MAX_ALLOWED
-#if __MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
- #import <AVFoundation/AVFoundation.h>
-#endif
-#endif
-#import <QTKit/QTKit.h>
-
-#include "webrtc/base/logging.h"
-
-@interface DeviceWatcherImpl : NSObject {
- @private
- cricket::DeviceManagerInterface* manager_;
-}
-- (id)init:(cricket::DeviceManagerInterface*)manager;
-- (void)onDevicesChanged:(NSNotification*)notification;
-@end
-
-@implementation DeviceWatcherImpl
-- (id)init:(cricket::DeviceManagerInterface*)manager {
- if ((self = [super init])) {
- assert(manager != NULL);
- manager_ = manager;
- [[NSNotificationCenter defaultCenter]
- addObserver:self
- selector:@selector(onDevicesChanged:)
- name:QTCaptureDeviceWasConnectedNotification
- object:nil];
- [[NSNotificationCenter defaultCenter]
- addObserver:self
- selector:@selector(onDevicesChanged:)
- name:QTCaptureDeviceWasDisconnectedNotification
- object:nil];
- }
- return self;
-}
-
-- (void)dealloc {
- [[NSNotificationCenter defaultCenter] removeObserver:self];
-#if !__has_feature(objc_arc)
- [super dealloc];
-#endif
-}
-- (void)onDevicesChanged:(NSNotification*)notification {
- manager_->SignalDevicesChange();
-}
-@end
-
-namespace cricket {
-
-DeviceWatcherImpl* CreateDeviceWatcherCallback(
- DeviceManagerInterface* manager) {
- DeviceWatcherImpl* impl;
-#if !__has_feature(objc_arc)
- NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
-#else
- @autoreleasepool
-#endif
- { impl = [[DeviceWatcherImpl alloc] init:manager]; }
-#if !__has_feature(objc_arc)
- [pool drain];
-#endif
- return impl;
-}
-
-void ReleaseDeviceWatcherCallback(DeviceWatcherImpl* watcher) {
-#if !__has_feature(objc_arc)
- NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
- [watcher release];
- [pool drain];
-#endif
-}
-
-bool GetQTKitVideoDevices(std::vector<Device>* devices) {
-#if !__has_feature(objc_arc)
- NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
-#else
- @autoreleasepool
-#endif
- {
- NSArray* qt_capture_devices =
- [QTCaptureDevice inputDevicesWithMediaType:QTMediaTypeVideo];
- NSUInteger count = [qt_capture_devices count];
- LOG(LS_INFO) << count << " capture device(s) found:";
- for (QTCaptureDevice* qt_capture_device in qt_capture_devices) {
- static NSString* const kFormat = @"localizedDisplayName: \"%@\", "
- @"modelUniqueID: \"%@\", uniqueID \"%@\", isConnected: %d, "
- @"isOpen: %d, isInUseByAnotherApplication: %d";
- NSString* info = [NSString
- stringWithFormat:kFormat,
- [qt_capture_device localizedDisplayName],
- [qt_capture_device modelUniqueID],
- [qt_capture_device uniqueID],
- [qt_capture_device isConnected],
- [qt_capture_device isOpen],
- [qt_capture_device isInUseByAnotherApplication]];
- LOG(LS_INFO) << [info UTF8String];
-
- std::string name([[qt_capture_device localizedDisplayName] UTF8String]);
- devices->push_back(
- Device(name, [[qt_capture_device uniqueID] UTF8String]));
- }
- }
-#if !__has_feature(objc_arc)
- [pool drain];
-#endif
- return true;
-}
-
-bool GetAVFoundationVideoDevices(std::vector<Device>* devices) {
-#ifdef __MAC_OS_X_VERSION_MAX_ALLOWED
-#if __MAC_OS_X_VERSION_MAX_ALLOWED >=1070
- if (![AVCaptureDevice class]) {
- // Fallback to using QTKit if AVFoundation is not available
- return GetQTKitVideoDevices(devices);
- }
-#if !__has_feature(objc_arc)
- NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
-#else
- @autoreleasepool
-#endif
- {
- NSArray* capture_devices = [AVCaptureDevice devices];
- LOG(LS_INFO) << [capture_devices count] << " capture device(s) found:";
- for (AVCaptureDevice* capture_device in capture_devices) {
- if ([capture_device hasMediaType:AVMediaTypeVideo] ||
- [capture_device hasMediaType:AVMediaTypeMuxed]) {
- static NSString* const kFormat = @"localizedName: \"%@\", "
- @"modelID: \"%@\", uniqueID \"%@\", isConnected: %d, "
- @"isInUseByAnotherApplication: %d";
- NSString* info = [NSString
- stringWithFormat:kFormat,
- [capture_device localizedName],
- [capture_device modelID],
- [capture_device uniqueID],
- [capture_device isConnected],
- [capture_device isInUseByAnotherApplication]];
- LOG(LS_INFO) << [info UTF8String];
-
- std::string name([[capture_device localizedName] UTF8String]);
- devices->push_back(
- Device(name, [[capture_device uniqueID] UTF8String]));
- }
- }
- }
-#if !__has_feature(objc_arc)
- [pool drain];
-#endif
- return true;
-#else // __MAC_OS_X_VERSION_MAX_ALLOWED >=1070
- return GetQTKitVideoDevices(devices);
-#endif // __MAC_OS_X_VERSION_MAX_ALLOWED >=1070
-#else // __MAC_OS_X_VERSION_MAX_ALLOWED
- return GetQTKitVideoDevices(devices);
-#endif // __MAC_OS_X_VERSION_MAX_ALLOWED
-}
-
-} // namespace cricket
diff --git a/webrtc/media/devices/mobiledevicemanager.cc b/webrtc/media/devices/mobiledevicemanager.cc
deleted file mode 100644
index 1b66814..0000000
--- a/webrtc/media/devices/mobiledevicemanager.cc
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <memory>
-
-#include "webrtc/base/arraysize.h"
-#include "webrtc/media/devices/devicemanager.h"
-#include "webrtc/modules/video_capture/video_capture_factory.h"
-
-namespace cricket {
-
-class MobileDeviceManager : public DeviceManager {
- public:
- MobileDeviceManager();
- virtual ~MobileDeviceManager();
- virtual bool GetVideoCaptureDevices(std::vector<Device>* devs);
-};
-
-MobileDeviceManager::MobileDeviceManager() {
- // We don't expect available devices to change on Android/iOS, so use a
- // do-nothing watcher.
- set_watcher(new DeviceWatcher(this));
-}
-
-MobileDeviceManager::~MobileDeviceManager() {}
-
-bool MobileDeviceManager::GetVideoCaptureDevices(std::vector<Device>* devs) {
- devs->clear();
- std::unique_ptr<webrtc::VideoCaptureModule::DeviceInfo> info(
- webrtc::VideoCaptureFactory::CreateDeviceInfo(0));
- if (!info)
- return false;
-
- uint32_t num_cams = info->NumberOfDevices();
- char id[256];
- char name[256];
- for (uint32_t i = 0; i < num_cams; ++i) {
- if (info->GetDeviceName(i, name, arraysize(name), id, arraysize(id)))
- continue;
- devs->push_back(Device(name, id));
- }
- return true;
-}
-
-DeviceManagerInterface* DeviceManagerFactory::Create() {
- return new MobileDeviceManager();
-}
-
-bool GetUsbId(const Device& device, std::string* usb_id) { return false; }
-
-bool GetUsbVersion(const Device& device, std::string* usb_version) {
- return false;
-}
-
-} // namespace cricket
diff --git a/webrtc/media/devices/win32deviceinfo.cc b/webrtc/media/devices/win32deviceinfo.cc
deleted file mode 100644
index 6e5b591..0000000
--- a/webrtc/media/devices/win32deviceinfo.cc
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/media/devices/deviceinfo.h"
-
-namespace cricket {
-
-bool GetUsbId(const Device& device, std::string* usb_id) {
- // Both PID and VID are 4 characters.
- const int id_size = 4;
- const char vid[] = "vid_"; // Also contains '\0'.
- const size_t vid_location = device.id.find(vid);
- if (vid_location == std::string::npos ||
- vid_location + sizeof(vid) - 1 + id_size > device.id.size()) {
- return false;
- }
- const char pid[] = "pid_";
- const size_t pid_location = device.id.find(pid);
- if (pid_location == std::string::npos ||
- pid_location + sizeof(pid) - 1 + id_size > device.id.size()) {
- return false;
- }
- std::string id_vendor = device.id.substr(vid_location + sizeof(vid) - 1,
- id_size);
- std::string id_product = device.id.substr(pid_location + sizeof(pid) -1,
- id_size);
- usb_id->clear();
- usb_id->append(id_vendor);
- usb_id->append(":");
- usb_id->append(id_product);
- return true;
-}
-
-bool GetUsbVersion(const Device& device, std::string* usb_version) {
- return false;
-}
-
-} // namespace cricket
diff --git a/webrtc/media/devices/win32devicemanager.cc b/webrtc/media/devices/win32devicemanager.cc
deleted file mode 100644
index 08a5801..0000000
--- a/webrtc/media/devices/win32devicemanager.cc
+++ /dev/null
@@ -1,398 +0,0 @@
-/*
- * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/media/devices/win32devicemanager.h"
-
-#include <atlbase.h>
-#include <dbt.h>
-#include <strmif.h> // must come before ks.h
-#include <ks.h>
-#include <ksmedia.h>
-#include <mmdeviceapi.h>
-#include <mmsystem.h>
-#include <functiondiscoverykeys_devpkey.h>
-#include <uuids.h>
-
-// PKEY_AudioEndpoint_GUID isn't included in uuid.lib and we don't want
-// to define INITGUID in order to define all the uuids in this object file
-// as it will conflict with uuid.lib (multiply defined symbols).
-// So our workaround is to define this one missing symbol here manually.
-// See: https://code.google.com/p/webrtc/issues/detail?id=3996
-EXTERN_C const PROPERTYKEY PKEY_AudioEndpoint_GUID = { {
- 0x1da5d803, 0xd492, 0x4edd, {
- 0x8c, 0x23, 0xe0, 0xc0, 0xff, 0xee, 0x7f, 0x0e
- } }, 4
-};
-
-#include "webrtc/base/arraysize.h"
-#include "webrtc/base/logging.h"
-#include "webrtc/base/stringutils.h"
-#include "webrtc/base/thread.h"
-#include "webrtc/base/win32.h" // ToUtf8
-#include "webrtc/base/win32window.h"
-#include "webrtc/media/base/mediacommon.h"
-#ifdef HAVE_LOGITECH_HEADERS
-#include "third_party/logitech/files/logitechquickcam.h"
-#endif
-
-namespace cricket {
-
-DeviceManagerInterface* DeviceManagerFactory::Create() {
- return new Win32DeviceManager();
-}
-
-class Win32DeviceWatcher
- : public DeviceWatcher,
- public rtc::Win32Window {
- public:
- explicit Win32DeviceWatcher(Win32DeviceManager* dm);
- virtual ~Win32DeviceWatcher();
- virtual bool Start();
- virtual void Stop();
-
- private:
- HDEVNOTIFY Register(REFGUID guid);
- void Unregister(HDEVNOTIFY notify);
- virtual bool OnMessage(UINT msg, WPARAM wp, LPARAM lp, LRESULT& result);
-
- Win32DeviceManager* manager_;
- HDEVNOTIFY audio_notify_;
- HDEVNOTIFY video_notify_;
-};
-
-static const char* kFilteredAudioDevicesName[] = {
- NULL,
-};
-static const char* const kFilteredVideoDevicesName[] = {
- "Asus virtual Camera", // Bad Asus desktop virtual cam
- "Bluetooth Video", // Bad Sony viao bluetooth sharing driver
- NULL,
-};
-static const wchar_t kFriendlyName[] = L"FriendlyName";
-static const wchar_t kDevicePath[] = L"DevicePath";
-static const char kUsbDevicePathPrefix[] = "\\\\?\\usb";
-static bool GetDevices(const CLSID& catid, std::vector<Device>* out);
-static bool GetCoreAudioDevices(bool input, std::vector<Device>* devs);
-static bool GetWaveDevices(bool input, std::vector<Device>* devs);
-
-Win32DeviceManager::Win32DeviceManager()
- : need_couninitialize_(false) {
- set_watcher(new Win32DeviceWatcher(this));
-}
-
-Win32DeviceManager::~Win32DeviceManager() {
- if (initialized()) {
- Terminate();
- }
-}
-
-bool Win32DeviceManager::Init() {
- if (!initialized()) {
- HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
- need_couninitialize_ = SUCCEEDED(hr);
- if (FAILED(hr)) {
- LOG(LS_ERROR) << "CoInitialize failed, hr=" << hr;
- if (hr != RPC_E_CHANGED_MODE) {
- return false;
- }
- }
- if (!watcher()->Start()) {
- return false;
- }
- set_initialized(true);
- }
- return true;
-}
-
-void Win32DeviceManager::Terminate() {
- if (initialized()) {
- watcher()->Stop();
- if (need_couninitialize_) {
- CoUninitialize();
- need_couninitialize_ = false;
- }
- set_initialized(false);
- }
-}
-
-bool Win32DeviceManager::GetDefaultVideoCaptureDevice(Device* device) {
- bool ret = false;
- // If there are multiple capture devices, we want the first USB one.
- // This avoids issues with defaulting to virtual cameras or grabber cards.
- std::vector<Device> devices;
- ret = (GetVideoCaptureDevices(&devices) && !devices.empty());
- if (ret) {
- *device = devices[0];
- for (size_t i = 0; i < devices.size(); ++i) {
- if (strnicmp(devices[i].id.c_str(), kUsbDevicePathPrefix,
- arraysize(kUsbDevicePathPrefix) - 1) == 0) {
- *device = devices[i];
- break;
- }
- }
- }
- return ret;
-}
-
-bool Win32DeviceManager::GetAudioDevices(bool input,
- std::vector<Device>* devs) {
- devs->clear();
-
- if (rtc::IsWindowsVistaOrLater()) {
- if (!GetCoreAudioDevices(input, devs))
- return false;
- } else {
- if (!GetWaveDevices(input, devs))
- return false;
- }
- return FilterDevices(devs, kFilteredAudioDevicesName);
-}
-
-bool Win32DeviceManager::GetVideoCaptureDevices(std::vector<Device>* devices) {
- devices->clear();
- if (!GetDevices(CLSID_VideoInputDeviceCategory, devices)) {
- return false;
- }
- return FilterDevices(devices, kFilteredVideoDevicesName);
-}
-
-bool GetDevices(const CLSID& catid, std::vector<Device>* devices) {
- HRESULT hr;
-
- // CComPtr is a scoped pointer that will be auto released when going
- // out of scope. CoUninitialize must not be called before the
- // release.
- CComPtr<ICreateDevEnum> sys_dev_enum;
- CComPtr<IEnumMoniker> cam_enum;
- if (FAILED(hr = sys_dev_enum.CoCreateInstance(CLSID_SystemDeviceEnum)) ||
- FAILED(hr = sys_dev_enum->CreateClassEnumerator(catid, &cam_enum, 0))) {
- LOG(LS_ERROR) << "Failed to create device enumerator, hr=" << hr;
- return false;
- }
-
- // Only enum devices if CreateClassEnumerator returns S_OK. If there are no
- // devices available, S_FALSE will be returned, but enumMk will be NULL.
- if (hr == S_OK) {
- CComPtr<IMoniker> mk;
- while (cam_enum->Next(1, &mk, NULL) == S_OK) {
-#ifdef HAVE_LOGITECH_HEADERS
- // Initialize Logitech device if applicable
- MaybeLogitechDeviceReset(mk);
-#endif
- CComPtr<IPropertyBag> bag;
- if (SUCCEEDED(mk->BindToStorage(NULL, NULL,
- __uuidof(bag), reinterpret_cast<void**>(&bag)))) {
- CComVariant name, path;
- std::string name_str, path_str;
- if (SUCCEEDED(bag->Read(kFriendlyName, &name, 0)) &&
- name.vt == VT_BSTR) {
- name_str = rtc::ToUtf8(name.bstrVal);
- // Get the device id if one exists.
- if (SUCCEEDED(bag->Read(kDevicePath, &path, 0)) &&
- path.vt == VT_BSTR) {
- path_str = rtc::ToUtf8(path.bstrVal);
- }
-
- devices->push_back(Device(name_str, path_str));
- }
- }
- mk = NULL;
- }
- }
-
- return true;
-}
-
-HRESULT GetStringProp(IPropertyStore* bag, PROPERTYKEY key, std::string* out) {
- out->clear();
- PROPVARIANT var;
- PropVariantInit(&var);
-
- HRESULT hr = bag->GetValue(key, &var);
- if (SUCCEEDED(hr)) {
- if (var.pwszVal)
- *out = rtc::ToUtf8(var.pwszVal);
- else
- hr = E_FAIL;
- }
-
- PropVariantClear(&var);
- return hr;
-}
-
-// Adapted from http://msdn.microsoft.com/en-us/library/dd370812(v=VS.85).aspx
-HRESULT CricketDeviceFromImmDevice(IMMDevice* device, Device* out) {
- CComPtr<IPropertyStore> props;
-
- HRESULT hr = device->OpenPropertyStore(STGM_READ, &props);
- if (FAILED(hr)) {
- return hr;
- }
-
- // Get the endpoint's name and id.
- std::string name, guid;
- hr = GetStringProp(props, PKEY_Device_FriendlyName, &name);
- if (SUCCEEDED(hr)) {
- hr = GetStringProp(props, PKEY_AudioEndpoint_GUID, &guid);
-
- if (SUCCEEDED(hr)) {
- out->name = name;
- out->id = guid;
- }
- }
- return hr;
-}
-
-bool GetCoreAudioDevices(
- bool input, std::vector<Device>* devs) {
- HRESULT hr = S_OK;
- CComPtr<IMMDeviceEnumerator> enumerator;
-
- hr = CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL, CLSCTX_ALL,
- __uuidof(IMMDeviceEnumerator), reinterpret_cast<void**>(&enumerator));
- if (SUCCEEDED(hr)) {
- CComPtr<IMMDeviceCollection> devices;
- hr = enumerator->EnumAudioEndpoints((input ? eCapture : eRender),
- DEVICE_STATE_ACTIVE, &devices);
- if (SUCCEEDED(hr)) {
- unsigned int count;
- hr = devices->GetCount(&count);
-
- if (SUCCEEDED(hr)) {
- for (unsigned int i = 0; i < count; i++) {
- CComPtr<IMMDevice> device;
-
- // Get pointer to endpoint number i.
- hr = devices->Item(i, &device);
- if (FAILED(hr)) {
- break;
- }
-
- Device dev;
- hr = CricketDeviceFromImmDevice(device, &dev);
- if (SUCCEEDED(hr)) {
- devs->push_back(dev);
- } else {
- LOG(LS_WARNING) << "Unable to query IMM Device, skipping. HR="
- << hr;
- hr = S_FALSE;
- }
- }
- }
- }
- }
-
- if (FAILED(hr)) {
- LOG(LS_WARNING) << "GetCoreAudioDevices failed with hr " << hr;
- return false;
- }
- return true;
-}
-
-bool GetWaveDevices(bool input, std::vector<Device>* devs) {
- // Note, we don't use the System Device Enumerator interface here since it
- // adds lots of pseudo-devices to the list, such as DirectSound and Wave
- // variants of the same device.
- if (input) {
- int num_devs = waveInGetNumDevs();
- for (int i = 0; i < num_devs; ++i) {
- WAVEINCAPS caps;
- if (waveInGetDevCaps(i, &caps, sizeof(caps)) == MMSYSERR_NOERROR &&
- caps.wChannels > 0) {
- devs->push_back(Device(rtc::ToUtf8(caps.szPname),
- rtc::ToString(i)));
- }
- }
- } else {
- int num_devs = waveOutGetNumDevs();
- for (int i = 0; i < num_devs; ++i) {
- WAVEOUTCAPS caps;
- if (waveOutGetDevCaps(i, &caps, sizeof(caps)) == MMSYSERR_NOERROR &&
- caps.wChannels > 0) {
- devs->push_back(Device(rtc::ToUtf8(caps.szPname), i));
- }
- }
- }
- return true;
-}
-
-Win32DeviceWatcher::Win32DeviceWatcher(Win32DeviceManager* manager)
- : DeviceWatcher(manager),
- manager_(manager),
- audio_notify_(NULL),
- video_notify_(NULL) {
-}
-
-Win32DeviceWatcher::~Win32DeviceWatcher() {
-}
-
-bool Win32DeviceWatcher::Start() {
- if (!Create(NULL, _T("libjingle Win32DeviceWatcher Window"),
- 0, 0, 0, 0, 0, 0)) {
- return false;
- }
-
- audio_notify_ = Register(KSCATEGORY_AUDIO);
- if (!audio_notify_) {
- Stop();
- return false;
- }
-
- video_notify_ = Register(KSCATEGORY_VIDEO);
- if (!video_notify_) {
- Stop();
- return false;
- }
-
- return true;
-}
-
-void Win32DeviceWatcher::Stop() {
- UnregisterDeviceNotification(video_notify_);
- video_notify_ = NULL;
- UnregisterDeviceNotification(audio_notify_);
- audio_notify_ = NULL;
- Destroy();
-}
-
-HDEVNOTIFY Win32DeviceWatcher::Register(REFGUID guid) {
- DEV_BROADCAST_DEVICEINTERFACE dbdi;
- dbdi.dbcc_size = sizeof(dbdi);
- dbdi.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
- dbdi.dbcc_classguid = guid;
- dbdi.dbcc_name[0] = '\0';
- return RegisterDeviceNotification(handle(), &dbdi,
- DEVICE_NOTIFY_WINDOW_HANDLE);
-}
-
-void Win32DeviceWatcher::Unregister(HDEVNOTIFY handle) {
- UnregisterDeviceNotification(handle);
-}
-
-bool Win32DeviceWatcher::OnMessage(UINT uMsg, WPARAM wParam, LPARAM lParam,
- LRESULT& result) {
- if (uMsg == WM_DEVICECHANGE) {
- if (wParam == DBT_DEVICEARRIVAL ||
- wParam == DBT_DEVICEREMOVECOMPLETE) {
- DEV_BROADCAST_DEVICEINTERFACE* dbdi =
- reinterpret_cast<DEV_BROADCAST_DEVICEINTERFACE*>(lParam);
- if (dbdi->dbcc_classguid == KSCATEGORY_AUDIO ||
- dbdi->dbcc_classguid == KSCATEGORY_VIDEO) {
- manager_->SignalDevicesChange();
- }
- }
- result = 0;
- return true;
- }
-
- return false;
-}
-
-}; // namespace cricket
diff --git a/webrtc/media/devices/win32devicemanager.h b/webrtc/media/devices/win32devicemanager.h
deleted file mode 100644
index ef912f8..0000000
--- a/webrtc/media/devices/win32devicemanager.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef WEBRTC_MEDIA_DEVICES_WIN32DEVICEMANAGER_H_
-#define WEBRTC_MEDIA_DEVICES_WIN32DEVICEMANAGER_H_
-
-#include <string>
-#include <vector>
-
-#include "webrtc/base/sigslot.h"
-#include "webrtc/base/stringencode.h"
-#include "webrtc/media/devices/devicemanager.h"
-
-namespace cricket {
-
-class Win32DeviceManager : public DeviceManager {
- public:
- Win32DeviceManager();
- virtual ~Win32DeviceManager();
-
- // Initialization
- virtual bool Init();
- virtual void Terminate();
-
- virtual bool GetVideoCaptureDevices(std::vector<Device>* devs);
-
- private:
- virtual bool GetAudioDevices(bool input, std::vector<Device>* devs);
- virtual bool GetDefaultVideoCaptureDevice(Device* device);
-
- bool need_couninitialize_;
-};
-
-} // namespace cricket
-
-#endif // WEBRTC_MEDIA_DEVICES_WIN32DEVICEMANAGER_H_
diff --git a/webrtc/media/engine/fakewebrtcvcmfactory.h b/webrtc/media/engine/fakewebrtcvcmfactory.h
index f8dbf43..38052d0 100644
--- a/webrtc/media/engine/fakewebrtcvcmfactory.h
+++ b/webrtc/media/engine/fakewebrtcvcmfactory.h
@@ -13,6 +13,7 @@
#include <vector>
+#include "webrtc/media/engine/fakewebrtcdeviceinfo.h"
#include "webrtc/media/engine/fakewebrtcvideocapturemodule.h"
#include "webrtc/media/engine/webrtcvideocapturer.h"
diff --git a/webrtc/media/engine/fakewebrtcvideocapturemodule.h b/webrtc/media/engine/fakewebrtcvideocapturemodule.h
index 397ce9c..b2fe459 100644
--- a/webrtc/media/engine/fakewebrtcvideocapturemodule.h
+++ b/webrtc/media/engine/fakewebrtcvideocapturemodule.h
@@ -14,7 +14,6 @@
#include <vector>
#include "webrtc/media/base/testutils.h"
-#include "webrtc/media/engine/fakewebrtcdeviceinfo.h"
#include "webrtc/media/engine/webrtcvideocapturer.h"
class FakeWebRtcVcmFactory;
diff --git a/webrtc/media/engine/webrtcvideocapturer.h b/webrtc/media/engine/webrtcvideocapturer.h
index f0808e9..a76f9dc 100644
--- a/webrtc/media/engine/webrtcvideocapturer.h
+++ b/webrtc/media/engine/webrtcvideocapturer.h
@@ -18,6 +18,7 @@
#include "webrtc/base/asyncinvoker.h"
#include "webrtc/base/messagehandler.h"
#include "webrtc/common_video/libyuv/include/webrtc_libyuv.h"
+#include "webrtc/media/base/device.h"
#include "webrtc/media/base/videocapturer.h"
#include "webrtc/media/engine/webrtcvideoframe.h"
#include "webrtc/modules/video_capture/video_capture.h"
diff --git a/webrtc/media/engine/webrtcvoiceengine.cc b/webrtc/media/engine/webrtcvoiceengine.cc
index 0163238..ae2518b 100644
--- a/webrtc/media/engine/webrtcvoiceengine.cc
+++ b/webrtc/media/engine/webrtcvoiceengine.cc
@@ -61,7 +61,7 @@
// -1 or 0 to select the default device.
#ifdef WIN32
const int kDefaultAudioDeviceId = -1;
-#else
+#elif !defined(WEBRTC_IOS)
const int kDefaultAudioDeviceId = 0;
#endif
diff --git a/webrtc/media/media.gyp b/webrtc/media/media.gyp
index d133448..41d1d08 100644
--- a/webrtc/media/media.gyp
+++ b/webrtc/media/media.gyp
@@ -78,7 +78,6 @@
'base/videosourcebase.h',
'base/yuvframegenerator.cc',
'base/yuvframegenerator.h',
- 'devices/deviceinfo.h',
'devices/videorendererfactory.h',
'engine/nullwebrtcvideoengine.h',
'engine/simulcast.cc',
@@ -123,17 +122,6 @@
4389, # signed/unsigned mismatch.
],
'conditions': [
- ['include_internal_device_management==1', {
- 'sources': [
- 'devices/devicemanager.cc',
- 'devices/devicemanager.h',
- ],
- }, {
- 'sources': [
- 'devices/dummydevicemanager.cc',
- 'devices/dummydevicemanager.h',
- ],
- }],
['build_libyuv==1', {
'dependencies': ['<(DEPTH)/third_party/libyuv/libyuv.gyp:libyuv',],
}],
@@ -172,9 +160,6 @@
'sources': [
'devices/libudevsymboltable.cc',
'devices/libudevsymboltable.h',
- 'devices/linuxdeviceinfo.cc',
- 'devices/linuxdevicemanager.cc',
- 'devices/linuxdevicemanager.h',
'devices/v4llookup.cc',
'devices/v4llookup.h',
],
@@ -209,51 +194,6 @@
},
},
}],
- ['OS=="win" and include_internal_device_management==1', {
- 'sources': [
- 'devices/win32deviceinfo.cc',
- 'devices/win32devicemanager.cc',
- 'devices/win32devicemanager.h',
- ],
- 'msvs_settings': {
- 'VCLibrarianTool': {
- 'AdditionalDependencies': [
- 'winmm.lib',
- ],
- },
- },
- }],
- ['OS=="mac" and include_internal_device_management==1', {
- 'sources': [
- 'devices/macdeviceinfo.cc',
- 'devices/macdevicemanager.cc',
- 'devices/macdevicemanager.h',
- 'devices/macdevicemanagermm.mm',
- ],
- 'xcode_settings': {
- 'WARNING_CFLAGS': [
- # TODO(perkj): Update macdevicemanager.cc to stop using
- # deprecated functions and remove this flag.
- '-Wno-deprecated-declarations',
- ],
- # Disable partial availability warning to prevent errors
- # in macdevicemanagermm.mm using AVFoundation.
- # https://code.google.com/p/webrtc/issues/detail?id=4695
- 'WARNING_CFLAGS!': ['-Wpartial-availability'],
- },
- 'link_settings': {
- 'xcode_settings': {
- 'OTHER_LDFLAGS': [
- '-weak_framework AVFoundation',
- '-framework Cocoa',
- '-framework CoreAudio',
- '-framework CoreVideo',
- '-framework OpenGL',
- '-framework QTKit',
- ],
- },
- },
- }],
['OS=="mac" and target_arch=="ia32"', {
'sources': [
'devices/carbonvideorenderer.cc',
@@ -267,36 +207,11 @@
},
},
}],
- ['OS=="ios" and include_internal_device_management==1', {
- 'sources': [
- 'devices/mobiledevicemanager.cc',
- ],
- 'include_dirs': [
- # TODO(sjlee) Remove when vp8 is building for iOS. vp8 pulls in
- # libjpeg which pulls in libyuv which currently disabled.
- '../../third_party/libyuv/include',
- ],
- # TODO(kjellander): Make the code compile without disabling these.
- # See https://bugs.chromium.org/p/webrtc/issues/detail?id=3307
- 'cflags': [
- '-Wno-unused-const-variable',
- ],
- 'xcode_settings': {
- 'WARNING_CFLAGS': [
- '-Wno-unused-const-variable',
- ],
- },
- }],
['OS=="ios" or (OS=="mac" and target_arch!="ia32")', {
'defines': [
'CARBON_DEPRECATED=YES',
],
}],
- ['OS=="android" and include_internal_device_management==1', {
- 'sources': [
- 'devices/mobiledevicemanager.cc',
- ],
- }],
],
}, # target rtc_media
], # targets.
diff --git a/webrtc/media/media_tests.gypi b/webrtc/media/media_tests.gypi
index 7c14a56..f850490 100644
--- a/webrtc/media/media_tests.gypi
+++ b/webrtc/media/media_tests.gypi
@@ -51,7 +51,6 @@
'base/fakevideorenderer.h',
'base/testutils.cc',
'base/testutils.h',
- 'devices/fakedevicemanager.h',
'engine/fakewebrtccall.cc',
'engine/fakewebrtccall.h',
'engine/fakewebrtccommon.h',
@@ -88,16 +87,12 @@
'base/videocommon_unittest.cc',
'base/videoengine_unittest.h',
'base/videoframe_unittest.h',
- 'devices/dummydevicemanager_unittest.cc',
'engine/nullwebrtcvideoengine_unittest.cc',
'engine/simulcast_unittest.cc',
'engine/webrtcmediaengine_unittest.cc',
'engine/webrtcvideocapturer_unittest.cc',
'engine/webrtcvideoframe_unittest.cc',
'engine/webrtcvideoframefactory_unittest.cc',
- # Disabled because some tests fail.
- # TODO(ronghuawu): Reenable these tests.
- # 'devices/devicemanager_unittest.cc',
'engine/webrtcvideoengine2_unittest.cc',
'engine/webrtcvoiceengine_unittest.cc',
'sctp/sctpdataengine_unittest.cc',