1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- /*
- * Copyright (c) 2019 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 MODULES_AUDIO_PROCESSING_LEVEL_ESTIMATOR_H_
- #define MODULES_AUDIO_PROCESSING_LEVEL_ESTIMATOR_H_
- #include "modules/audio_processing/audio_buffer.h"
- #include "modules/audio_processing/rms_level.h"
- namespace webrtc {
- // An estimation component used to retrieve level metrics.
- class LevelEstimator {
- public:
- LevelEstimator();
- ~LevelEstimator();
- LevelEstimator(LevelEstimator&) = delete;
- LevelEstimator& operator=(LevelEstimator&) = delete;
- void ProcessStream(const AudioBuffer& audio);
- // Returns the root mean square (RMS) level in dBFs (decibels from digital
- // full-scale), or alternately dBov. It is computed over all primary stream
- // frames since the last call to RMS(). The returned value is positive but
- // should be interpreted as negative. It is constrained to [0, 127].
- //
- // The computation follows: https://tools.ietf.org/html/rfc6465
- // with the intent that it can provide the RTP audio level indication.
- //
- // Frames passed to ProcessStream() with an |_energy| of zero are considered
- // to have been muted. The RMS of the frame will be interpreted as -127.
- int RMS() { return rms_.Average(); }
- private:
- RmsLevel rms_;
- };
- } // namespace webrtc
- #endif // MODULES_AUDIO_PROCESSING_LEVEL_ESTIMATOR_H_
|