1470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/* 2470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. 3470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 4470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Use of this source code is governed by a BSD-style license 5470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * that can be found in the LICENSE file in the root of the source 6470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * tree. An additional intellectual property rights grant can be found 7470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * in the file PATENTS. All contributing project authors may 8470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * be found in the AUTHORS file in the root of the source tree. 9470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com */ 10470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 11470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#ifndef WEBRTC_VOICE_ENGINE_LEVEL_INDICATOR_H 12470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#define WEBRTC_VOICE_ENGINE_LEVEL_INDICATOR_H 13470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 14956aa7e0874f2e08c335a82a2c32f400fac8b031pbos@webrtc.org#include "webrtc/typedefs.h" 15956aa7e0874f2e08c335a82a2c32f400fac8b031pbos@webrtc.org#include "webrtc/voice_engine/voice_engine_defines.h" 16470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 17470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comnamespace webrtc { 18470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 19470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comclass AudioFrame; 20d108a46206b66d7427ed11dc1de5b99faad1a824henrika@webrtc.orgclass CriticalSectionWrapper; 21470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comnamespace voe { 22470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 23470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comclass AudioLevel 24470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com{ 25470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.compublic: 26470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com AudioLevel(); 27470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com virtual ~AudioLevel(); 28470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 29d108a46206b66d7427ed11dc1de5b99faad1a824henrika@webrtc.org // Called on "API thread(s)" from APIs like VoEBase::CreateChannel(), 30d108a46206b66d7427ed11dc1de5b99faad1a824henrika@webrtc.org // VoEBase::StopSend(), VoEVolumeControl::GetSpeechOutputLevel(). 316141e13873d0fdea626de08dfec2efa2c9171c76pbos@webrtc.org int8_t Level() const; 326141e13873d0fdea626de08dfec2efa2c9171c76pbos@webrtc.org int16_t LevelFullRange() const; 33470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com void Clear(); 34470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 35d108a46206b66d7427ed11dc1de5b99faad1a824henrika@webrtc.org // Called on a native capture audio thread (platform dependent) from the 36d108a46206b66d7427ed11dc1de5b99faad1a824henrika@webrtc.org // AudioTransport::RecordedDataIsAvailable() callback. 37d108a46206b66d7427ed11dc1de5b99faad1a824henrika@webrtc.org // In Chrome, this method is called on the AudioInputDevice thread. 38d108a46206b66d7427ed11dc1de5b99faad1a824henrika@webrtc.org void ComputeLevel(const AudioFrame& audioFrame); 39d108a46206b66d7427ed11dc1de5b99faad1a824henrika@webrtc.org 40470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comprivate: 41470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com enum { kUpdateFrequency = 10}; 42470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 43d108a46206b66d7427ed11dc1de5b99faad1a824henrika@webrtc.org CriticalSectionWrapper& _critSect; 44d108a46206b66d7427ed11dc1de5b99faad1a824henrika@webrtc.org 456141e13873d0fdea626de08dfec2efa2c9171c76pbos@webrtc.org int16_t _absMax; 466141e13873d0fdea626de08dfec2efa2c9171c76pbos@webrtc.org int16_t _count; 476141e13873d0fdea626de08dfec2efa2c9171c76pbos@webrtc.org int8_t _currentLevel; 486141e13873d0fdea626de08dfec2efa2c9171c76pbos@webrtc.org int16_t _currentLevelFullRange; 49470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com}; 50470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 51470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com} // namespace voe 52470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 53470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com} // namespace webrtc 54470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 55470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#endif // WEBRTC_VOICE_ENGINE_LEVEL_INDICATOR_H 56