| Index: talk/media/base/fakemediaengine.h
|
| diff --git a/talk/media/base/fakemediaengine.h b/talk/media/base/fakemediaengine.h
|
| index 47ec402f18ee0e08e966757404c63d5f1ee6a7e2..56986c5fb17c8c2e1436ddbc5f94824a33862d0e 100644
|
| --- a/talk/media/base/fakemediaengine.h
|
| +++ b/talk/media/base/fakemediaengine.h
|
| @@ -137,15 +137,6 @@ template <class Base> class RtpHelper : public Base {
|
| virtual bool RemoveRecvStream(uint32 ssrc) {
|
| return RemoveStreamBySsrc(&receive_streams_, ssrc);
|
| }
|
| - virtual bool MuteStream(uint32 ssrc, bool on) {
|
| - if (!HasSendStream(ssrc) && ssrc != 0)
|
| - return false;
|
| - if (on)
|
| - muted_streams_.insert(ssrc);
|
| - else
|
| - muted_streams_.erase(ssrc);
|
| - return true;
|
| - }
|
| bool IsStreamMuted(uint32 ssrc) const {
|
| bool ret = muted_streams_.find(ssrc) != muted_streams_.end();
|
| // If |ssrc = 0| check if the first send stream is muted.
|
| @@ -188,6 +179,15 @@ template <class Base> class RtpHelper : public Base {
|
| }
|
|
|
| protected:
|
| + bool MuteStream(uint32 ssrc, bool mute) {
|
| + if (!HasSendStream(ssrc) && ssrc != 0)
|
| + return false;
|
| + if (mute)
|
| + muted_streams_.insert(ssrc);
|
| + else
|
| + muted_streams_.erase(ssrc);
|
| + return true;
|
| + }
|
| bool set_sending(bool send) {
|
| sending_ = send;
|
| return true;
|
| @@ -283,6 +283,20 @@ class FakeVoiceMediaChannel : public RtpHelper<VoiceMediaChannel> {
|
| }
|
| return set_sending(flag != SEND_NOTHING);
|
| }
|
| + virtual bool SetAudioSend(uint32 ssrc, bool mute,
|
| + const AudioOptions* options,
|
| + AudioRenderer* renderer) {
|
| + if (!SetLocalRenderer(ssrc, renderer)) {
|
| + return false;
|
| + }
|
| + if (!RtpHelper<VoiceMediaChannel>::MuteStream(ssrc, mute)) {
|
| + return false;
|
| + }
|
| + if (!mute && options) {
|
| + return SetOptions(*options);
|
| + }
|
| + return true;
|
| + }
|
| virtual bool SetMaxSendBandwidth(int bps) { return true; }
|
| virtual bool AddRecvStream(const StreamParams& sp) {
|
| if (!RtpHelper<VoiceMediaChannel>::AddRecvStream(sp))
|
| @@ -316,26 +330,6 @@ class FakeVoiceMediaChannel : public RtpHelper<VoiceMediaChannel> {
|
| }
|
| return true;
|
| }
|
| - virtual bool SetLocalRenderer(uint32 ssrc, AudioRenderer* renderer) {
|
| - std::map<uint32, VoiceChannelAudioSink*>::iterator it =
|
| - local_renderers_.find(ssrc);
|
| - if (renderer) {
|
| - if (it != local_renderers_.end()) {
|
| - ASSERT(it->second->renderer() == renderer);
|
| - } else {
|
| - local_renderers_.insert(std::make_pair(
|
| - ssrc, new VoiceChannelAudioSink(renderer)));
|
| - }
|
| - } else {
|
| - if (it != local_renderers_.end()) {
|
| - delete it->second;
|
| - local_renderers_.erase(it);
|
| - } else {
|
| - return false;
|
| - }
|
| - }
|
| - return true;
|
| - }
|
|
|
| virtual bool GetActiveStreams(AudioInfo::StreamList* streams) { return true; }
|
| virtual int GetOutputLevel() { return 0; }
|
| @@ -442,6 +436,23 @@ class FakeVoiceMediaChannel : public RtpHelper<VoiceMediaChannel> {
|
| AudioRenderer* renderer_;
|
| };
|
|
|
| + bool SetLocalRenderer(uint32 ssrc, AudioRenderer* renderer) {
|
| + auto it = local_renderers_.find(ssrc);
|
| + if (renderer) {
|
| + if (it != local_renderers_.end()) {
|
| + ASSERT(it->second->renderer() == renderer);
|
| + } else {
|
| + local_renderers_.insert(std::make_pair(
|
| + ssrc, new VoiceChannelAudioSink(renderer)));
|
| + }
|
| + } else {
|
| + if (it != local_renderers_.end()) {
|
| + delete it->second;
|
| + local_renderers_.erase(it);
|
| + }
|
| + }
|
| + return true;
|
| + }
|
|
|
| FakeVoiceEngine* engine_;
|
| std::vector<AudioCodec> recv_codecs_;
|
| @@ -556,6 +567,17 @@ class FakeVideoMediaChannel : public RtpHelper<VideoMediaChannel> {
|
| }
|
|
|
| virtual bool SetSend(bool send) { return set_sending(send); }
|
| + virtual bool SetVideoSend(uint32 ssrc, bool mute,
|
| + const VideoOptions* options) {
|
| + if (!RtpHelper<VideoMediaChannel>::MuteStream(ssrc, mute)) {
|
| + return false;
|
| + }
|
| + if (!mute && options) {
|
| + return SetOptions(*options);
|
| + } else {
|
| + return true;
|
| + }
|
| + }
|
| virtual bool SetCapturer(uint32 ssrc, VideoCapturer* capturer) {
|
| capturers_[ssrc] = capturer;
|
| return true;
|
|
|