Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: talk/media/devices/fakedevicemanager.h

Issue 1587193006: Move talk/media to webrtc/media (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebased to b647aca12a884a13c1728118586245399b55fa3d (#11493) Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 /*
2 * libjingle
3 * Copyright 2008 Google Inc.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright notice,
11 * this list of conditions and the following disclaimer in the documentation
12 * and/or other materials provided with the distribution.
13 * 3. The name of the author may not be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
17 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
19 * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
22 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
23 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
24 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
25 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28 #ifndef TALK_MEDIA_DEVICES_FAKEDEVICEMANAGER_H_
29 #define TALK_MEDIA_DEVICES_FAKEDEVICEMANAGER_H_
30
31 #include <string>
32 #include <vector>
33
34 #include "talk/media/base/fakevideocapturer.h"
35 #include "talk/media/base/mediacommon.h"
36 #include "talk/media/devices/devicemanager.h"
37 #include "webrtc/base/scoped_ptr.h"
38 #include "webrtc/base/window.h"
39 #include "webrtc/base/windowpicker.h"
40
41 namespace cricket {
42
43 class FakeDeviceManager : public DeviceManagerInterface {
44 public:
45 FakeDeviceManager() {}
46 virtual bool Init() {
47 return true;
48 }
49 virtual void Terminate() {
50 }
51 virtual int GetCapabilities() {
52 std::vector<Device> devices;
53 int caps = VIDEO_RECV;
54 if (!input_devices_.empty()) {
55 caps |= AUDIO_SEND;
56 }
57 if (!output_devices_.empty()) {
58 caps |= AUDIO_RECV;
59 }
60 if (!vidcap_devices_.empty()) {
61 caps |= VIDEO_SEND;
62 }
63 return caps;
64 }
65 virtual bool GetAudioInputDevices(std::vector<Device>* devs) {
66 *devs = input_devices_;
67 return true;
68 }
69 virtual bool GetAudioOutputDevices(std::vector<Device>* devs) {
70 *devs = output_devices_;
71 return true;
72 }
73 virtual bool GetAudioInputDevice(const std::string& name, Device* out) {
74 return GetAudioDevice(true, name, out);
75 }
76 virtual bool GetAudioOutputDevice(const std::string& name, Device* out) {
77 return GetAudioDevice(false, name, out);
78 }
79 virtual bool GetVideoCaptureDevices(std::vector<Device>* devs) {
80 *devs = vidcap_devices_;
81 return true;
82 }
83 virtual void SetVideoDeviceCapturerFactory(
84 VideoDeviceCapturerFactory* video_device_capturer_factory) {
85 }
86 virtual void SetScreenCapturerFactory(
87 ScreenCapturerFactory* screen_capturer_factory) {
88 screen_capturer_factory_.reset(screen_capturer_factory);
89 }
90 virtual void SetVideoCaptureDeviceMaxFormat(const std::string& usb_id,
91 const VideoFormat& max_format) {
92 max_formats_[usb_id] = max_format;
93 }
94 bool IsMaxFormatForDevice(const std::string& usb_id,
95 const VideoFormat& max_format) const {
96 std::map<std::string, VideoFormat>::const_iterator found =
97 max_formats_.find(usb_id);
98 return (found != max_formats_.end()) ?
99 max_format == found->second :
100 false;
101 }
102 virtual void ClearVideoCaptureDeviceMaxFormat(const std::string& usb_id) {
103 max_formats_.erase(usb_id);
104 }
105 virtual VideoCapturer* CreateVideoCapturer(const Device& device) const {
106 return new FakeVideoCapturer();
107 }
108 virtual VideoCapturer* CreateScreenCapturer(
109 const ScreencastId& screenid) const {
110 if (!screen_capturer_factory_) {
111 return new FakeVideoCapturer();
112 }
113 return screen_capturer_factory_->Create(screenid);
114 }
115 virtual bool GetWindows(
116 std::vector<rtc::WindowDescription>* descriptions) {
117 descriptions->clear();
118 const uint32_t id = 1u; // Note that 0 is not a valid ID.
119 const rtc::WindowId window_id =
120 rtc::WindowId::Cast(id);
121 std::string title = "FakeWindow";
122 rtc::WindowDescription window_description(window_id, title);
123 descriptions->push_back(window_description);
124 return true;
125 }
126 virtual VideoCapturer* CreateWindowCapturer(rtc::WindowId window) {
127 if (!window.IsValid()) {
128 return NULL;
129 }
130 return new FakeVideoCapturer;
131 }
132 virtual bool GetDesktops(
133 std::vector<rtc::DesktopDescription>* descriptions) {
134 descriptions->clear();
135 const int id = 0;
136 const int valid_index = 0;
137 const rtc::DesktopId desktop_id =
138 rtc::DesktopId::Cast(id, valid_index);
139 std::string title = "FakeDesktop";
140 rtc::DesktopDescription desktop_description(desktop_id, title);
141 descriptions->push_back(desktop_description);
142 return true;
143 }
144 virtual VideoCapturer* CreateDesktopCapturer(rtc::DesktopId desktop) {
145 if (!desktop.IsValid()) {
146 return NULL;
147 }
148 return new FakeVideoCapturer;
149 }
150
151 virtual bool GetDefaultVideoCaptureDevice(Device* device) {
152 if (vidcap_devices_.empty()) {
153 return false;
154 }
155 *device = vidcap_devices_[0];
156 return true;
157 }
158
159 #if defined(WEBRTC_MAC) && !defined(WEBRTC_IOS)
160 bool QtKitToSgDevice(const std::string& qtkit_name, Device* out) {
161 out->name = qtkit_name;
162 out->id = "sg:" + qtkit_name;
163 return true;
164 }
165 #endif
166
167 void SetAudioInputDevices(const std::vector<std::string>& devices) {
168 input_devices_.clear();
169 for (size_t i = 0; i < devices.size(); ++i) {
170 input_devices_.push_back(Device(devices[i],
171 static_cast<int>(i)));
172 }
173 SignalDevicesChange();
174 }
175 void SetAudioOutputDevices(const std::vector<std::string>& devices) {
176 output_devices_.clear();
177 for (size_t i = 0; i < devices.size(); ++i) {
178 output_devices_.push_back(Device(devices[i],
179 static_cast<int>(i)));
180 }
181 SignalDevicesChange();
182 }
183 void SetVideoCaptureDevices(const std::vector<std::string>& devices) {
184 vidcap_devices_.clear();
185 for (size_t i = 0; i < devices.size(); ++i) {
186 vidcap_devices_.push_back(Device(devices[i],
187 static_cast<int>(i)));
188 }
189 SignalDevicesChange();
190 }
191 virtual bool GetVideoCaptureDevice(const std::string& name,
192 Device* out) {
193 if (vidcap_devices_.empty())
194 return false;
195
196 // If the name is empty, return the default device.
197 if (name.empty() || name == kDefaultDeviceName) {
198 *out = vidcap_devices_[0];
199 return true;
200 }
201
202 return FindDeviceByName(vidcap_devices_, name, out);
203 }
204 bool GetAudioDevice(bool is_input, const std::string& name,
205 Device* out) {
206 // If the name is empty, return the default device.
207 if (name.empty() || name == kDefaultDeviceName) {
208 *out = Device(name, -1);
209 return true;
210 }
211
212 return FindDeviceByName((is_input ? input_devices_ : output_devices_),
213 name, out);
214 }
215 static bool FindDeviceByName(const std::vector<Device>& devices,
216 const std::string& name,
217 Device* out) {
218 for (std::vector<Device>::const_iterator it = devices.begin();
219 it != devices.end(); ++it) {
220 if (name == it->name) {
221 *out = *it;
222 return true;
223 }
224 }
225 return false;
226 }
227
228 private:
229 std::vector<Device> input_devices_;
230 std::vector<Device> output_devices_;
231 std::vector<Device> vidcap_devices_;
232 std::map<std::string, VideoFormat> max_formats_;
233 rtc::scoped_ptr<
234 ScreenCapturerFactory> screen_capturer_factory_;
235 };
236
237 } // namespace cricket
238
239 #endif // TALK_MEDIA_DEVICES_FAKEDEVICEMANAGER_H_
OLDNEW
« no previous file with comments | « talk/media/devices/dummydevicemanager_unittest.cc ('k') | talk/media/devices/filevideocapturer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698