1 /* 2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. 3 * 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 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 #ifndef AUDIO_MOCK_VOE_CHANNEL_PROXY_H_ 12 #define AUDIO_MOCK_VOE_CHANNEL_PROXY_H_ 13 14 #include <map> 15 #include <memory> 16 #include <string> 17 #include <utility> 18 #include <vector> 19 20 #include "api/test/mock_frame_encryptor.h" 21 #include "audio/channel_receive.h" 22 #include "audio/channel_send.h" 23 #include "modules/rtp_rtcp/source/rtp_packet_received.h" 24 #include "test/gmock.h" 25 26 namespace webrtc { 27 namespace test { 28 29 class MockChannelReceive : public voe::ChannelReceiveInterface { 30 public: 31 MOCK_METHOD2(SetNACKStatus, void(bool enable, int max_packets)); 32 MOCK_METHOD1(RegisterReceiverCongestionControlObjects, 33 void(PacketRouter* packet_router)); 34 MOCK_METHOD0(ResetReceiverCongestionControlObjects, void()); 35 MOCK_CONST_METHOD0(GetRTCPStatistics, CallReceiveStatistics()); 36 MOCK_CONST_METHOD0(GetNetworkStatistics, NetworkStatistics()); 37 MOCK_CONST_METHOD0(GetDecodingCallStatistics, AudioDecodingCallStats()); 38 MOCK_CONST_METHOD0(GetSpeechOutputLevelFullRange, int()); 39 MOCK_CONST_METHOD0(GetTotalOutputEnergy, double()); 40 MOCK_CONST_METHOD0(GetTotalOutputDuration, double()); 41 MOCK_CONST_METHOD0(GetDelayEstimate, uint32_t()); 42 MOCK_METHOD1(SetSink, void(AudioSinkInterface* sink)); 43 MOCK_METHOD1(OnRtpPacket, void(const RtpPacketReceived& packet)); 44 MOCK_METHOD2(ReceivedRTCPPacket, void(const uint8_t* packet, size_t length)); 45 MOCK_METHOD1(SetChannelOutputVolumeScaling, void(float scaling)); 46 MOCK_METHOD2(GetAudioFrameWithInfo, 47 AudioMixer::Source::AudioFrameInfo(int sample_rate_hz, 48 AudioFrame* audio_frame)); 49 MOCK_CONST_METHOD0(PreferredSampleRate, int()); 50 MOCK_METHOD1(SetAssociatedSendChannel, 51 void(const voe::ChannelSendInterface* send_channel)); 52 MOCK_CONST_METHOD2(GetPlayoutRtpTimestamp, 53 bool(uint32_t* rtp_timestamp, int64_t* time_ms)); 54 MOCK_METHOD2(SetEstimatedPlayoutNtpTimestampMs, 55 void(int64_t ntp_timestamp_ms, int64_t time_ms)); 56 MOCK_CONST_METHOD1(GetCurrentEstimatedPlayoutNtpTimestampMs, 57 absl::optional<int64_t>(int64_t now_ms)); 58 MOCK_CONST_METHOD0(GetSyncInfo, absl::optional<Syncable::Info>()); 59 MOCK_METHOD1(SetMinimumPlayoutDelay, void(int delay_ms)); 60 MOCK_METHOD1(SetBaseMinimumPlayoutDelayMs, bool(int delay_ms)); 61 MOCK_CONST_METHOD0(GetBaseMinimumPlayoutDelayMs, int()); 62 MOCK_CONST_METHOD0(GetReceiveCodec, 63 absl::optional<std::pair<int, SdpAudioFormat>>()); 64 MOCK_METHOD1(SetReceiveCodecs, 65 void(const std::map<int, SdpAudioFormat>& codecs)); 66 MOCK_CONST_METHOD0(GetSources, std::vector<RtpSource>()); 67 MOCK_METHOD0(StartPlayout, void()); 68 MOCK_METHOD0(StopPlayout, void()); 69 MOCK_METHOD1(SetDepacketizerToDecoderFrameTransformer, 70 void(rtc::scoped_refptr<webrtc::FrameTransformerInterface> 71 frame_transformer)); 72 }; 73 74 class MockChannelSend : public voe::ChannelSendInterface { 75 public: 76 // GMock doesn't like move-only types, like std::unique_ptr. SetEncoder(int payload_type,std::unique_ptr<AudioEncoder> encoder)77 virtual void SetEncoder(int payload_type, 78 std::unique_ptr<AudioEncoder> encoder) { 79 return SetEncoderForMock(payload_type, &encoder); 80 } 81 MOCK_METHOD2(SetEncoderForMock, 82 void(int payload_type, std::unique_ptr<AudioEncoder>* encoder)); 83 MOCK_METHOD1( 84 ModifyEncoder, 85 void(rtc::FunctionView<void(std::unique_ptr<AudioEncoder>*)> modifier)); 86 MOCK_METHOD1(CallEncoder, 87 void(rtc::FunctionView<void(AudioEncoder*)> modifier)); 88 MOCK_METHOD1(SetRTCP_CNAME, void(absl::string_view c_name)); 89 MOCK_METHOD2(SetSendAudioLevelIndicationStatus, void(bool enable, int id)); 90 MOCK_METHOD2(RegisterSenderCongestionControlObjects, 91 void(RtpTransportControllerSendInterface* transport, 92 RtcpBandwidthObserver* bandwidth_observer)); 93 MOCK_METHOD0(ResetSenderCongestionControlObjects, void()); 94 MOCK_CONST_METHOD0(GetRTCPStatistics, CallSendStatistics()); 95 MOCK_CONST_METHOD0(GetRemoteRTCPReportBlocks, std::vector<ReportBlock>()); 96 MOCK_CONST_METHOD0(GetANAStatistics, ANAStats()); 97 MOCK_METHOD2(RegisterCngPayloadType, 98 void(int payload_type, int payload_frequency)); 99 MOCK_METHOD2(SetSendTelephoneEventPayloadType, 100 void(int payload_type, int payload_frequency)); 101 MOCK_METHOD2(SendTelephoneEventOutband, bool(int event, int duration_ms)); 102 MOCK_METHOD1(OnBitrateAllocation, void(BitrateAllocationUpdate update)); 103 MOCK_METHOD1(SetInputMute, void(bool muted)); 104 MOCK_METHOD2(ReceivedRTCPPacket, void(const uint8_t* packet, size_t length)); 105 // GMock doesn't like move-only types, like std::unique_ptr. ProcessAndEncodeAudio(std::unique_ptr<AudioFrame> audio_frame)106 virtual void ProcessAndEncodeAudio(std::unique_ptr<AudioFrame> audio_frame) { 107 ProcessAndEncodeAudioForMock(&audio_frame); 108 } 109 MOCK_METHOD1(ProcessAndEncodeAudioForMock, 110 void(std::unique_ptr<AudioFrame>* audio_frame)); 111 MOCK_METHOD1(SetTransportOverhead, 112 void(size_t transport_overhead_per_packet)); 113 MOCK_CONST_METHOD0(GetRtpRtcp, RtpRtcp*()); 114 MOCK_CONST_METHOD0(GetBitrate, int()); 115 MOCK_METHOD1(OnTwccBasedUplinkPacketLossRate, void(float packet_loss_rate)); 116 MOCK_METHOD1(OnRecoverableUplinkPacketLossRate, 117 void(float recoverable_packet_loss_rate)); 118 MOCK_CONST_METHOD0(GetRTT, int64_t()); 119 MOCK_METHOD0(StartSend, void()); 120 MOCK_METHOD0(StopSend, void()); 121 MOCK_METHOD1( 122 SetFrameEncryptor, 123 void(rtc::scoped_refptr<FrameEncryptorInterface> frame_encryptor)); 124 MOCK_METHOD1(SetEncoderToPacketizerFrameTransformer, 125 void(rtc::scoped_refptr<webrtc::FrameTransformerInterface> 126 frame_transformer)); 127 }; 128 } // namespace test 129 } // namespace webrtc 130 131 #endif // AUDIO_MOCK_VOE_CHANNEL_PROXY_H_ 132