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 WEBRTC_VOICE_ENGINE_CHANNEL_PROXY_H_ 12 #define WEBRTC_VOICE_ENGINE_CHANNEL_PROXY_H_ 13 14 #include "webrtc/base/thread_checker.h" 15 #include "webrtc/voice_engine/channel_manager.h" 16 #include "webrtc/voice_engine/include/voe_rtp_rtcp.h" 17 18 #include <string> 19 #include <vector> 20 21 namespace webrtc { 22 23 class AudioSinkInterface; 24 class PacketRouter; 25 class RtpPacketSender; 26 class TransportFeedbackObserver; 27 28 namespace voe { 29 30 class Channel; 31 32 // This class provides the "view" of a voe::Channel that we need to implement 33 // webrtc::AudioSendStream and webrtc::AudioReceiveStream. It serves two 34 // purposes: 35 // 1. Allow mocking just the interfaces used, instead of the entire 36 // voe::Channel class. 37 // 2. Provide a refined interface for the stream classes, including assumptions 38 // on return values and input adaptation. 39 class ChannelProxy { 40 public: 41 ChannelProxy(); 42 explicit ChannelProxy(const ChannelOwner& channel_owner); 43 virtual ~ChannelProxy(); 44 45 virtual void SetRTCPStatus(bool enable); 46 virtual void SetLocalSSRC(uint32_t ssrc); 47 virtual void SetRTCP_CNAME(const std::string& c_name); 48 virtual void SetSendAbsoluteSenderTimeStatus(bool enable, int id); 49 virtual void SetSendAudioLevelIndicationStatus(bool enable, int id); 50 virtual void EnableSendTransportSequenceNumber(int id); 51 virtual void SetReceiveAbsoluteSenderTimeStatus(bool enable, int id); 52 virtual void SetReceiveAudioLevelIndicationStatus(bool enable, int id); 53 virtual void SetCongestionControlObjects( 54 RtpPacketSender* rtp_packet_sender, 55 TransportFeedbackObserver* transport_feedback_observer, 56 PacketRouter* packet_router); 57 58 virtual CallStatistics GetRTCPStatistics() const; 59 virtual std::vector<ReportBlock> GetRemoteRTCPReportBlocks() const; 60 virtual NetworkStatistics GetNetworkStatistics() const; 61 virtual AudioDecodingCallStats GetDecodingCallStatistics() const; 62 virtual int32_t GetSpeechOutputLevelFullRange() const; 63 virtual uint32_t GetDelayEstimate() const; 64 65 virtual bool SetSendTelephoneEventPayloadType(int payload_type); 66 virtual bool SendTelephoneEventOutband(uint8_t event, uint32_t duration_ms); 67 68 virtual void SetSink(rtc::scoped_ptr<AudioSinkInterface> sink); 69 70 private: 71 Channel* channel() const; 72 73 rtc::ThreadChecker thread_checker_; 74 ChannelOwner channel_owner_; 75 }; 76 } // namespace voe 77 } // namespace webrtc 78 79 #endif // WEBRTC_VOICE_ENGINE_CHANNEL_PROXY_H_ 80