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

Side by Side Diff: talk/media/base/fakemediaengine.h

Issue 1327933002: Full impl of NnChannel::SetSendParameters and NnChannel::SetRecvParameters (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: rebase Created 5 years, 3 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
1 /* 1 /*
2 * libjingle 2 * libjingle
3 * Copyright 2004 Google Inc. 3 * Copyright 2004 Google Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright notice, 8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer. 9 * this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright notice, 10 * 2. Redistributions in binary form must reproduce the above copyright notice,
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 bool success = !rtcp_packets_.empty(); 96 bool success = !rtcp_packets_.empty();
97 if (success) { 97 if (success) {
98 std::string packet = rtcp_packets_.front(); 98 std::string packet = rtcp_packets_.front();
99 rtcp_packets_.pop_front(); 99 rtcp_packets_.pop_front();
100 success = (packet == std::string(static_cast<const char*>(data), len)); 100 success = (packet == std::string(static_cast<const char*>(data), len));
101 } 101 }
102 return success; 102 return success;
103 } 103 }
104 bool CheckNoRtp() { return rtp_packets_.empty(); } 104 bool CheckNoRtp() { return rtp_packets_.empty(); }
105 bool CheckNoRtcp() { return rtcp_packets_.empty(); } 105 bool CheckNoRtcp() { return rtcp_packets_.empty(); }
106 virtual bool SetRecvRtpHeaderExtensions(
107 const std::vector<RtpHeaderExtension>& extensions) {
108 recv_extensions_ = extensions;
109 return true;
110 }
111 virtual bool SetSendRtpHeaderExtensions(
112 const std::vector<RtpHeaderExtension>& extensions) {
113 send_extensions_ = extensions;
114 return true;
115 }
116 void set_fail_set_send_codecs(bool fail) { fail_set_send_codecs_ = fail; } 106 void set_fail_set_send_codecs(bool fail) { fail_set_send_codecs_ = fail; }
117 void set_fail_set_recv_codecs(bool fail) { fail_set_recv_codecs_ = fail; } 107 void set_fail_set_recv_codecs(bool fail) { fail_set_recv_codecs_ = fail; }
118 virtual bool AddSendStream(const StreamParams& sp) { 108 virtual bool AddSendStream(const StreamParams& sp) {
119 if (std::find(send_streams_.begin(), send_streams_.end(), sp) != 109 if (std::find(send_streams_.begin(), send_streams_.end(), sp) !=
120 send_streams_.end()) { 110 send_streams_.end()) {
121 return false; 111 return false;
122 } 112 }
123 send_streams_.push_back(sp); 113 send_streams_.push_back(sp);
124 return true; 114 return true;
125 } 115 }
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 return ""; 163 return "";
174 return send_streams_[0].cname; 164 return send_streams_[0].cname;
175 } 165 }
176 166
177 bool ready_to_send() const { 167 bool ready_to_send() const {
178 return ready_to_send_; 168 return ready_to_send_;
179 } 169 }
180 170
181 protected: 171 protected:
182 bool MuteStream(uint32 ssrc, bool mute) { 172 bool MuteStream(uint32 ssrc, bool mute) {
183 if (!HasSendStream(ssrc) && ssrc != 0) 173 if (!HasSendStream(ssrc) && ssrc != 0) {
184 return false; 174 return false;
185 if (mute) 175 }
176 if (mute) {
186 muted_streams_.insert(ssrc); 177 muted_streams_.insert(ssrc);
187 else 178 } else {
188 muted_streams_.erase(ssrc); 179 muted_streams_.erase(ssrc);
180 }
189 return true; 181 return true;
190 } 182 }
191 bool set_sending(bool send) { 183 bool set_sending(bool send) {
192 sending_ = send; 184 sending_ = send;
193 return true; 185 return true;
194 } 186 }
195 void set_playout(bool playout) { playout_ = playout; } 187 void set_playout(bool playout) { playout_ = playout; }
188 bool SetRecvRtpHeaderExtensions(
189 const std::vector<RtpHeaderExtension>& extensions) {
190 recv_extensions_ = extensions;
191 return true;
192 }
193 bool SetSendRtpHeaderExtensions(
194 const std::vector<RtpHeaderExtension>& extensions) {
195 send_extensions_ = extensions;
196 return true;
197 }
196 virtual void OnPacketReceived(rtc::Buffer* packet, 198 virtual void OnPacketReceived(rtc::Buffer* packet,
197 const rtc::PacketTime& packet_time) { 199 const rtc::PacketTime& packet_time) {
198 rtp_packets_.push_back(std::string(packet->data<char>(), packet->size())); 200 rtp_packets_.push_back(std::string(packet->data<char>(), packet->size()));
199 } 201 }
200 virtual void OnRtcpReceived(rtc::Buffer* packet, 202 virtual void OnRtcpReceived(rtc::Buffer* packet,
201 const rtc::PacketTime& packet_time) { 203 const rtc::PacketTime& packet_time) {
202 rtcp_packets_.push_back(std::string(packet->data<char>(), packet->size())); 204 rtcp_packets_.push_back(std::string(packet->data<char>(), packet->size()));
203 } 205 }
204 virtual void OnReadyToSend(bool ready) { 206 virtual void OnReadyToSend(bool ready) {
205 ready_to_send_ = ready; 207 ready_to_send_ = ready;
(...skipping 22 matching lines...) Expand all
228 public: 230 public:
229 struct DtmfInfo { 231 struct DtmfInfo {
230 DtmfInfo(uint32 ssrc, int event_code, int duration, int flags) 232 DtmfInfo(uint32 ssrc, int event_code, int duration, int flags)
231 : ssrc(ssrc), event_code(event_code), duration(duration), flags(flags) { 233 : ssrc(ssrc), event_code(event_code), duration(duration), flags(flags) {
232 } 234 }
233 uint32 ssrc; 235 uint32 ssrc;
234 int event_code; 236 int event_code;
235 int duration; 237 int duration;
236 int flags; 238 int flags;
237 }; 239 };
238 explicit FakeVoiceMediaChannel(FakeVoiceEngine* engine) 240 explicit FakeVoiceMediaChannel(FakeVoiceEngine* engine,
241 const AudioOptions& options)
239 : engine_(engine), 242 : engine_(engine),
240 fail_set_send_(false), 243 fail_set_send_(false),
241 ringback_tone_ssrc_(0), 244 ringback_tone_ssrc_(0),
242 ringback_tone_play_(false), 245 ringback_tone_play_(false),
243 ringback_tone_loop_(false), 246 ringback_tone_loop_(false),
244 time_since_last_typing_(-1) { 247 time_since_last_typing_(-1) {
245 output_scalings_[0] = OutputScaling(); // For default channel. 248 output_scalings_[0] = OutputScaling(); // For default channel.
249 SetOptions(options);
246 } 250 }
247 ~FakeVoiceMediaChannel(); 251 ~FakeVoiceMediaChannel();
248 const std::vector<AudioCodec>& recv_codecs() const { return recv_codecs_; } 252 const std::vector<AudioCodec>& recv_codecs() const { return recv_codecs_; }
249 const std::vector<AudioCodec>& send_codecs() const { return send_codecs_; } 253 const std::vector<AudioCodec>& send_codecs() const { return send_codecs_; }
250 const std::vector<AudioCodec>& codecs() const { return send_codecs(); } 254 const std::vector<AudioCodec>& codecs() const { return send_codecs(); }
251 const std::vector<DtmfInfo>& dtmf_info_queue() const { 255 const std::vector<DtmfInfo>& dtmf_info_queue() const {
252 return dtmf_info_queue_; 256 return dtmf_info_queue_;
253 } 257 }
254 const AudioOptions& options() const { return options_; } 258 const AudioOptions& options() const { return options_; }
255 259
256 uint32 ringback_tone_ssrc() const { return ringback_tone_ssrc_; } 260 uint32 ringback_tone_ssrc() const { return ringback_tone_ssrc_; }
257 bool ringback_tone_play() const { return ringback_tone_play_; } 261 bool ringback_tone_play() const { return ringback_tone_play_; }
258 bool ringback_tone_loop() const { return ringback_tone_loop_; } 262 bool ringback_tone_loop() const { return ringback_tone_loop_; }
259 263
260 virtual bool SetRecvCodecs(const std::vector<AudioCodec>& codecs) { 264 virtual bool SetSendParameters(const AudioSendParameters& params) {
261 if (fail_set_recv_codecs()) { 265 return (SetSendCodecs(params.codecs) &&
262 // Fake the failure in SetRecvCodecs. 266 SetSendRtpHeaderExtensions(params.extensions) &&
263 return false; 267 SetMaxSendBandwidth(params.max_bandwidth_bps) &&
264 } 268 SetOptions(params.options));
265 recv_codecs_ = codecs;
266 return true;
267 } 269 }
268 virtual bool SetSendCodecs(const std::vector<AudioCodec>& codecs) { 270
269 if (fail_set_send_codecs()) { 271 virtual bool SetRecvParameters(const AudioRecvParameters& params) {
270 // Fake the failure in SetSendCodecs. 272 return (SetRecvCodecs(params.codecs) &&
271 return false; 273 SetRecvRtpHeaderExtensions(params.extensions));
272 }
273 send_codecs_ = codecs;
274 return true;
275 } 274 }
276 virtual bool SetPlayout(bool playout) { 275 virtual bool SetPlayout(bool playout) {
277 set_playout(playout); 276 set_playout(playout);
278 return true; 277 return true;
279 } 278 }
280 virtual bool SetSend(SendFlags flag) { 279 virtual bool SetSend(SendFlags flag) {
281 if (fail_set_send_) { 280 if (fail_set_send_) {
282 return false; 281 return false;
283 } 282 }
284 return set_sending(flag != SEND_NOTHING); 283 return set_sending(flag != SEND_NOTHING);
285 } 284 }
286 virtual bool SetAudioSend(uint32 ssrc, bool mute, 285 virtual bool SetAudioSend(uint32 ssrc, bool mute,
287 const AudioOptions* options, 286 const AudioOptions* options,
288 AudioRenderer* renderer) { 287 AudioRenderer* renderer) {
289 if (!SetLocalRenderer(ssrc, renderer)) { 288 if (!SetLocalRenderer(ssrc, renderer)) {
290 return false; 289 return false;
291 } 290 }
292 if (!RtpHelper<VoiceMediaChannel>::MuteStream(ssrc, mute)) { 291 if (!RtpHelper<VoiceMediaChannel>::MuteStream(ssrc, mute)) {
293 return false; 292 return false;
294 } 293 }
295 if (!mute && options) { 294 if (!mute && options) {
296 return SetOptions(*options); 295 return SetOptions(*options);
297 } 296 }
298 return true; 297 return true;
299 } 298 }
300 virtual bool SetMaxSendBandwidth(int bps) { return true; }
301 virtual bool AddRecvStream(const StreamParams& sp) { 299 virtual bool AddRecvStream(const StreamParams& sp) {
302 if (!RtpHelper<VoiceMediaChannel>::AddRecvStream(sp)) 300 if (!RtpHelper<VoiceMediaChannel>::AddRecvStream(sp))
303 return false; 301 return false;
304 output_scalings_[sp.first_ssrc()] = OutputScaling(); 302 output_scalings_[sp.first_ssrc()] = OutputScaling();
305 return true; 303 return true;
306 } 304 }
307 virtual bool RemoveRecvStream(uint32 ssrc) { 305 virtual bool RemoveRecvStream(uint32 ssrc) {
308 if (!RtpHelper<VoiceMediaChannel>::RemoveRecvStream(ssrc)) 306 if (!RtpHelper<VoiceMediaChannel>::RemoveRecvStream(ssrc))
309 return false; 307 return false;
310 output_scalings_.erase(ssrc); 308 output_scalings_.erase(ssrc);
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
392 *ssrc = 0; 390 *ssrc = 0;
393 *error = fail_set_send_ ? VoiceMediaChannel::ERROR_REC_DEVICE_OPEN_FAILED 391 *error = fail_set_send_ ? VoiceMediaChannel::ERROR_REC_DEVICE_OPEN_FAILED
394 : VoiceMediaChannel::ERROR_NONE; 392 : VoiceMediaChannel::ERROR_NONE;
395 } 393 }
396 394
397 void set_fail_set_send(bool fail) { fail_set_send_ = fail; } 395 void set_fail_set_send(bool fail) { fail_set_send_ = fail; }
398 void TriggerError(uint32 ssrc, VoiceMediaChannel::Error error) { 396 void TriggerError(uint32 ssrc, VoiceMediaChannel::Error error) {
399 VoiceMediaChannel::SignalMediaError(ssrc, error); 397 VoiceMediaChannel::SignalMediaError(ssrc, error);
400 } 398 }
401 399
402 virtual bool SetOptions(const AudioOptions& options) {
403 // Does a "merge" of current options and set options.
404 options_.SetAll(options);
405 return true;
406 }
407
408 private: 400 private:
409 struct OutputScaling { 401 struct OutputScaling {
410 OutputScaling() : left(1.0), right(1.0) {} 402 OutputScaling() : left(1.0), right(1.0) {}
411 double left, right; 403 double left, right;
412 }; 404 };
413 405
414 class VoiceChannelAudioSink : public AudioRenderer::Sink { 406 class VoiceChannelAudioSink : public AudioRenderer::Sink {
415 public: 407 public:
416 explicit VoiceChannelAudioSink(AudioRenderer* renderer) 408 explicit VoiceChannelAudioSink(AudioRenderer* renderer)
417 : renderer_(renderer) { 409 : renderer_(renderer) {
(...skipping 11 matching lines...) Expand all
429 int sample_rate, 421 int sample_rate,
430 int number_of_channels, 422 int number_of_channels,
431 size_t number_of_frames) override {} 423 size_t number_of_frames) override {}
432 void OnClose() override { renderer_ = NULL; } 424 void OnClose() override { renderer_ = NULL; }
433 AudioRenderer* renderer() const { return renderer_; } 425 AudioRenderer* renderer() const { return renderer_; }
434 426
435 private: 427 private:
436 AudioRenderer* renderer_; 428 AudioRenderer* renderer_;
437 }; 429 };
438 430
431 bool SetRecvCodecs(const std::vector<AudioCodec>& codecs) {
432 if (fail_set_recv_codecs()) {
433 // Fake the failure in SetRecvCodecs.
434 return false;
435 }
436 recv_codecs_ = codecs;
437 return true;
438 }
439 bool SetSendCodecs(const std::vector<AudioCodec>& codecs) {
440 if (fail_set_send_codecs()) {
441 // Fake the failure in SetSendCodecs.
442 return false;
443 }
444 send_codecs_ = codecs;
445 return true;
446 }
447 bool SetMaxSendBandwidth(int bps) { return true; }
448 bool SetOptions(const AudioOptions& options) {
449 // Does a "merge" of current options and set options.
450 options_.SetAll(options);
451 return true;
452 }
439 bool SetLocalRenderer(uint32 ssrc, AudioRenderer* renderer) { 453 bool SetLocalRenderer(uint32 ssrc, AudioRenderer* renderer) {
440 auto it = local_renderers_.find(ssrc); 454 auto it = local_renderers_.find(ssrc);
441 if (renderer) { 455 if (renderer) {
442 if (it != local_renderers_.end()) { 456 if (it != local_renderers_.end()) {
443 ASSERT(it->second->renderer() == renderer); 457 ASSERT(it->second->renderer() == renderer);
444 } else { 458 } else {
445 local_renderers_.insert(std::make_pair( 459 local_renderers_.insert(std::make_pair(
446 ssrc, new VoiceChannelAudioSink(renderer))); 460 ssrc, new VoiceChannelAudioSink(renderer)));
447 } 461 }
448 } else { 462 } else {
(...skipping 23 matching lines...) Expand all
472 // A helper function to compare the FakeVoiceMediaChannel::DtmfInfo. 486 // A helper function to compare the FakeVoiceMediaChannel::DtmfInfo.
473 inline bool CompareDtmfInfo(const FakeVoiceMediaChannel::DtmfInfo& info, 487 inline bool CompareDtmfInfo(const FakeVoiceMediaChannel::DtmfInfo& info,
474 uint32 ssrc, int event_code, int duration, 488 uint32 ssrc, int event_code, int duration,
475 int flags) { 489 int flags) {
476 return (info.duration == duration && info.event_code == event_code && 490 return (info.duration == duration && info.event_code == event_code &&
477 info.flags == flags && info.ssrc == ssrc); 491 info.flags == flags && info.ssrc == ssrc);
478 } 492 }
479 493
480 class FakeVideoMediaChannel : public RtpHelper<VideoMediaChannel> { 494 class FakeVideoMediaChannel : public RtpHelper<VideoMediaChannel> {
481 public: 495 public:
482 explicit FakeVideoMediaChannel(FakeVideoEngine* engine) 496 explicit FakeVideoMediaChannel(FakeVideoEngine* engine,
497 const VideoOptions& options)
483 : engine_(engine), 498 : engine_(engine),
484 sent_intra_frame_(false), 499 sent_intra_frame_(false),
485 requested_intra_frame_(false), 500 requested_intra_frame_(false),
486 max_bps_(-1) {} 501 max_bps_(-1) {
502 SetOptions(options);
503 }
487 504
488 ~FakeVideoMediaChannel(); 505 ~FakeVideoMediaChannel();
489 506
490 const std::vector<VideoCodec>& recv_codecs() const { return recv_codecs_; } 507 const std::vector<VideoCodec>& recv_codecs() const { return recv_codecs_; }
491 const std::vector<VideoCodec>& send_codecs() const { return send_codecs_; } 508 const std::vector<VideoCodec>& send_codecs() const { return send_codecs_; }
492 const std::vector<VideoCodec>& codecs() const { return send_codecs(); } 509 const std::vector<VideoCodec>& codecs() const { return send_codecs(); }
493 bool rendering() const { return playout(); } 510 bool rendering() const { return playout(); }
494 const VideoOptions& options() const { return options_; } 511 const VideoOptions& options() const { return options_; }
495 const std::map<uint32, VideoRenderer*>& renderers() const { 512 const std::map<uint32, VideoRenderer*>& renderers() const {
496 return renderers_; 513 return renderers_;
497 } 514 }
498 int max_bps() const { return max_bps_; } 515 int max_bps() const { return max_bps_; }
499 bool GetSendStreamFormat(uint32 ssrc, VideoFormat* format) { 516 bool GetSendStreamFormat(uint32 ssrc, VideoFormat* format) {
500 if (send_formats_.find(ssrc) == send_formats_.end()) { 517 if (send_formats_.find(ssrc) == send_formats_.end()) {
501 return false; 518 return false;
502 } 519 }
503 *format = send_formats_[ssrc]; 520 *format = send_formats_[ssrc];
504 return true; 521 return true;
505 } 522 }
506 virtual bool SetSendStreamFormat(uint32 ssrc, const VideoFormat& format) { 523 virtual bool SetSendStreamFormat(uint32 ssrc, const VideoFormat& format) {
507 if (send_formats_.find(ssrc) == send_formats_.end()) { 524 if (send_formats_.find(ssrc) == send_formats_.end()) {
508 return false; 525 return false;
509 } 526 }
510 send_formats_[ssrc] = format; 527 send_formats_[ssrc] = format;
511 return true; 528 return true;
512 } 529 }
530 virtual bool SetSendParameters(const VideoSendParameters& params) {
531 return (SetSendCodecs(params.codecs) &&
532 SetSendRtpHeaderExtensions(params.extensions) &&
533 SetMaxSendBandwidth(params.max_bandwidth_bps) &&
534 SetOptions(params.options));
535 }
513 536
537 virtual bool SetRecvParameters(const VideoRecvParameters& params) {
538 return (SetRecvCodecs(params.codecs) &&
539 SetRecvRtpHeaderExtensions(params.extensions));
540 }
514 virtual bool AddSendStream(const StreamParams& sp) { 541 virtual bool AddSendStream(const StreamParams& sp) {
515 if (!RtpHelper<VideoMediaChannel>::AddSendStream(sp)) { 542 if (!RtpHelper<VideoMediaChannel>::AddSendStream(sp)) {
516 return false; 543 return false;
517 } 544 }
518 SetSendStreamDefaultFormat(sp.first_ssrc()); 545 SetSendStreamDefaultFormat(sp.first_ssrc());
519 return true; 546 return true;
520 } 547 }
521 virtual bool RemoveSendStream(uint32 ssrc) { 548 virtual bool RemoveSendStream(uint32 ssrc) {
522 send_formats_.erase(ssrc); 549 send_formats_.erase(ssrc);
523 return RtpHelper<VideoMediaChannel>::RemoveSendStream(ssrc); 550 return RtpHelper<VideoMediaChannel>::RemoveSendStream(ssrc);
524 } 551 }
525 552
526 void DetachVoiceChannel() override {} 553 void DetachVoiceChannel() override {}
527 virtual bool SetRecvCodecs(const std::vector<VideoCodec>& codecs) {
528 if (fail_set_recv_codecs()) {
529 // Fake the failure in SetRecvCodecs.
530 return false;
531 }
532 recv_codecs_ = codecs;
533 return true;
534 }
535 virtual bool SetSendCodecs(const std::vector<VideoCodec>& codecs) {
536 if (fail_set_send_codecs()) {
537 // Fake the failure in SetSendCodecs.
538 return false;
539 }
540 send_codecs_ = codecs;
541
542 for (std::vector<StreamParams>::const_iterator it = send_streams().begin();
543 it != send_streams().end(); ++it) {
544 SetSendStreamDefaultFormat(it->first_ssrc());
545 }
546 return true;
547 }
548 virtual bool GetSendCodec(VideoCodec* send_codec) { 554 virtual bool GetSendCodec(VideoCodec* send_codec) {
549 if (send_codecs_.empty()) { 555 if (send_codecs_.empty()) {
550 return false; 556 return false;
551 } 557 }
552 *send_codec = send_codecs_[0]; 558 *send_codec = send_codecs_[0];
553 return true; 559 return true;
554 } 560 }
555 virtual bool SetRender(bool render) { 561 virtual bool SetRender(bool render) {
556 set_playout(render); 562 set_playout(render);
557 return true; 563 return true;
558 } 564 }
559 virtual bool SetRenderer(uint32 ssrc, VideoRenderer* r) { 565 virtual bool SetRenderer(uint32 ssrc, VideoRenderer* r) {
560 if (ssrc != 0 && renderers_.find(ssrc) == renderers_.end()) { 566 if (ssrc != 0 && renderers_.find(ssrc) == renderers_.end()) {
561 return false; 567 return false;
562 } 568 }
563 if (ssrc != 0) { 569 if (ssrc != 0) {
564 renderers_[ssrc] = r; 570 renderers_[ssrc] = r;
565 } 571 }
566 return true; 572 return true;
567 } 573 }
568 574
569 virtual bool SetSend(bool send) { return set_sending(send); } 575 virtual bool SetSend(bool send) { return set_sending(send); }
570 virtual bool SetVideoSend(uint32 ssrc, bool mute, 576 virtual bool SetVideoSend(uint32 ssrc, bool mute,
571 const VideoOptions* options) { 577 const VideoOptions* options) {
572 if (!RtpHelper<VideoMediaChannel>::MuteStream(ssrc, mute)) { 578 if (!RtpHelper<VideoMediaChannel>::MuteStream(ssrc, mute)) {
573 return false; 579 return false;
574 } 580 }
575 if (!mute && options) { 581 if (!mute && options) {
576 return SetOptions(*options); 582 return SetOptions(*options);
577 } else {
578 return true;
579 } 583 }
584 return true;
580 } 585 }
581 virtual bool SetCapturer(uint32 ssrc, VideoCapturer* capturer) { 586 virtual bool SetCapturer(uint32 ssrc, VideoCapturer* capturer) {
582 capturers_[ssrc] = capturer; 587 capturers_[ssrc] = capturer;
583 return true; 588 return true;
584 } 589 }
585 bool HasCapturer(uint32 ssrc) const { 590 bool HasCapturer(uint32 ssrc) const {
586 return capturers_.find(ssrc) != capturers_.end(); 591 return capturers_.find(ssrc) != capturers_.end();
587 } 592 }
588 virtual bool SetMaxSendBandwidth(int bps) {
589 max_bps_ = bps;
590 return true;
591 }
592 virtual bool AddRecvStream(const StreamParams& sp) { 593 virtual bool AddRecvStream(const StreamParams& sp) {
593 if (!RtpHelper<VideoMediaChannel>::AddRecvStream(sp)) 594 if (!RtpHelper<VideoMediaChannel>::AddRecvStream(sp))
594 return false; 595 return false;
595 renderers_[sp.first_ssrc()] = NULL; 596 renderers_[sp.first_ssrc()] = NULL;
596 return true; 597 return true;
597 } 598 }
598 virtual bool RemoveRecvStream(uint32 ssrc) { 599 virtual bool RemoveRecvStream(uint32 ssrc) {
599 if (!RtpHelper<VideoMediaChannel>::RemoveRecvStream(ssrc)) 600 if (!RtpHelper<VideoMediaChannel>::RemoveRecvStream(ssrc))
600 return false; 601 return false;
601 renderers_.erase(ssrc); 602 renderers_.erase(ssrc);
602 return true; 603 return true;
603 } 604 }
604 605
605 virtual bool GetStats(VideoMediaInfo* info) { return false; } 606 virtual bool GetStats(VideoMediaInfo* info) { return false; }
606 virtual bool SendIntraFrame() { 607 virtual bool SendIntraFrame() {
607 sent_intra_frame_ = true; 608 sent_intra_frame_ = true;
608 return true; 609 return true;
609 } 610 }
610 virtual bool RequestIntraFrame() { 611 virtual bool RequestIntraFrame() {
611 requested_intra_frame_ = true; 612 requested_intra_frame_ = true;
612 return true; 613 return true;
613 } 614 }
614 virtual bool SetOptions(const VideoOptions& options) {
615 options_ = options;
616 return true;
617 }
618 virtual void UpdateAspectRatio(int ratio_w, int ratio_h) {} 615 virtual void UpdateAspectRatio(int ratio_w, int ratio_h) {}
619 void set_sent_intra_frame(bool v) { sent_intra_frame_ = v; } 616 void set_sent_intra_frame(bool v) { sent_intra_frame_ = v; }
620 bool sent_intra_frame() const { return sent_intra_frame_; } 617 bool sent_intra_frame() const { return sent_intra_frame_; }
621 void set_requested_intra_frame(bool v) { requested_intra_frame_ = v; } 618 void set_requested_intra_frame(bool v) { requested_intra_frame_ = v; }
622 bool requested_intra_frame() const { return requested_intra_frame_; } 619 bool requested_intra_frame() const { return requested_intra_frame_; }
623 620
624 private: 621 private:
622 bool SetRecvCodecs(const std::vector<VideoCodec>& codecs) {
623 if (fail_set_recv_codecs()) {
624 // Fake the failure in SetRecvCodecs.
625 return false;
626 }
627 recv_codecs_ = codecs;
628 return true;
629 }
630 bool SetSendCodecs(const std::vector<VideoCodec>& codecs) {
631 if (fail_set_send_codecs()) {
632 // Fake the failure in SetSendCodecs.
633 return false;
634 }
635 send_codecs_ = codecs;
636
637 for (std::vector<StreamParams>::const_iterator it = send_streams().begin();
638 it != send_streams().end(); ++it) {
639 SetSendStreamDefaultFormat(it->first_ssrc());
640 }
641 return true;
642 }
643 bool SetOptions(const VideoOptions& options) {
644 options_ = options;
645 return true;
646 }
647 bool SetMaxSendBandwidth(int bps) {
648 max_bps_ = bps;
649 return true;
650 }
651
625 // Be default, each send stream uses the first send codec format. 652 // Be default, each send stream uses the first send codec format.
626 void SetSendStreamDefaultFormat(uint32 ssrc) { 653 void SetSendStreamDefaultFormat(uint32 ssrc) {
627 if (!send_codecs_.empty()) { 654 if (!send_codecs_.empty()) {
628 send_formats_[ssrc] = VideoFormat( 655 send_formats_[ssrc] = VideoFormat(
629 send_codecs_[0].width, send_codecs_[0].height, 656 send_codecs_[0].width, send_codecs_[0].height,
630 cricket::VideoFormat::FpsToInterval(send_codecs_[0].framerate), 657 cricket::VideoFormat::FpsToInterval(send_codecs_[0].framerate),
631 cricket::FOURCC_I420); 658 cricket::FOURCC_I420);
632 } 659 }
633 } 660 }
634 661
635 FakeVideoEngine* engine_; 662 FakeVideoEngine* engine_;
636 std::vector<VideoCodec> recv_codecs_; 663 std::vector<VideoCodec> recv_codecs_;
637 std::vector<VideoCodec> send_codecs_; 664 std::vector<VideoCodec> send_codecs_;
638 std::map<uint32, VideoRenderer*> renderers_; 665 std::map<uint32, VideoRenderer*> renderers_;
639 std::map<uint32, VideoFormat> send_formats_; 666 std::map<uint32, VideoFormat> send_formats_;
640 std::map<uint32, VideoCapturer*> capturers_; 667 std::map<uint32, VideoCapturer*> capturers_;
641 bool sent_intra_frame_; 668 bool sent_intra_frame_;
642 bool requested_intra_frame_; 669 bool requested_intra_frame_;
643 VideoOptions options_; 670 VideoOptions options_;
644 int max_bps_; 671 int max_bps_;
645 }; 672 };
646 673
647 class FakeDataMediaChannel : public RtpHelper<DataMediaChannel> { 674 class FakeDataMediaChannel : public RtpHelper<DataMediaChannel> {
648 public: 675 public:
649 explicit FakeDataMediaChannel(void* unused) 676 explicit FakeDataMediaChannel(void* unused, const DataOptions& options)
650 : send_blocked_(false), max_bps_(-1) {} 677 : send_blocked_(false), max_bps_(-1) {}
651 ~FakeDataMediaChannel() {} 678 ~FakeDataMediaChannel() {}
652 const std::vector<DataCodec>& recv_codecs() const { return recv_codecs_; } 679 const std::vector<DataCodec>& recv_codecs() const { return recv_codecs_; }
653 const std::vector<DataCodec>& send_codecs() const { return send_codecs_; } 680 const std::vector<DataCodec>& send_codecs() const { return send_codecs_; }
654 const std::vector<DataCodec>& codecs() const { return send_codecs(); } 681 const std::vector<DataCodec>& codecs() const { return send_codecs(); }
655 int max_bps() const { return max_bps_; } 682 int max_bps() const { return max_bps_; }
656 683
657 virtual bool SetRecvCodecs(const std::vector<DataCodec>& codecs) { 684 virtual bool SetSendParameters(const DataSendParameters& params) {
658 if (fail_set_recv_codecs()) { 685 return (SetSendCodecs(params.codecs) &&
659 // Fake the failure in SetRecvCodecs. 686 SetMaxSendBandwidth(params.max_bandwidth_bps));
660 return false;
661 }
662 recv_codecs_ = codecs;
663 return true;
664 } 687 }
665 virtual bool SetSendCodecs(const std::vector<DataCodec>& codecs) { 688 virtual bool SetRecvParameters(const DataRecvParameters& params) {
666 if (fail_set_send_codecs()) { 689 return SetRecvCodecs(params.codecs);
667 // Fake the failure in SetSendCodecs.
668 return false;
669 }
670 send_codecs_ = codecs;
671 return true;
672 } 690 }
673 virtual bool SetSend(bool send) { return set_sending(send); } 691 virtual bool SetSend(bool send) { return set_sending(send); }
674 virtual bool SetReceive(bool receive) { 692 virtual bool SetReceive(bool receive) {
675 set_playout(receive); 693 set_playout(receive);
676 return true; 694 return true;
677 } 695 }
678 virtual bool SetMaxSendBandwidth(int bps) {
679 max_bps_ = bps;
680 return true;
681 }
682 virtual bool AddRecvStream(const StreamParams& sp) { 696 virtual bool AddRecvStream(const StreamParams& sp) {
683 if (!RtpHelper<DataMediaChannel>::AddRecvStream(sp)) 697 if (!RtpHelper<DataMediaChannel>::AddRecvStream(sp))
684 return false; 698 return false;
685 return true; 699 return true;
686 } 700 }
687 virtual bool RemoveRecvStream(uint32 ssrc) { 701 virtual bool RemoveRecvStream(uint32 ssrc) {
688 if (!RtpHelper<DataMediaChannel>::RemoveRecvStream(ssrc)) 702 if (!RtpHelper<DataMediaChannel>::RemoveRecvStream(ssrc))
689 return false; 703 return false;
690 return true; 704 return true;
691 } 705 }
(...skipping 10 matching lines...) Expand all
702 return true; 716 return true;
703 } 717 }
704 } 718 }
705 719
706 SendDataParams last_sent_data_params() { return last_sent_data_params_; } 720 SendDataParams last_sent_data_params() { return last_sent_data_params_; }
707 std::string last_sent_data() { return last_sent_data_; } 721 std::string last_sent_data() { return last_sent_data_; }
708 bool is_send_blocked() { return send_blocked_; } 722 bool is_send_blocked() { return send_blocked_; }
709 void set_send_blocked(bool blocked) { send_blocked_ = blocked; } 723 void set_send_blocked(bool blocked) { send_blocked_ = blocked; }
710 724
711 private: 725 private:
726 bool SetRecvCodecs(const std::vector<DataCodec>& codecs) {
727 if (fail_set_recv_codecs()) {
728 // Fake the failure in SetRecvCodecs.
729 return false;
730 }
731 recv_codecs_ = codecs;
732 return true;
733 }
734 bool SetSendCodecs(const std::vector<DataCodec>& codecs) {
735 if (fail_set_send_codecs()) {
736 // Fake the failure in SetSendCodecs.
737 return false;
738 }
739 send_codecs_ = codecs;
740 return true;
741 }
742 bool SetMaxSendBandwidth(int bps) {
743 max_bps_ = bps;
744 return true;
745 }
746
712 std::vector<DataCodec> recv_codecs_; 747 std::vector<DataCodec> recv_codecs_;
713 std::vector<DataCodec> send_codecs_; 748 std::vector<DataCodec> send_codecs_;
714 SendDataParams last_sent_data_params_; 749 SendDataParams last_sent_data_params_;
715 std::string last_sent_data_; 750 std::string last_sent_data_;
716 bool send_blocked_; 751 bool send_blocked_;
717 int max_bps_; 752 int max_bps_;
718 }; 753 };
719 754
720 // A base class for all of the shared parts between FakeVoiceEngine 755 // A base class for all of the shared parts between FakeVoiceEngine
721 // and FakeVideoEngine. 756 // and FakeVideoEngine.
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
772 options_ = options; 807 options_ = options;
773 options_changed_ = true; 808 options_changed_ = true;
774 return true; 809 return true;
775 } 810 }
776 811
777 VoiceMediaChannel* CreateChannel(const AudioOptions& options) { 812 VoiceMediaChannel* CreateChannel(const AudioOptions& options) {
778 if (fail_create_channel_) { 813 if (fail_create_channel_) {
779 return nullptr; 814 return nullptr;
780 } 815 }
781 816
782 FakeVoiceMediaChannel* ch = new FakeVoiceMediaChannel(this); 817 FakeVoiceMediaChannel* ch = new FakeVoiceMediaChannel(this, options);
783 ch->SetOptions(options);
784 channels_.push_back(ch); 818 channels_.push_back(ch);
785 return ch; 819 return ch;
786 } 820 }
787 FakeVoiceMediaChannel* GetChannel(size_t index) { 821 FakeVoiceMediaChannel* GetChannel(size_t index) {
788 return (channels_.size() > index) ? channels_[index] : NULL; 822 return (channels_.size() > index) ? channels_[index] : NULL;
789 } 823 }
790 void UnregisterChannel(VoiceMediaChannel* channel) { 824 void UnregisterChannel(VoiceMediaChannel* channel) {
791 channels_.erase(std::find(channels_.begin(), channels_.end(), channel)); 825 channels_.erase(std::find(channels_.begin(), channels_.end(), channel));
792 } 826 }
793 827
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
886 const VideoEncoderConfig& default_encoder_config() const { 920 const VideoEncoderConfig& default_encoder_config() const {
887 return default_encoder_config_; 921 return default_encoder_config_;
888 } 922 }
889 923
890 VideoMediaChannel* CreateChannel(const VideoOptions& options, 924 VideoMediaChannel* CreateChannel(const VideoOptions& options,
891 VoiceMediaChannel* channel) { 925 VoiceMediaChannel* channel) {
892 if (fail_create_channel_) { 926 if (fail_create_channel_) {
893 return NULL; 927 return NULL;
894 } 928 }
895 929
896 FakeVideoMediaChannel* ch = new FakeVideoMediaChannel(this); 930 FakeVideoMediaChannel* ch = new FakeVideoMediaChannel(this, options);
897 ch->SetOptions(options);
898 channels_.push_back(ch); 931 channels_.push_back(ch);
899 return ch; 932 return ch;
900 } 933 }
901 FakeVideoMediaChannel* GetChannel(size_t index) { 934 FakeVideoMediaChannel* GetChannel(size_t index) {
902 return (channels_.size() > index) ? channels_[index] : NULL; 935 return (channels_.size() > index) ? channels_[index] : NULL;
903 } 936 }
904 void UnregisterChannel(VideoMediaChannel* channel) { 937 void UnregisterChannel(VideoMediaChannel* channel) {
905 channels_.erase(std::find(channels_.begin(), channels_.end(), channel)); 938 channels_.erase(std::find(channels_.begin(), channels_.end(), channel));
906 } 939 }
907 940
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
1029 engine_->UnregisterChannel(this); 1062 engine_->UnregisterChannel(this);
1030 } 1063 }
1031 } 1064 }
1032 1065
1033 class FakeDataEngine : public DataEngineInterface { 1066 class FakeDataEngine : public DataEngineInterface {
1034 public: 1067 public:
1035 FakeDataEngine() : last_channel_type_(DCT_NONE) {} 1068 FakeDataEngine() : last_channel_type_(DCT_NONE) {}
1036 1069
1037 virtual DataMediaChannel* CreateChannel(DataChannelType data_channel_type) { 1070 virtual DataMediaChannel* CreateChannel(DataChannelType data_channel_type) {
1038 last_channel_type_ = data_channel_type; 1071 last_channel_type_ = data_channel_type;
1039 FakeDataMediaChannel* ch = new FakeDataMediaChannel(this); 1072 FakeDataMediaChannel* ch = new FakeDataMediaChannel(this, DataOptions());
1040 channels_.push_back(ch); 1073 channels_.push_back(ch);
1041 return ch; 1074 return ch;
1042 } 1075 }
1043 1076
1044 FakeDataMediaChannel* GetChannel(size_t index) { 1077 FakeDataMediaChannel* GetChannel(size_t index) {
1045 return (channels_.size() > index) ? channels_[index] : NULL; 1078 return (channels_.size() > index) ? channels_[index] : NULL;
1046 } 1079 }
1047 1080
1048 void UnregisterChannel(DataMediaChannel* channel) { 1081 void UnregisterChannel(DataMediaChannel* channel) {
1049 channels_.erase(std::find(channels_.begin(), channels_.end(), channel)); 1082 channels_.erase(std::find(channels_.begin(), channels_.end(), channel));
1050 } 1083 }
1051 1084
1052 virtual void SetDataCodecs(const std::vector<DataCodec>& data_codecs) { 1085 virtual void SetDataCodecs(const std::vector<DataCodec>& data_codecs) {
1053 data_codecs_ = data_codecs; 1086 data_codecs_ = data_codecs;
1054 } 1087 }
1055 1088
1056 virtual const std::vector<DataCodec>& data_codecs() { return data_codecs_; } 1089 virtual const std::vector<DataCodec>& data_codecs() { return data_codecs_; }
1057 1090
1058 DataChannelType last_channel_type() const { return last_channel_type_; } 1091 DataChannelType last_channel_type() const { return last_channel_type_; }
1059 1092
1060 private: 1093 private:
1061 std::vector<FakeDataMediaChannel*> channels_; 1094 std::vector<FakeDataMediaChannel*> channels_;
1062 std::vector<DataCodec> data_codecs_; 1095 std::vector<DataCodec> data_codecs_;
1063 DataChannelType last_channel_type_; 1096 DataChannelType last_channel_type_;
1064 }; 1097 };
1065 1098
1066 } // namespace cricket 1099 } // namespace cricket
1067 1100
1068 #endif // TALK_MEDIA_BASE_FAKEMEDIAENGINE_H_ 1101 #endif // TALK_MEDIA_BASE_FAKEMEDIAENGINE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698