Revert "Revert "Audio processing: Feed each processing step its choice
of int or float data"

This reverts commit 6142.

R=kwiberg@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/17519004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6172 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/modules/audio_processing/audio_buffer.h b/webrtc/modules/audio_processing/audio_buffer.h
index c05ffc9..83c931d 100644
--- a/webrtc/modules/audio_processing/audio_buffer.h
+++ b/webrtc/modules/audio_processing/audio_buffer.h
@@ -24,6 +24,7 @@
 
 class PushSincResampler;
 class SplitChannelBuffer;
+class IFChannelBuffer;
 
 struct SplitFilterStates {
   SplitFilterStates() {
@@ -64,6 +65,13 @@
   const int16_t* mixed_data(int channel) const;
   const int16_t* mixed_low_pass_data(int channel) const;
   const int16_t* low_pass_reference(int channel) const;
+
+  // Float versions of the accessors, with automatic conversion back and forth
+  // as necessary. The range of the numbers are the same as for int16_t.
+  float* data_f(int channel);
+  float* low_pass_split_data_f(int channel);
+  float* high_pass_split_data_f(int channel);
+
   const float* keyboard_data() const;
 
   SplitFilterStates* filter_states(int channel);
@@ -111,7 +119,7 @@
   int16_t* data_;
 
   const float* keyboard_data_;
-  scoped_ptr<ChannelBuffer<int16_t> > channels_;
+  scoped_ptr<IFChannelBuffer> channels_;
   scoped_ptr<SplitChannelBuffer> split_channels_;
   scoped_ptr<SplitFilterStates[]> filter_states_;
   scoped_ptr<ChannelBuffer<int16_t> > mixed_channels_;