Chromium Code Reviews| 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); |
| }; |