| OLD | NEW |
| 1 /* | 1 /* |
| 2 * libjingle | 2 * libjingle |
| 3 * Copyright 2010 Google Inc. | 3 * Copyright 2010 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 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 #else | 58 #else |
| 59 static const int kFakeDeviceId = 1; | 59 static const int kFakeDeviceId = 1; |
| 60 #endif | 60 #endif |
| 61 | 61 |
| 62 static const int kOpusBandwidthNb = 4000; | 62 static const int kOpusBandwidthNb = 4000; |
| 63 static const int kOpusBandwidthMb = 6000; | 63 static const int kOpusBandwidthMb = 6000; |
| 64 static const int kOpusBandwidthWb = 8000; | 64 static const int kOpusBandwidthWb = 8000; |
| 65 static const int kOpusBandwidthSwb = 12000; | 65 static const int kOpusBandwidthSwb = 12000; |
| 66 static const int kOpusBandwidthFb = 20000; | 66 static const int kOpusBandwidthFb = 20000; |
| 67 | 67 |
| 68 static const webrtc::NetworkStatistics kNetStats = { | |
| 69 1, // uint16_t currentBufferSize; | |
| 70 2, // uint16_t preferredBufferSize; | |
| 71 true, // bool jitterPeaksFound; | |
| 72 1234, // uint16_t currentPacketLossRate; | |
| 73 567, // uint16_t currentDiscardRate; | |
| 74 8901, // uint16_t currentExpandRate; | |
| 75 234, // uint16_t currentSpeechExpandRate; | |
| 76 5678, // uint16_t currentPreemptiveRate; | |
| 77 9012, // uint16_t currentAccelerateRate; | |
| 78 3456, // uint16_t currentSecondaryDecodedRate; | |
| 79 7890, // int32_t clockDriftPPM; | |
| 80 54, // meanWaitingTimeMs; | |
| 81 32, // int medianWaitingTimeMs; | |
| 82 1, // int minWaitingTimeMs; | |
| 83 98, // int maxWaitingTimeMs; | |
| 84 7654, // int addedSamples; | |
| 85 }; // These random but non-trivial numbers are used for testing. | |
| 86 | |
| 87 #define WEBRTC_CHECK_CHANNEL(channel) \ | 68 #define WEBRTC_CHECK_CHANNEL(channel) \ |
| 88 if (channels_.find(channel) == channels_.end()) return -1; | 69 if (channels_.find(channel) == channels_.end()) return -1; |
| 89 | 70 |
| 90 #define WEBRTC_ASSERT_CHANNEL(channel) \ | 71 #define WEBRTC_ASSERT_CHANNEL(channel) \ |
| 91 RTC_DCHECK(channels_.find(channel) != channels_.end()); | 72 RTC_DCHECK(channels_.find(channel) != channels_.end()); |
| 92 | 73 |
| 93 // Verify the header extension ID, if enabled, is within the bounds specified in | 74 // Verify the header extension ID, if enabled, is within the bounds specified in |
| 94 // [RFC5285]: 1-14 inclusive. | 75 // [RFC5285]: 1-14 inclusive. |
| 95 #define WEBRTC_CHECK_HEADER_EXTENSION_ID(enable, id) \ | 76 #define WEBRTC_CHECK_HEADER_EXTENSION_ID(enable, id) \ |
| 96 do { \ | 77 do { \ |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 174 return experimental_ns_enabled_; | 155 return experimental_ns_enabled_; |
| 175 } | 156 } |
| 176 | 157 |
| 177 private: | 158 private: |
| 178 bool experimental_ns_enabled_; | 159 bool experimental_ns_enabled_; |
| 179 }; | 160 }; |
| 180 | 161 |
| 181 class FakeWebRtcVoiceEngine | 162 class FakeWebRtcVoiceEngine |
| 182 : public webrtc::VoEAudioProcessing, | 163 : public webrtc::VoEAudioProcessing, |
| 183 public webrtc::VoEBase, public webrtc::VoECodec, public webrtc::VoEDtmf, | 164 public webrtc::VoEBase, public webrtc::VoECodec, public webrtc::VoEDtmf, |
| 184 public webrtc::VoEHardware, public webrtc::VoENetEqStats, | 165 public webrtc::VoEHardware, |
| 185 public webrtc::VoENetwork, public webrtc::VoERTP_RTCP, | 166 public webrtc::VoENetwork, public webrtc::VoERTP_RTCP, |
| 186 public webrtc::VoEVideoSync, public webrtc::VoEVolumeControl { | 167 public webrtc::VoEVolumeControl { |
| 187 public: | 168 public: |
| 188 struct DtmfInfo { | 169 struct DtmfInfo { |
| 189 DtmfInfo() | 170 DtmfInfo() |
| 190 : dtmf_event_code(-1), | 171 : dtmf_event_code(-1), |
| 191 dtmf_out_of_band(false), | 172 dtmf_out_of_band(false), |
| 192 dtmf_length_ms(-1) {} | 173 dtmf_length_ms(-1) {} |
| 193 int dtmf_event_code; | 174 int dtmf_event_code; |
| 194 bool dtmf_out_of_band; | 175 bool dtmf_out_of_band; |
| 195 int dtmf_length_ms; | 176 int dtmf_length_ms; |
| 196 }; | 177 }; |
| (...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 520 channels_[channel]->send_codec = codec; | 501 channels_[channel]->send_codec = codec; |
| 521 ++num_set_send_codecs_; | 502 ++num_set_send_codecs_; |
| 522 return 0; | 503 return 0; |
| 523 } | 504 } |
| 524 WEBRTC_FUNC(GetSendCodec, (int channel, webrtc::CodecInst& codec)) { | 505 WEBRTC_FUNC(GetSendCodec, (int channel, webrtc::CodecInst& codec)) { |
| 525 WEBRTC_CHECK_CHANNEL(channel); | 506 WEBRTC_CHECK_CHANNEL(channel); |
| 526 codec = channels_[channel]->send_codec; | 507 codec = channels_[channel]->send_codec; |
| 527 return 0; | 508 return 0; |
| 528 } | 509 } |
| 529 WEBRTC_STUB(SetBitRate, (int channel, int bitrate_bps)); | 510 WEBRTC_STUB(SetBitRate, (int channel, int bitrate_bps)); |
| 530 WEBRTC_FUNC(GetRecCodec, (int channel, webrtc::CodecInst& codec)) { | 511 WEBRTC_STUB(GetRecCodec, (int channel, webrtc::CodecInst& codec)); |
| 531 WEBRTC_CHECK_CHANNEL(channel); | |
| 532 const Channel* c = channels_[channel]; | |
| 533 for (std::list<std::string>::const_iterator it_packet = c->packets.begin(); | |
| 534 it_packet != c->packets.end(); ++it_packet) { | |
| 535 int pltype; | |
| 536 if (!GetRtpPayloadType(it_packet->data(), it_packet->length(), &pltype)) { | |
| 537 continue; | |
| 538 } | |
| 539 for (std::vector<webrtc::CodecInst>::const_iterator it_codec = | |
| 540 c->recv_codecs.begin(); it_codec != c->recv_codecs.end(); | |
| 541 ++it_codec) { | |
| 542 if (it_codec->pltype == pltype) { | |
| 543 codec = *it_codec; | |
| 544 return 0; | |
| 545 } | |
| 546 } | |
| 547 } | |
| 548 return -1; | |
| 549 } | |
| 550 WEBRTC_FUNC(SetRecPayloadType, (int channel, | 512 WEBRTC_FUNC(SetRecPayloadType, (int channel, |
| 551 const webrtc::CodecInst& codec)) { | 513 const webrtc::CodecInst& codec)) { |
| 552 WEBRTC_CHECK_CHANNEL(channel); | 514 WEBRTC_CHECK_CHANNEL(channel); |
| 553 Channel* ch = channels_[channel]; | 515 Channel* ch = channels_[channel]; |
| 554 if (ch->playout) | 516 if (ch->playout) |
| 555 return -1; // Channel is in use. | 517 return -1; // Channel is in use. |
| 556 // Check if something else already has this slot. | 518 // Check if something else already has this slot. |
| 557 if (codec.pltype != -1) { | 519 if (codec.pltype != -1) { |
| 558 for (std::vector<webrtc::CodecInst>::iterator it = | 520 for (std::vector<webrtc::CodecInst>::iterator it = |
| 559 ch->recv_codecs.begin(); it != ch->recv_codecs.end(); ++it) { | 521 ch->recv_codecs.begin(); it != ch->recv_codecs.end(); ++it) { |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 718 *samples_per_sec = playout_sample_rate_; | 680 *samples_per_sec = playout_sample_rate_; |
| 719 return 0; | 681 return 0; |
| 720 } | 682 } |
| 721 WEBRTC_STUB(EnableBuiltInAEC, (bool enable)); | 683 WEBRTC_STUB(EnableBuiltInAEC, (bool enable)); |
| 722 virtual bool BuiltInAECIsAvailable() const { return false; } | 684 virtual bool BuiltInAECIsAvailable() const { return false; } |
| 723 WEBRTC_STUB(EnableBuiltInAGC, (bool enable)); | 685 WEBRTC_STUB(EnableBuiltInAGC, (bool enable)); |
| 724 virtual bool BuiltInAGCIsAvailable() const { return false; } | 686 virtual bool BuiltInAGCIsAvailable() const { return false; } |
| 725 WEBRTC_STUB(EnableBuiltInNS, (bool enable)); | 687 WEBRTC_STUB(EnableBuiltInNS, (bool enable)); |
| 726 virtual bool BuiltInNSIsAvailable() const { return false; } | 688 virtual bool BuiltInNSIsAvailable() const { return false; } |
| 727 | 689 |
| 728 // webrtc::VoENetEqStats | |
| 729 WEBRTC_FUNC(GetNetworkStatistics, (int channel, | |
| 730 webrtc::NetworkStatistics& ns)) { | |
| 731 WEBRTC_CHECK_CHANNEL(channel); | |
| 732 memcpy(&ns, &kNetStats, sizeof(webrtc::NetworkStatistics)); | |
| 733 return 0; | |
| 734 } | |
| 735 | |
| 736 WEBRTC_FUNC_CONST(GetDecodingCallStatistics, (int channel, | |
| 737 webrtc::AudioDecodingCallStats*)) { | |
| 738 WEBRTC_CHECK_CHANNEL(channel); | |
| 739 return 0; | |
| 740 } | |
| 741 | |
| 742 // webrtc::VoENetwork | 690 // webrtc::VoENetwork |
| 743 WEBRTC_FUNC(RegisterExternalTransport, (int channel, | 691 WEBRTC_FUNC(RegisterExternalTransport, (int channel, |
| 744 webrtc::Transport& transport)) { | 692 webrtc::Transport& transport)) { |
| 745 WEBRTC_CHECK_CHANNEL(channel); | 693 WEBRTC_CHECK_CHANNEL(channel); |
| 746 channels_[channel]->external_transport = true; | 694 channels_[channel]->external_transport = true; |
| 747 return 0; | 695 return 0; |
| 748 } | 696 } |
| 749 WEBRTC_FUNC(DeRegisterExternalTransport, (int channel)) { | 697 WEBRTC_FUNC(DeRegisterExternalTransport, (int channel)) { |
| 750 WEBRTC_CHECK_CHANNEL(channel); | 698 WEBRTC_CHECK_CHANNEL(channel); |
| 751 channels_[channel]->external_transport = false; | 699 channels_[channel]->external_transport = false; |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 880 redPayloadtype = channels_[channel]->red_type; | 828 redPayloadtype = channels_[channel]->red_type; |
| 881 return 0; | 829 return 0; |
| 882 } | 830 } |
| 883 WEBRTC_FUNC(SetNACKStatus, (int channel, bool enable, int maxNoPackets)) { | 831 WEBRTC_FUNC(SetNACKStatus, (int channel, bool enable, int maxNoPackets)) { |
| 884 WEBRTC_CHECK_CHANNEL(channel); | 832 WEBRTC_CHECK_CHANNEL(channel); |
| 885 channels_[channel]->nack = enable; | 833 channels_[channel]->nack = enable; |
| 886 channels_[channel]->nack_max_packets = maxNoPackets; | 834 channels_[channel]->nack_max_packets = maxNoPackets; |
| 887 return 0; | 835 return 0; |
| 888 } | 836 } |
| 889 | 837 |
| 890 // webrtc::VoEVideoSync | |
| 891 WEBRTC_STUB(GetPlayoutBufferSize, (int& bufferMs)); | |
| 892 WEBRTC_STUB(GetPlayoutTimestamp, (int channel, unsigned int& timestamp)); | |
| 893 WEBRTC_STUB(GetRtpRtcp, (int, webrtc::RtpRtcp**, webrtc::RtpReceiver**)); | |
| 894 WEBRTC_STUB(SetInitTimestamp, (int channel, unsigned int timestamp)); | |
| 895 WEBRTC_STUB(SetInitSequenceNumber, (int channel, short sequenceNumber)); | |
| 896 WEBRTC_STUB(SetMinimumPlayoutDelay, (int channel, int delayMs)); | |
| 897 WEBRTC_STUB(SetInitialPlayoutDelay, (int channel, int delay_ms)); | |
| 898 WEBRTC_STUB(GetDelayEstimate, (int channel, int* jitter_buffer_delay_ms, | |
| 899 int* playout_buffer_delay_ms)); | |
| 900 WEBRTC_STUB_CONST(GetLeastRequiredDelayMs, (int channel)); | |
| 901 | |
| 902 // webrtc::VoEVolumeControl | 838 // webrtc::VoEVolumeControl |
| 903 WEBRTC_STUB(SetSpeakerVolume, (unsigned int)); | 839 WEBRTC_STUB(SetSpeakerVolume, (unsigned int)); |
| 904 WEBRTC_STUB(GetSpeakerVolume, (unsigned int&)); | 840 WEBRTC_STUB(GetSpeakerVolume, (unsigned int&)); |
| 905 WEBRTC_STUB(SetMicVolume, (unsigned int)); | 841 WEBRTC_STUB(SetMicVolume, (unsigned int)); |
| 906 WEBRTC_STUB(GetMicVolume, (unsigned int&)); | 842 WEBRTC_STUB(GetMicVolume, (unsigned int&)); |
| 907 WEBRTC_STUB(SetInputMute, (int, bool)); | 843 WEBRTC_STUB(SetInputMute, (int, bool)); |
| 908 WEBRTC_STUB(GetInputMute, (int, bool&)); | 844 WEBRTC_STUB(GetInputMute, (int, bool&)); |
| 909 WEBRTC_STUB(GetSpeechInputLevel, (unsigned int&)); | 845 WEBRTC_STUB(GetSpeechInputLevel, (unsigned int&)); |
| 910 WEBRTC_STUB(GetSpeechOutputLevel, (int, unsigned int&)); | 846 WEBRTC_STUB(GetSpeechOutputLevel, (int, unsigned int&)); |
| 911 WEBRTC_STUB(GetSpeechInputLevelFullRange, (unsigned int&)); | 847 WEBRTC_STUB(GetSpeechInputLevelFullRange, (unsigned int&)); |
| (...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1118 int playout_sample_rate_; | 1054 int playout_sample_rate_; |
| 1119 DtmfInfo dtmf_info_; | 1055 DtmfInfo dtmf_info_; |
| 1120 FakeAudioProcessing audio_processing_; | 1056 FakeAudioProcessing audio_processing_; |
| 1121 }; | 1057 }; |
| 1122 | 1058 |
| 1123 #undef WEBRTC_CHECK_HEADER_EXTENSION_ID | 1059 #undef WEBRTC_CHECK_HEADER_EXTENSION_ID |
| 1124 | 1060 |
| 1125 } // namespace cricket | 1061 } // namespace cricket |
| 1126 | 1062 |
| 1127 #endif // TALK_SESSION_PHONE_FAKEWEBRTCVOICEENGINE_H_ | 1063 #endif // TALK_SESSION_PHONE_FAKEWEBRTCVOICEENGINE_H_ |
| OLD | NEW |