OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2010 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2010 The WebRTC project authors. All Rights Reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
186 | 186 |
187 // Fake class for mocking out WebRtcVideoEncoderFactory. | 187 // Fake class for mocking out WebRtcVideoEncoderFactory. |
188 class FakeWebRtcVideoEncoderFactory : public WebRtcVideoEncoderFactory { | 188 class FakeWebRtcVideoEncoderFactory : public WebRtcVideoEncoderFactory { |
189 public: | 189 public: |
190 FakeWebRtcVideoEncoderFactory() | 190 FakeWebRtcVideoEncoderFactory() |
191 : created_video_encoder_event_(false, false), | 191 : created_video_encoder_event_(false, false), |
192 num_created_encoders_(0), | 192 num_created_encoders_(0), |
193 encoders_have_internal_sources_(false) {} | 193 encoders_have_internal_sources_(false) {} |
194 | 194 |
195 webrtc::VideoEncoder* CreateVideoEncoder( | 195 webrtc::VideoEncoder* CreateVideoEncoder( |
196 webrtc::VideoCodecType type) override { | 196 const cricket::VideoCodec& codec) override { |
197 rtc::CritScope lock(&crit_); | 197 rtc::CritScope lock(&crit_); |
198 if (supported_codec_types_.count(type) == 0) { | 198 bool found_matching_codec = false; |
199 return NULL; | 199 for (const cricket::VideoCodec& supported_codec : codecs_) { |
| 200 if (supported_codec.Matches(codec)) { |
| 201 found_matching_codec = true; |
| 202 break; |
| 203 } |
200 } | 204 } |
| 205 if (!found_matching_codec) |
| 206 return nullptr; |
201 FakeWebRtcVideoEncoder* encoder = new FakeWebRtcVideoEncoder(); | 207 FakeWebRtcVideoEncoder* encoder = new FakeWebRtcVideoEncoder(); |
202 encoders_.push_back(encoder); | 208 encoders_.push_back(encoder); |
203 num_created_encoders_++; | 209 num_created_encoders_++; |
204 created_video_encoder_event_.Set(); | 210 created_video_encoder_event_.Set(); |
205 return encoder; | 211 return encoder; |
206 } | 212 } |
207 | 213 |
208 bool WaitForCreatedVideoEncoders(int num_encoders) { | 214 bool WaitForCreatedVideoEncoders(int num_encoders) { |
209 while (created_video_encoder_event_.Wait(kEventTimeoutMs)) { | 215 while (created_video_encoder_event_.Wait(kEventTimeoutMs)) { |
210 if (GetNumCreatedEncoders() >= num_encoders) | 216 if (GetNumCreatedEncoders() >= num_encoders) |
211 return true; | 217 return true; |
212 } | 218 } |
213 return false; | 219 return false; |
214 } | 220 } |
215 | 221 |
216 void DestroyVideoEncoder(webrtc::VideoEncoder* encoder) override { | 222 void DestroyVideoEncoder(webrtc::VideoEncoder* encoder) override { |
217 rtc::CritScope lock(&crit_); | 223 rtc::CritScope lock(&crit_); |
218 encoders_.erase( | 224 encoders_.erase( |
219 std::remove(encoders_.begin(), encoders_.end(), encoder), | 225 std::remove(encoders_.begin(), encoders_.end(), encoder), |
220 encoders_.end()); | 226 encoders_.end()); |
221 delete encoder; | 227 delete encoder; |
222 } | 228 } |
223 | 229 |
224 const std::vector<WebRtcVideoEncoderFactory::VideoCodec>& codecs() | 230 const std::vector<cricket::VideoCodec>& supported_codecs() const override { |
225 const override { | |
226 return codecs_; | 231 return codecs_; |
227 } | 232 } |
228 | 233 |
229 bool EncoderTypeHasInternalSource( | 234 bool EncoderTypeHasInternalSource( |
230 webrtc::VideoCodecType type) const override { | 235 webrtc::VideoCodecType type) const override { |
231 return encoders_have_internal_sources_; | 236 return encoders_have_internal_sources_; |
232 } | 237 } |
233 | 238 |
234 void set_encoders_have_internal_sources(bool internal_source) { | 239 void set_encoders_have_internal_sources(bool internal_source) { |
235 encoders_have_internal_sources_ = internal_source; | 240 encoders_have_internal_sources_ = internal_source; |
236 } | 241 } |
237 | 242 |
238 void AddSupportedVideoCodecType(webrtc::VideoCodecType type, | 243 void AddSupportedVideoCodecType(const std::string& name) { |
239 const std::string& name) { | 244 codecs_.push_back(cricket::VideoCodec(name)); |
240 supported_codec_types_.insert(type); | |
241 codecs_.push_back( | |
242 WebRtcVideoEncoderFactory::VideoCodec(type, name, 1280, 720, 30)); | |
243 } | 245 } |
244 | 246 |
245 int GetNumCreatedEncoders() { | 247 int GetNumCreatedEncoders() { |
246 rtc::CritScope lock(&crit_); | 248 rtc::CritScope lock(&crit_); |
247 return num_created_encoders_; | 249 return num_created_encoders_; |
248 } | 250 } |
249 | 251 |
250 const std::vector<FakeWebRtcVideoEncoder*> encoders() { | 252 const std::vector<FakeWebRtcVideoEncoder*> encoders() { |
251 rtc::CritScope lock(&crit_); | 253 rtc::CritScope lock(&crit_); |
252 return encoders_; | 254 return encoders_; |
253 } | 255 } |
254 | 256 |
255 private: | 257 private: |
256 rtc::CriticalSection crit_; | 258 rtc::CriticalSection crit_; |
257 rtc::Event created_video_encoder_event_; | 259 rtc::Event created_video_encoder_event_; |
258 std::set<webrtc::VideoCodecType> supported_codec_types_; | 260 std::vector<cricket::VideoCodec> codecs_; |
259 std::vector<WebRtcVideoEncoderFactory::VideoCodec> codecs_; | |
260 std::vector<FakeWebRtcVideoEncoder*> encoders_ GUARDED_BY(crit_); | 261 std::vector<FakeWebRtcVideoEncoder*> encoders_ GUARDED_BY(crit_); |
261 int num_created_encoders_ GUARDED_BY(crit_); | 262 int num_created_encoders_ GUARDED_BY(crit_); |
262 bool encoders_have_internal_sources_; | 263 bool encoders_have_internal_sources_; |
263 }; | 264 }; |
264 | 265 |
265 } // namespace cricket | 266 } // namespace cricket |
266 | 267 |
267 #endif // WEBRTC_MEDIA_ENGINE_FAKEWEBRTCVIDEOENGINE_H_ | 268 #endif // WEBRTC_MEDIA_ENGINE_FAKEWEBRTCVIDEOENGINE_H_ |
OLD | NEW |