EchoCancellationImpl::ProcessRenderAudio: Use float samples directly

This patch lets EchoCancellationImpl::ProcessRenderAudio ask the given
AudioBuffer for float sample data directly, instead of asking for
int16 samples and then converting manually.

Since EchoCancellationImpl::ProcessRenderAudio takes a const
AudioBuffer*, it was necessary to add some const accessors for float
data to AudioBuffer.

R=aluebs@webrtc.org, andrew@webrtc.org, bjornv@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6590 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/modules/audio_processing/audio_buffer.cc b/webrtc/modules/audio_processing/audio_buffer.cc
index b0f1eb6..35e1eb7 100644
--- a/webrtc/modules/audio_processing/audio_buffer.cc
+++ b/webrtc/modules/audio_processing/audio_buffer.cc
@@ -294,11 +294,16 @@
   return const_cast<int16_t*>(t->data(channel));
 }
 
-float* AudioBuffer::data_f(int channel) {
+const float* AudioBuffer::data_f(int channel) const {
   assert(channel >= 0 && channel < num_proc_channels_);
   return channels_->fbuf()->channel(channel);
 }
 
+float* AudioBuffer::data_f(int channel) {
+  const AudioBuffer* t = this;
+  return const_cast<float*>(t->data_f(channel));
+}
+
 const int16_t* AudioBuffer::low_pass_split_data(int channel) const {
   assert(channel >= 0 && channel < num_proc_channels_);
   return split_channels_.get() ? split_channels_->low_channel(channel)
@@ -310,12 +315,17 @@
   return const_cast<int16_t*>(t->low_pass_split_data(channel));
 }
 
-float* AudioBuffer::low_pass_split_data_f(int channel) {
+const float* AudioBuffer::low_pass_split_data_f(int channel) const {
   assert(channel >= 0 && channel < num_proc_channels_);
   return split_channels_.get() ? split_channels_->low_channel_f(channel)
                                : data_f(channel);
 }
 
+float* AudioBuffer::low_pass_split_data_f(int channel) {
+  const AudioBuffer* t = this;
+  return const_cast<float*>(t->low_pass_split_data_f(channel));
+}
+
 const int16_t* AudioBuffer::high_pass_split_data(int channel) const {
   assert(channel >= 0 && channel < num_proc_channels_);
   return split_channels_.get() ? split_channels_->high_channel(channel) : NULL;
@@ -326,12 +336,17 @@
   return const_cast<int16_t*>(t->high_pass_split_data(channel));
 }
 
-float* AudioBuffer::high_pass_split_data_f(int channel) {
+const float* AudioBuffer::high_pass_split_data_f(int channel) const {
   assert(channel >= 0 && channel < num_proc_channels_);
   return split_channels_.get() ? split_channels_->high_channel_f(channel)
                                : NULL;
 }
 
+float* AudioBuffer::high_pass_split_data_f(int channel) {
+  const AudioBuffer* t = this;
+  return const_cast<float*>(t->high_pass_split_data_f(channel));
+}
+
 const int16_t* AudioBuffer::mixed_data(int channel) const {
   assert(channel >= 0 && channel < num_mixed_channels_);