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 if (!IsCodecSupported(codecs_, codec)) |
199 return NULL; | 199 return nullptr; |
200 } | |
201 FakeWebRtcVideoEncoder* encoder = new FakeWebRtcVideoEncoder(); | 200 FakeWebRtcVideoEncoder* encoder = new FakeWebRtcVideoEncoder(); |
202 encoders_.push_back(encoder); | 201 encoders_.push_back(encoder); |
203 num_created_encoders_++; | 202 num_created_encoders_++; |
204 created_video_encoder_event_.Set(); | 203 created_video_encoder_event_.Set(); |
205 return encoder; | 204 return encoder; |
206 } | 205 } |
207 | 206 |
208 bool WaitForCreatedVideoEncoders(int num_encoders) { | 207 bool WaitForCreatedVideoEncoders(int num_encoders) { |
209 while (created_video_encoder_event_.Wait(kEventTimeoutMs)) { | 208 while (created_video_encoder_event_.Wait(kEventTimeoutMs)) { |
210 if (GetNumCreatedEncoders() >= num_encoders) | 209 if (GetNumCreatedEncoders() >= num_encoders) |
211 return true; | 210 return true; |
212 } | 211 } |
213 return false; | 212 return false; |
214 } | 213 } |
215 | 214 |
216 void DestroyVideoEncoder(webrtc::VideoEncoder* encoder) override { | 215 void DestroyVideoEncoder(webrtc::VideoEncoder* encoder) override { |
217 rtc::CritScope lock(&crit_); | 216 rtc::CritScope lock(&crit_); |
218 encoders_.erase( | 217 encoders_.erase( |
219 std::remove(encoders_.begin(), encoders_.end(), encoder), | 218 std::remove(encoders_.begin(), encoders_.end(), encoder), |
220 encoders_.end()); | 219 encoders_.end()); |
221 delete encoder; | 220 delete encoder; |
222 } | 221 } |
223 | 222 |
224 const std::vector<WebRtcVideoEncoderFactory::VideoCodec>& codecs() | 223 const std::vector<cricket::VideoCodec>& supported_codecs() const override { |
225 const override { | |
226 return codecs_; | 224 return codecs_; |
227 } | 225 } |
228 | 226 |
229 bool EncoderTypeHasInternalSource( | 227 bool EncoderTypeHasInternalSource( |
230 webrtc::VideoCodecType type) const override { | 228 webrtc::VideoCodecType type) const override { |
231 return encoders_have_internal_sources_; | 229 return encoders_have_internal_sources_; |
232 } | 230 } |
233 | 231 |
234 void set_encoders_have_internal_sources(bool internal_source) { | 232 void set_encoders_have_internal_sources(bool internal_source) { |
235 encoders_have_internal_sources_ = internal_source; | 233 encoders_have_internal_sources_ = internal_source; |
236 } | 234 } |
237 | 235 |
238 void AddSupportedVideoCodecType(webrtc::VideoCodecType type, | 236 void AddSupportedVideoCodecType(const std::string& name) { |
239 const std::string& name) { | 237 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 } | 238 } |
244 | 239 |
245 int GetNumCreatedEncoders() { | 240 int GetNumCreatedEncoders() { |
246 rtc::CritScope lock(&crit_); | 241 rtc::CritScope lock(&crit_); |
247 return num_created_encoders_; | 242 return num_created_encoders_; |
248 } | 243 } |
249 | 244 |
250 const std::vector<FakeWebRtcVideoEncoder*> encoders() { | 245 const std::vector<FakeWebRtcVideoEncoder*> encoders() { |
251 rtc::CritScope lock(&crit_); | 246 rtc::CritScope lock(&crit_); |
252 return encoders_; | 247 return encoders_; |
253 } | 248 } |
254 | 249 |
255 private: | 250 private: |
256 rtc::CriticalSection crit_; | 251 rtc::CriticalSection crit_; |
257 rtc::Event created_video_encoder_event_; | 252 rtc::Event created_video_encoder_event_; |
258 std::set<webrtc::VideoCodecType> supported_codec_types_; | 253 std::vector<cricket::VideoCodec> codecs_; |
259 std::vector<WebRtcVideoEncoderFactory::VideoCodec> codecs_; | |
260 std::vector<FakeWebRtcVideoEncoder*> encoders_ GUARDED_BY(crit_); | 254 std::vector<FakeWebRtcVideoEncoder*> encoders_ GUARDED_BY(crit_); |
261 int num_created_encoders_ GUARDED_BY(crit_); | 255 int num_created_encoders_ GUARDED_BY(crit_); |
262 bool encoders_have_internal_sources_; | 256 bool encoders_have_internal_sources_; |
263 }; | 257 }; |
264 | 258 |
265 } // namespace cricket | 259 } // namespace cricket |
266 | 260 |
267 #endif // WEBRTC_MEDIA_ENGINE_FAKEWEBRTCVIDEOENGINE_H_ | 261 #endif // WEBRTC_MEDIA_ENGINE_FAKEWEBRTCVIDEOENGINE_H_ |
OLD | NEW |