Index: media/audio/audio_power_monitor.h |
diff --git a/media/audio/audio_power_monitor.h b/media/audio/audio_power_monitor.h |
index b65fb13f495c852aac2b47b77f32767b03d656a7..333aca2f006f136b816c5791c8e3cb16828bfd59 100644 |
--- a/media/audio/audio_power_monitor.h |
+++ b/media/audio/audio_power_monitor.h |
@@ -24,7 +24,6 @@ |
// undetermined/unbounded amount of run-time. |
namespace base { |
-class MessageLoop; |
class TimeDelta; |
} |
@@ -34,31 +33,30 @@ class AudioBus; |
class MEDIA_EXPORT AudioPowerMonitor { |
public: |
- // Reports power level in terms of dBFS (see zero_power() and max_power() |
- // below). |clipped| is true if any *one* sample exceeded maximum amplitude |
- // since the last invocation. |
- typedef base::Callback<void(float power_dbfs, bool clipped)> |
- PowerMeasurementCallback; |
- |
// |sample_rate| is the audio signal sample rate (Hz). |time_constant| |
// characterizes how samples are averaged over time to determine the power |
// level; and is the amount of time it takes a zero power level to increase to |
- // ~63.2% of maximum given a step input signal. |measurement_period| is the |
- // time length of signal to analyze before invoking the callback to report the |
- // current power level. |message_loop| is where the |callback| task will be |
- // posted. |
- AudioPowerMonitor(int sample_rate, |
- const base::TimeDelta& time_constant, |
- const base::TimeDelta& measurement_period, |
- base::MessageLoop* message_loop, |
- const PowerMeasurementCallback& callback); |
+ // ~63.2% of maximum given a step input signal. |
+ AudioPowerMonitor(int sample_rate, const base::TimeDelta& time_constant); |
~AudioPowerMonitor(); |
+ // Reset power monitor to initial state (zero power level). |
+ void Reset(); |
+ |
// Scan more |frames| of audio data from |buffer|. It is safe to call this |
// from a real-time priority thread. |
void Scan(const AudioBus& buffer, int frames); |
+ // Returns the current power level in terms of dBFS (see zero_power() and |
DaleCurtis
2013/08/12 18:23:29
I recommend you also read clipped and power togeth
miu
2013/08/12 19:41:46
Done.
|
+ // max_power() below). It is safe to call this method from any thread. |
+ float ReadCurrentPower() const; |
+ |
+ // Returns true if any *one* sample scanned exceeded maximum amplitude since |
+ // this method's last invocation. It is safe to call this method from any |
+ // thread. |
+ bool TestForClippingAndClear(); |
+ |
// dBFS value corresponding to zero power in the audio signal. |
static float zero_power() { return -std::numeric_limits<float>::infinity(); } |
@@ -70,23 +68,10 @@ class MEDIA_EXPORT AudioPowerMonitor { |
// |sample_rate| and |time_constant|. |
const float sample_weight_; |
- // Number of audio frames to be scanned before reporting the current power |
- // level via callback, as computed from |sample_rate| and |
- // |measurement_period|. |
- const int num_frames_per_callback_; |
- |
- // MessageLoop and callback used to notify of the current power level. |
- base::MessageLoop* const message_loop_; |
- const PowerMeasurementCallback power_level_callback_; |
- |
- // Accumulated results over one or more calls to Scan(). |
+ // Accumulated results over one or more calls to Scan(). Note: These are |
+ // read/written by multiple threads without locking, by design. |
float average_power_; |
- bool clipped_since_last_notification_; |
- int frames_since_last_notification_; |
- |
- // Keep track of last reported results to forgo making redundant callbacks. |
- float last_reported_power_; |
- bool last_reported_clipped_; |
+ bool has_clipped_; |
DISALLOW_COPY_AND_ASSIGN(AudioPowerMonitor); |
}; |