OLD | NEW |
---|---|
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 Loading... | |
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 } |
126 virtual bool RemoveSendStream(uint32 ssrc) { | 116 virtual bool RemoveSendStream(uint32 ssrc) { |
127 return RemoveStreamBySsrc(&send_streams_, ssrc); | 117 return RemoveStreamBySsrc(&send_streams_, ssrc); |
128 } | 118 } |
129 virtual bool AddRecvStream(const StreamParams& sp) { | 119 virtual bool AddRecvStream(const StreamParams& sp) { |
130 if (std::find(receive_streams_.begin(), receive_streams_.end(), sp) != | 120 if (std::find(receive_streams_.begin(), receive_streams_.end(), sp) != |
131 receive_streams_.end()) { | 121 receive_streams_.end()) { |
132 return false; | 122 return false; |
133 } | 123 } |
134 receive_streams_.push_back(sp); | 124 receive_streams_.push_back(sp); |
135 return true; | 125 return true; |
136 } | 126 } |
137 virtual bool RemoveRecvStream(uint32 ssrc) { | 127 virtual bool RemoveRecvStream(uint32 ssrc) { |
138 return RemoveStreamBySsrc(&receive_streams_, ssrc); | 128 return RemoveStreamBySsrc(&receive_streams_, ssrc); |
139 } | 129 } |
140 virtual bool MuteStream(uint32 ssrc, bool on) { | |
141 if (!HasSendStream(ssrc) && ssrc != 0) | |
142 return false; | |
143 if (on) | |
144 muted_streams_.insert(ssrc); | |
145 else | |
146 muted_streams_.erase(ssrc); | |
147 return true; | |
148 } | |
149 bool IsStreamMuted(uint32 ssrc) const { | 130 bool IsStreamMuted(uint32 ssrc) const { |
150 bool ret = muted_streams_.find(ssrc) != muted_streams_.end(); | 131 bool ret = muted_streams_.find(ssrc) != muted_streams_.end(); |
151 // If |ssrc = 0| check if the first send stream is muted. | 132 // If |ssrc = 0| check if the first send stream is muted. |
152 if (!ret && ssrc == 0 && !send_streams_.empty()) { | 133 if (!ret && ssrc == 0 && !send_streams_.empty()) { |
153 return muted_streams_.find(send_streams_[0].first_ssrc()) != | 134 return muted_streams_.find(send_streams_[0].first_ssrc()) != |
154 muted_streams_.end(); | 135 muted_streams_.end(); |
155 } | 136 } |
156 return ret; | 137 return ret; |
157 } | 138 } |
158 const std::vector<StreamParams>& send_streams() const { | 139 const std::vector<StreamParams>& send_streams() const { |
(...skipping 22 matching lines...) Expand all Loading... | |
181 if (send_streams_.empty()) | 162 if (send_streams_.empty()) |
182 return ""; | 163 return ""; |
183 return send_streams_[0].cname; | 164 return send_streams_[0].cname; |
184 } | 165 } |
185 | 166 |
186 bool ready_to_send() const { | 167 bool ready_to_send() const { |
187 return ready_to_send_; | 168 return ready_to_send_; |
188 } | 169 } |
189 | 170 |
190 protected: | 171 protected: |
172 bool MuteStream(uint32 ssrc, bool mute) { | |
173 if (!HasSendStream(ssrc) && ssrc != 0) { | |
174 return false; | |
175 } | |
176 if (mute) { | |
177 muted_streams_.insert(ssrc); | |
178 } else { | |
179 muted_streams_.erase(ssrc); | |
180 } | |
181 return true; | |
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 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
250 const std::vector<AudioCodec>& codecs() const { return send_codecs(); } | 252 const std::vector<AudioCodec>& codecs() const { return send_codecs(); } |
251 const std::vector<DtmfInfo>& dtmf_info_queue() const { | 253 const std::vector<DtmfInfo>& dtmf_info_queue() const { |
252 return dtmf_info_queue_; | 254 return dtmf_info_queue_; |
253 } | 255 } |
254 const AudioOptions& options() const { return options_; } | 256 const AudioOptions& options() const { return options_; } |
255 | 257 |
256 uint32 ringback_tone_ssrc() const { return ringback_tone_ssrc_; } | 258 uint32 ringback_tone_ssrc() const { return ringback_tone_ssrc_; } |
257 bool ringback_tone_play() const { return ringback_tone_play_; } | 259 bool ringback_tone_play() const { return ringback_tone_play_; } |
258 bool ringback_tone_loop() const { return ringback_tone_loop_; } | 260 bool ringback_tone_loop() const { return ringback_tone_loop_; } |
259 | 261 |
260 virtual bool SetRecvCodecs(const std::vector<AudioCodec>& codecs) { | 262 virtual bool SetSendParameters(const AudioSendParameters& params) { |
261 if (fail_set_recv_codecs()) { | 263 return (SetSendCodecs(params.codecs) && |
262 // Fake the failure in SetRecvCodecs. | 264 SetSendRtpHeaderExtensions(params.extensions) && |
263 return false; | 265 SetMaxSendBandwidth(params.max_bandwidth_bps) && |
264 } | 266 SetOptions(params.options)); |
265 recv_codecs_ = codecs; | |
266 return true; | |
267 } | 267 } |
268 virtual bool SetSendCodecs(const std::vector<AudioCodec>& codecs) { | 268 |
269 if (fail_set_send_codecs()) { | 269 virtual bool SetRecvParameters(const AudioRecvParameters& params) { |
270 // Fake the failure in SetSendCodecs. | 270 return (SetRecvCodecs(params.codecs) && |
271 return false; | 271 SetRecvRtpHeaderExtensions(params.extensions)); |
272 } | |
273 send_codecs_ = codecs; | |
274 return true; | |
275 } | 272 } |
276 virtual bool SetPlayout(bool playout) { | 273 virtual bool SetPlayout(bool playout) { |
277 set_playout(playout); | 274 set_playout(playout); |
278 return true; | 275 return true; |
279 } | 276 } |
280 virtual bool SetSend(SendFlags flag) { | 277 virtual bool SetSend(SendFlags flag) { |
281 if (fail_set_send_) { | 278 if (fail_set_send_) { |
282 return false; | 279 return false; |
283 } | 280 } |
284 return set_sending(flag != SEND_NOTHING); | 281 return set_sending(flag != SEND_NOTHING); |
285 } | 282 } |
286 virtual bool SetMaxSendBandwidth(int bps) { return true; } | 283 virtual bool MuteStream(uint32 ssrc, bool mute, const AudioOptions* options) { |
284 bool result = RtpHelper<VoiceMediaChannel>::MuteStream(ssrc, mute); | |
285 if (result && !mute && options) { | |
286 return SetOptions(*options); | |
287 } else { | |
288 return result; | |
289 } | |
290 } | |
287 virtual bool AddRecvStream(const StreamParams& sp) { | 291 virtual bool AddRecvStream(const StreamParams& sp) { |
288 if (!RtpHelper<VoiceMediaChannel>::AddRecvStream(sp)) | 292 if (!RtpHelper<VoiceMediaChannel>::AddRecvStream(sp)) |
289 return false; | 293 return false; |
290 output_scalings_[sp.first_ssrc()] = OutputScaling(); | 294 output_scalings_[sp.first_ssrc()] = OutputScaling(); |
291 return true; | 295 return true; |
292 } | 296 } |
293 virtual bool RemoveRecvStream(uint32 ssrc) { | 297 virtual bool RemoveRecvStream(uint32 ssrc) { |
294 if (!RtpHelper<VoiceMediaChannel>::RemoveRecvStream(ssrc)) | 298 if (!RtpHelper<VoiceMediaChannel>::RemoveRecvStream(ssrc)) |
295 return false; | 299 return false; |
296 output_scalings_.erase(ssrc); | 300 output_scalings_.erase(ssrc); |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
398 *ssrc = 0; | 402 *ssrc = 0; |
399 *error = fail_set_send_ ? VoiceMediaChannel::ERROR_REC_DEVICE_OPEN_FAILED | 403 *error = fail_set_send_ ? VoiceMediaChannel::ERROR_REC_DEVICE_OPEN_FAILED |
400 : VoiceMediaChannel::ERROR_NONE; | 404 : VoiceMediaChannel::ERROR_NONE; |
401 } | 405 } |
402 | 406 |
403 void set_fail_set_send(bool fail) { fail_set_send_ = fail; } | 407 void set_fail_set_send(bool fail) { fail_set_send_ = fail; } |
404 void TriggerError(uint32 ssrc, VoiceMediaChannel::Error error) { | 408 void TriggerError(uint32 ssrc, VoiceMediaChannel::Error error) { |
405 VoiceMediaChannel::SignalMediaError(ssrc, error); | 409 VoiceMediaChannel::SignalMediaError(ssrc, error); |
406 } | 410 } |
407 | 411 |
408 virtual bool SetOptions(const AudioOptions& options) { | |
409 // Does a "merge" of current options and set options. | |
410 options_.SetAll(options); | |
411 return true; | |
412 } | |
413 virtual bool GetOptions(AudioOptions* options) const { | 412 virtual bool GetOptions(AudioOptions* options) const { |
414 *options = options_; | 413 *options = options_; |
415 return true; | 414 return true; |
416 } | 415 } |
417 | 416 |
418 private: | 417 private: |
419 struct OutputScaling { | 418 struct OutputScaling { |
420 OutputScaling() : left(1.0), right(1.0) {} | 419 OutputScaling() : left(1.0), right(1.0) {} |
421 double left, right; | 420 double left, right; |
422 }; | 421 }; |
(...skipping 16 matching lines...) Expand all Loading... | |
439 int sample_rate, | 438 int sample_rate, |
440 int number_of_channels, | 439 int number_of_channels, |
441 size_t number_of_frames) override {} | 440 size_t number_of_frames) override {} |
442 void OnClose() override { renderer_ = NULL; } | 441 void OnClose() override { renderer_ = NULL; } |
443 AudioRenderer* renderer() const { return renderer_; } | 442 AudioRenderer* renderer() const { return renderer_; } |
444 | 443 |
445 private: | 444 private: |
446 AudioRenderer* renderer_; | 445 AudioRenderer* renderer_; |
447 }; | 446 }; |
448 | 447 |
448 bool SetRecvCodecs(const std::vector<AudioCodec>& codecs) { | |
449 if (fail_set_recv_codecs()) { | |
450 // Fake the failure in SetRecvCodecs. | |
451 return false; | |
452 } | |
453 recv_codecs_ = codecs; | |
454 return true; | |
455 } | |
456 bool SetSendCodecs(const std::vector<AudioCodec>& codecs) { | |
457 if (fail_set_send_codecs()) { | |
458 // Fake the failure in SetSendCodecs. | |
459 return false; | |
460 } | |
461 send_codecs_ = codecs; | |
462 return true; | |
463 } | |
464 bool SetMaxSendBandwidth(int bps) { return true; } | |
465 bool SetOptions(const AudioOptions& options) { | |
466 // Does a "merge" of current options and set options. | |
467 options_.SetAll(options); | |
468 return true; | |
469 } | |
449 | 470 |
450 FakeVoiceEngine* engine_; | 471 FakeVoiceEngine* engine_; |
451 std::vector<AudioCodec> recv_codecs_; | 472 std::vector<AudioCodec> recv_codecs_; |
452 std::vector<AudioCodec> send_codecs_; | 473 std::vector<AudioCodec> send_codecs_; |
453 std::map<uint32, OutputScaling> output_scalings_; | 474 std::map<uint32, OutputScaling> output_scalings_; |
454 std::vector<DtmfInfo> dtmf_info_queue_; | 475 std::vector<DtmfInfo> dtmf_info_queue_; |
455 bool fail_set_send_; | 476 bool fail_set_send_; |
456 uint32 ringback_tone_ssrc_; | 477 uint32 ringback_tone_ssrc_; |
457 bool ringback_tone_play_; | 478 bool ringback_tone_play_; |
458 bool ringback_tone_loop_; | 479 bool ringback_tone_loop_; |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
496 *format = send_formats_[ssrc]; | 517 *format = send_formats_[ssrc]; |
497 return true; | 518 return true; |
498 } | 519 } |
499 virtual bool SetSendStreamFormat(uint32 ssrc, const VideoFormat& format) { | 520 virtual bool SetSendStreamFormat(uint32 ssrc, const VideoFormat& format) { |
500 if (send_formats_.find(ssrc) == send_formats_.end()) { | 521 if (send_formats_.find(ssrc) == send_formats_.end()) { |
501 return false; | 522 return false; |
502 } | 523 } |
503 send_formats_[ssrc] = format; | 524 send_formats_[ssrc] = format; |
504 return true; | 525 return true; |
505 } | 526 } |
527 virtual bool SetSendParameters(const VideoSendParameters& params) { | |
528 return (SetSendCodecs(params.codecs) && | |
529 SetSendRtpHeaderExtensions(params.extensions) && | |
530 SetMaxSendBandwidth(params.max_bandwidth_bps) && | |
531 SetOptions(params.options)); | |
532 } | |
506 | 533 |
534 virtual bool SetRecvParameters(const VideoRecvParameters& params) { | |
535 return (SetRecvCodecs(params.codecs) && | |
536 SetRecvRtpHeaderExtensions(params.extensions)); | |
537 } | |
507 virtual bool AddSendStream(const StreamParams& sp) { | 538 virtual bool AddSendStream(const StreamParams& sp) { |
508 if (!RtpHelper<VideoMediaChannel>::AddSendStream(sp)) { | 539 if (!RtpHelper<VideoMediaChannel>::AddSendStream(sp)) { |
509 return false; | 540 return false; |
510 } | 541 } |
511 SetSendStreamDefaultFormat(sp.first_ssrc()); | 542 SetSendStreamDefaultFormat(sp.first_ssrc()); |
512 return true; | 543 return true; |
513 } | 544 } |
514 virtual bool RemoveSendStream(uint32 ssrc) { | 545 virtual bool RemoveSendStream(uint32 ssrc) { |
515 send_formats_.erase(ssrc); | 546 send_formats_.erase(ssrc); |
516 return RtpHelper<VideoMediaChannel>::RemoveSendStream(ssrc); | 547 return RtpHelper<VideoMediaChannel>::RemoveSendStream(ssrc); |
517 } | 548 } |
518 | 549 |
519 void DetachVoiceChannel() override {} | 550 void DetachVoiceChannel() override {} |
520 virtual bool SetRecvCodecs(const std::vector<VideoCodec>& codecs) { | |
521 if (fail_set_recv_codecs()) { | |
522 // Fake the failure in SetRecvCodecs. | |
523 return false; | |
524 } | |
525 recv_codecs_ = codecs; | |
526 return true; | |
527 } | |
528 virtual bool SetSendCodecs(const std::vector<VideoCodec>& codecs) { | |
529 if (fail_set_send_codecs()) { | |
530 // Fake the failure in SetSendCodecs. | |
531 return false; | |
532 } | |
533 send_codecs_ = codecs; | |
534 | |
535 for (std::vector<StreamParams>::const_iterator it = send_streams().begin(); | |
536 it != send_streams().end(); ++it) { | |
537 SetSendStreamDefaultFormat(it->first_ssrc()); | |
538 } | |
539 return true; | |
540 } | |
541 virtual bool GetSendCodec(VideoCodec* send_codec) { | 551 virtual bool GetSendCodec(VideoCodec* send_codec) { |
542 if (send_codecs_.empty()) { | 552 if (send_codecs_.empty()) { |
543 return false; | 553 return false; |
544 } | 554 } |
545 *send_codec = send_codecs_[0]; | 555 *send_codec = send_codecs_[0]; |
546 return true; | 556 return true; |
547 } | 557 } |
548 virtual bool SetRender(bool render) { | 558 virtual bool SetRender(bool render) { |
549 set_playout(render); | 559 set_playout(render); |
550 return true; | 560 return true; |
551 } | 561 } |
552 virtual bool SetRenderer(uint32 ssrc, VideoRenderer* r) { | 562 virtual bool SetRenderer(uint32 ssrc, VideoRenderer* r) { |
553 if (ssrc != 0 && renderers_.find(ssrc) == renderers_.end()) { | 563 if (ssrc != 0 && renderers_.find(ssrc) == renderers_.end()) { |
554 return false; | 564 return false; |
555 } | 565 } |
556 if (ssrc != 0) { | 566 if (ssrc != 0) { |
557 renderers_[ssrc] = r; | 567 renderers_[ssrc] = r; |
558 } | 568 } |
559 return true; | 569 return true; |
560 } | 570 } |
561 | 571 |
562 virtual bool SetSend(bool send) { return set_sending(send); } | 572 virtual bool SetSend(bool send) { return set_sending(send); } |
573 virtual bool MuteStream(uint32 ssrc, bool mute, const VideoOptions* options) { | |
574 bool result = RtpHelper<VideoMediaChannel>::MuteStream(ssrc, mute); | |
575 if (result && !mute && options) { | |
576 return SetOptions(*options); | |
577 } else { | |
578 return result; | |
579 } | |
580 } | |
563 virtual bool SetCapturer(uint32 ssrc, VideoCapturer* capturer) { | 581 virtual bool SetCapturer(uint32 ssrc, VideoCapturer* capturer) { |
564 capturers_[ssrc] = capturer; | 582 capturers_[ssrc] = capturer; |
565 return true; | 583 return true; |
566 } | 584 } |
567 bool HasCapturer(uint32 ssrc) const { | 585 bool HasCapturer(uint32 ssrc) const { |
568 return capturers_.find(ssrc) != capturers_.end(); | 586 return capturers_.find(ssrc) != capturers_.end(); |
569 } | 587 } |
570 virtual bool SetMaxSendBandwidth(int bps) { | |
571 max_bps_ = bps; | |
572 return true; | |
573 } | |
574 virtual bool AddRecvStream(const StreamParams& sp) { | 588 virtual bool AddRecvStream(const StreamParams& sp) { |
575 if (!RtpHelper<VideoMediaChannel>::AddRecvStream(sp)) | 589 if (!RtpHelper<VideoMediaChannel>::AddRecvStream(sp)) |
576 return false; | 590 return false; |
577 renderers_[sp.first_ssrc()] = NULL; | 591 renderers_[sp.first_ssrc()] = NULL; |
578 return true; | 592 return true; |
579 } | 593 } |
580 virtual bool RemoveRecvStream(uint32 ssrc) { | 594 virtual bool RemoveRecvStream(uint32 ssrc) { |
581 if (!RtpHelper<VideoMediaChannel>::RemoveRecvStream(ssrc)) | 595 if (!RtpHelper<VideoMediaChannel>::RemoveRecvStream(ssrc)) |
582 return false; | 596 return false; |
583 renderers_.erase(ssrc); | 597 renderers_.erase(ssrc); |
584 return true; | 598 return true; |
585 } | 599 } |
586 | 600 |
587 virtual bool GetStats(VideoMediaInfo* info) { return false; } | 601 virtual bool GetStats(VideoMediaInfo* info) { return false; } |
588 virtual bool SendIntraFrame() { | 602 virtual bool SendIntraFrame() { |
589 sent_intra_frame_ = true; | 603 sent_intra_frame_ = true; |
590 return true; | 604 return true; |
591 } | 605 } |
592 virtual bool RequestIntraFrame() { | 606 virtual bool RequestIntraFrame() { |
593 requested_intra_frame_ = true; | 607 requested_intra_frame_ = true; |
594 return true; | 608 return true; |
595 } | 609 } |
596 virtual bool SetOptions(const VideoOptions& options) { | |
597 options_ = options; | |
598 return true; | |
599 } | |
600 virtual bool GetOptions(VideoOptions* options) const { | 610 virtual bool GetOptions(VideoOptions* options) const { |
601 *options = options_; | 611 *options = options_; |
602 return true; | 612 return true; |
603 } | 613 } |
604 virtual void UpdateAspectRatio(int ratio_w, int ratio_h) {} | 614 virtual void UpdateAspectRatio(int ratio_w, int ratio_h) {} |
605 void set_sent_intra_frame(bool v) { sent_intra_frame_ = v; } | 615 void set_sent_intra_frame(bool v) { sent_intra_frame_ = v; } |
606 bool sent_intra_frame() const { return sent_intra_frame_; } | 616 bool sent_intra_frame() const { return sent_intra_frame_; } |
607 void set_requested_intra_frame(bool v) { requested_intra_frame_ = v; } | 617 void set_requested_intra_frame(bool v) { requested_intra_frame_ = v; } |
608 bool requested_intra_frame() const { return requested_intra_frame_; } | 618 bool requested_intra_frame() const { return requested_intra_frame_; } |
609 | 619 |
610 private: | 620 private: |
621 bool SetRecvCodecs(const std::vector<VideoCodec>& codecs) { | |
622 if (fail_set_recv_codecs()) { | |
623 // Fake the failure in SetRecvCodecs. | |
624 return false; | |
625 } | |
626 recv_codecs_ = codecs; | |
627 return true; | |
628 } | |
629 bool SetSendCodecs(const std::vector<VideoCodec>& codecs) { | |
630 if (fail_set_send_codecs()) { | |
631 // Fake the failure in SetSendCodecs. | |
632 return false; | |
633 } | |
634 send_codecs_ = codecs; | |
635 | |
636 for (std::vector<StreamParams>::const_iterator it = send_streams().begin(); | |
637 it != send_streams().end(); ++it) { | |
638 SetSendStreamDefaultFormat(it->first_ssrc()); | |
639 } | |
640 return true; | |
641 } | |
642 bool SetOptions(const VideoOptions& options) { | |
643 options_ = options; | |
644 return true; | |
645 } | |
646 bool SetMaxSendBandwidth(int bps) { | |
647 max_bps_ = bps; | |
648 return true; | |
649 } | |
650 | |
611 // Be default, each send stream uses the first send codec format. | 651 // Be default, each send stream uses the first send codec format. |
612 void SetSendStreamDefaultFormat(uint32 ssrc) { | 652 void SetSendStreamDefaultFormat(uint32 ssrc) { |
613 if (!send_codecs_.empty()) { | 653 if (!send_codecs_.empty()) { |
614 send_formats_[ssrc] = VideoFormat( | 654 send_formats_[ssrc] = VideoFormat( |
615 send_codecs_[0].width, send_codecs_[0].height, | 655 send_codecs_[0].width, send_codecs_[0].height, |
616 cricket::VideoFormat::FpsToInterval(send_codecs_[0].framerate), | 656 cricket::VideoFormat::FpsToInterval(send_codecs_[0].framerate), |
617 cricket::FOURCC_I420); | 657 cricket::FOURCC_I420); |
618 } | 658 } |
619 } | 659 } |
620 | 660 |
(...skipping 12 matching lines...) Expand all Loading... | |
633 class FakeDataMediaChannel : public RtpHelper<DataMediaChannel> { | 673 class FakeDataMediaChannel : public RtpHelper<DataMediaChannel> { |
634 public: | 674 public: |
635 explicit FakeDataMediaChannel(void* unused) | 675 explicit FakeDataMediaChannel(void* unused) |
636 : send_blocked_(false), max_bps_(-1) {} | 676 : send_blocked_(false), max_bps_(-1) {} |
637 ~FakeDataMediaChannel() {} | 677 ~FakeDataMediaChannel() {} |
638 const std::vector<DataCodec>& recv_codecs() const { return recv_codecs_; } | 678 const std::vector<DataCodec>& recv_codecs() const { return recv_codecs_; } |
639 const std::vector<DataCodec>& send_codecs() const { return send_codecs_; } | 679 const std::vector<DataCodec>& send_codecs() const { return send_codecs_; } |
640 const std::vector<DataCodec>& codecs() const { return send_codecs(); } | 680 const std::vector<DataCodec>& codecs() const { return send_codecs(); } |
641 int max_bps() const { return max_bps_; } | 681 int max_bps() const { return max_bps_; } |
642 | 682 |
643 virtual bool SetRecvCodecs(const std::vector<DataCodec>& codecs) { | 683 virtual bool SetSendParameters(const DataSendParameters& params) { |
644 if (fail_set_recv_codecs()) { | 684 return (SetSendCodecs(params.codecs) && |
645 // Fake the failure in SetRecvCodecs. | 685 SetMaxSendBandwidth(params.max_bandwidth_bps)); |
646 return false; | |
647 } | |
648 recv_codecs_ = codecs; | |
649 return true; | |
650 } | 686 } |
651 virtual bool SetSendCodecs(const std::vector<DataCodec>& codecs) { | 687 virtual bool SetRecvParameters(const DataRecvParameters& params) { |
652 if (fail_set_send_codecs()) { | 688 return SetRecvCodecs(params.codecs); |
653 // Fake the failure in SetSendCodecs. | |
654 return false; | |
655 } | |
656 send_codecs_ = codecs; | |
657 return true; | |
658 } | 689 } |
659 virtual bool SetSend(bool send) { return set_sending(send); } | 690 virtual bool SetSend(bool send) { return set_sending(send); } |
660 virtual bool SetReceive(bool receive) { | 691 virtual bool SetReceive(bool receive) { |
661 set_playout(receive); | 692 set_playout(receive); |
662 return true; | 693 return true; |
663 } | 694 } |
664 virtual bool SetMaxSendBandwidth(int bps) { | |
665 max_bps_ = bps; | |
666 return true; | |
667 } | |
668 virtual bool AddRecvStream(const StreamParams& sp) { | 695 virtual bool AddRecvStream(const StreamParams& sp) { |
669 if (!RtpHelper<DataMediaChannel>::AddRecvStream(sp)) | 696 if (!RtpHelper<DataMediaChannel>::AddRecvStream(sp)) |
670 return false; | 697 return false; |
671 return true; | 698 return true; |
672 } | 699 } |
673 virtual bool RemoveRecvStream(uint32 ssrc) { | 700 virtual bool RemoveRecvStream(uint32 ssrc) { |
674 if (!RtpHelper<DataMediaChannel>::RemoveRecvStream(ssrc)) | 701 if (!RtpHelper<DataMediaChannel>::RemoveRecvStream(ssrc)) |
675 return false; | 702 return false; |
676 return true; | 703 return true; |
677 } | 704 } |
(...skipping 10 matching lines...) Expand all Loading... | |
688 return true; | 715 return true; |
689 } | 716 } |
690 } | 717 } |
691 | 718 |
692 SendDataParams last_sent_data_params() { return last_sent_data_params_; } | 719 SendDataParams last_sent_data_params() { return last_sent_data_params_; } |
693 std::string last_sent_data() { return last_sent_data_; } | 720 std::string last_sent_data() { return last_sent_data_; } |
694 bool is_send_blocked() { return send_blocked_; } | 721 bool is_send_blocked() { return send_blocked_; } |
695 void set_send_blocked(bool blocked) { send_blocked_ = blocked; } | 722 void set_send_blocked(bool blocked) { send_blocked_ = blocked; } |
696 | 723 |
697 private: | 724 private: |
725 bool SetRecvCodecs(const std::vector<DataCodec>& codecs) { | |
726 if (fail_set_recv_codecs()) { | |
727 // Fake the failure in SetRecvCodecs. | |
728 return false; | |
729 } | |
730 recv_codecs_ = codecs; | |
731 return true; | |
732 } | |
733 bool SetSendCodecs(const std::vector<DataCodec>& codecs) { | |
734 if (fail_set_send_codecs()) { | |
735 // Fake the failure in SetSendCodecs. | |
736 return false; | |
737 } | |
738 send_codecs_ = codecs; | |
739 return true; | |
740 } | |
741 bool SetMaxSendBandwidth(int bps) { | |
742 max_bps_ = bps; | |
743 return true; | |
744 } | |
745 | |
698 std::vector<DataCodec> recv_codecs_; | 746 std::vector<DataCodec> recv_codecs_; |
699 std::vector<DataCodec> send_codecs_; | 747 std::vector<DataCodec> send_codecs_; |
700 SendDataParams last_sent_data_params_; | 748 SendDataParams last_sent_data_params_; |
701 std::string last_sent_data_; | 749 std::string last_sent_data_; |
702 bool send_blocked_; | 750 bool send_blocked_; |
703 int max_bps_; | 751 int max_bps_; |
704 }; | 752 }; |
705 | 753 |
706 // A base class for all of the shared parts between FakeVoiceEngine | 754 // A base class for all of the shared parts between FakeVoiceEngine |
707 // and FakeVideoEngine. | 755 // and FakeVideoEngine. |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
762 options_changed_ = true; | 810 options_changed_ = true; |
763 return true; | 811 return true; |
764 } | 812 } |
765 | 813 |
766 VoiceMediaChannel* CreateChannel(const AudioOptions& options) { | 814 VoiceMediaChannel* CreateChannel(const AudioOptions& options) { |
767 if (fail_create_channel_) { | 815 if (fail_create_channel_) { |
768 return nullptr; | 816 return nullptr; |
769 } | 817 } |
770 | 818 |
771 FakeVoiceMediaChannel* ch = new FakeVoiceMediaChannel(this); | 819 FakeVoiceMediaChannel* ch = new FakeVoiceMediaChannel(this); |
772 ch->SetOptions(options); | 820 // TODO(solenberg): !!!!!! SetParameters with only options? |
821 // ch->SetOptions(options); | |
pthatcher1
2015/09/04 23:21:16
The options don't matter until the other parameter
the sun
2015/09/11 15:03:03
Done.
| |
773 channels_.push_back(ch); | 822 channels_.push_back(ch); |
774 return ch; | 823 return ch; |
775 } | 824 } |
776 FakeVoiceMediaChannel* GetChannel(size_t index) { | 825 FakeVoiceMediaChannel* GetChannel(size_t index) { |
777 return (channels_.size() > index) ? channels_[index] : NULL; | 826 return (channels_.size() > index) ? channels_[index] : NULL; |
778 } | 827 } |
779 void UnregisterChannel(VoiceMediaChannel* channel) { | 828 void UnregisterChannel(VoiceMediaChannel* channel) { |
780 channels_.erase(std::find(channels_.begin(), channels_.end(), channel)); | 829 channels_.erase(std::find(channels_.begin(), channels_.end(), channel)); |
781 } | 830 } |
782 | 831 |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
880 return default_encoder_config_; | 929 return default_encoder_config_; |
881 } | 930 } |
882 | 931 |
883 VideoMediaChannel* CreateChannel(const VideoOptions& options, | 932 VideoMediaChannel* CreateChannel(const VideoOptions& options, |
884 VoiceMediaChannel* channel) { | 933 VoiceMediaChannel* channel) { |
885 if (fail_create_channel_) { | 934 if (fail_create_channel_) { |
886 return NULL; | 935 return NULL; |
887 } | 936 } |
888 | 937 |
889 FakeVideoMediaChannel* ch = new FakeVideoMediaChannel(this); | 938 FakeVideoMediaChannel* ch = new FakeVideoMediaChannel(this); |
890 ch->SetOptions(options); | 939 // TODO(solenberg): !!!!! SetParameters with only options? |
940 // ch->SetOptions(options); | |
891 channels_.push_back(ch); | 941 channels_.push_back(ch); |
892 return ch; | 942 return ch; |
893 } | 943 } |
894 FakeVideoMediaChannel* GetChannel(size_t index) { | 944 FakeVideoMediaChannel* GetChannel(size_t index) { |
895 return (channels_.size() > index) ? channels_[index] : NULL; | 945 return (channels_.size() > index) ? channels_[index] : NULL; |
896 } | 946 } |
897 void UnregisterChannel(VideoMediaChannel* channel) { | 947 void UnregisterChannel(VideoMediaChannel* channel) { |
898 channels_.erase(std::find(channels_.begin(), channels_.end(), channel)); | 948 channels_.erase(std::find(channels_.begin(), channels_.end(), channel)); |
899 } | 949 } |
900 | 950 |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1052 | 1102 |
1053 private: | 1103 private: |
1054 std::vector<FakeDataMediaChannel*> channels_; | 1104 std::vector<FakeDataMediaChannel*> channels_; |
1055 std::vector<DataCodec> data_codecs_; | 1105 std::vector<DataCodec> data_codecs_; |
1056 DataChannelType last_channel_type_; | 1106 DataChannelType last_channel_type_; |
1057 }; | 1107 }; |
1058 | 1108 |
1059 } // namespace cricket | 1109 } // namespace cricket |
1060 | 1110 |
1061 #endif // TALK_MEDIA_BASE_FAKEMEDIAENGINE_H_ | 1111 #endif // TALK_MEDIA_BASE_FAKEMEDIAENGINE_H_ |
OLD | NEW |