/* * Copyright 2004 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ #ifndef WEBRTC_PC_AUDIOMONITOR_H_ #define WEBRTC_PC_AUDIOMONITOR_H_ #include #include #include "webrtc/base/sigslot.h" #include "webrtc/base/thread.h" #include "webrtc/p2p/base/port.h" namespace cricket { class VoiceChannel; struct AudioInfo { int input_level; int output_level; typedef std::vector > StreamList; StreamList active_streams; // ssrcs contributing to output_level }; class AudioMonitor : public rtc::MessageHandler, public sigslot::has_slots<> { public: AudioMonitor(VoiceChannel* voice_channel, rtc::Thread *monitor_thread); ~AudioMonitor(); void Start(int cms); void Stop(); VoiceChannel* voice_channel(); rtc::Thread *monitor_thread(); sigslot::signal2 SignalUpdate; protected: void OnMessage(rtc::Message *message); void PollVoiceChannel(); AudioInfo audio_info_; VoiceChannel* voice_channel_; rtc::Thread* monitoring_thread_; rtc::CriticalSection crit_; uint32_t rate_; bool monitoring_; }; } // namespace cricket #endif // WEBRTC_PC_AUDIOMONITOR_H_