diff options
Diffstat (limited to 'chromium/third_party/libjingle/source/talk/session/media/call.h')
-rw-r--r-- | chromium/third_party/libjingle/source/talk/session/media/call.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/chromium/third_party/libjingle/source/talk/session/media/call.h b/chromium/third_party/libjingle/source/talk/session/media/call.h index efb4ea396f4..063447a7f73 100644 --- a/chromium/third_party/libjingle/source/talk/session/media/call.h +++ b/chromium/third_party/libjingle/source/talk/session/media/call.h @@ -48,6 +48,8 @@ namespace cricket { +struct AudioInfo; +class Call; class MediaSessionClient; class BaseChannel; class VoiceChannel; @@ -58,6 +60,26 @@ class DataChannel; struct CallOptions : public MediaSessionOptions { }; +// CurrentSpeakerMonitor used to have a dependency on Call. To remove this +// dependency, we create AudioSourceContext. CurrentSpeakerMonitor depends on +// AudioSourceContext. +// AudioSourceProxy acts as a proxy so that when SignalAudioMonitor +// in Call is triggered, SignalAudioMonitor in AudioSourceContext is triggered. +// Likewise, when OnMediaStreamsUpdate in Call is triggered, +// OnMediaStreamsUpdate in AudioSourceContext is triggered. +class AudioSourceProxy: public AudioSourceContext, public sigslot::has_slots<> { + public: + explicit AudioSourceProxy(Call* call); + + private: + void OnAudioMonitor(Call* call, const AudioInfo& info); + void OnMediaStreamsUpdate(Call* call, cricket::Session*, + const cricket::MediaStreams&, const cricket::MediaStreams&); + + AudioSourceContext* audio_source_context_; + Call* call_; +}; + class Call : public talk_base::MessageHandler, public sigslot::has_slots<> { public: explicit Call(MediaSessionClient* session_client); @@ -167,6 +189,8 @@ class Call : public talk_base::MessageHandler, public sigslot::has_slots<> { const ReceiveDataParams&, const talk_base::Buffer&> SignalDataReceived; + AudioSourceProxy* GetAudioSourceProxy(); + private: void OnMessage(talk_base::Message* message); void OnSessionState(BaseSession* base_session, BaseSession::State state); @@ -276,6 +300,8 @@ class Call : public talk_base::MessageHandler, public sigslot::has_slots<> { VoiceMediaInfo last_voice_media_info_; + talk_base::scoped_ptr<AudioSourceProxy> audio_source_proxy_; + friend class MediaSessionClient; }; |