Add accessors for array of channel pointers in AudioBuffer. They are

needed as arguments to any multichannel audio processing unit.

R=andrew@webrtc.org, kwiberg@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7303 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
claguna@google.com 2014-09-25 20:52:08 +00:00
parent b38959ee0c
commit bfacaabfce
2 changed files with 44 additions and 1 deletions

View File

@ -289,6 +289,15 @@ float* AudioBuffer::data_f(int channel) {
return channels_->fbuf()->channel(channel);
}
const float* const* AudioBuffer::channels_f() const {
return channels_->fbuf_const()->channels();
}
float* const* AudioBuffer::channels_f() {
mixed_low_pass_valid_ = false;
return channels_->fbuf()->channels();
}
const int16_t* AudioBuffer::low_pass_split_data(int channel) const {
return split_channels_low_.get()
? split_channels_low_->ibuf_const()->channel(channel)
@ -315,6 +324,19 @@ float* AudioBuffer::low_pass_split_data_f(int channel) {
: data_f(channel);
}
const float* const* AudioBuffer::low_pass_split_channels_f() const {
return split_channels_low_.get()
? split_channels_low_->fbuf_const()->channels()
: channels_f();
}
float* const* AudioBuffer::low_pass_split_channels_f() {
mixed_low_pass_valid_ = false;
return split_channels_low_.get()
? split_channels_low_->fbuf()->channels()
: channels_f();
}
const int16_t* AudioBuffer::high_pass_split_data(int channel) const {
return split_channels_high_.get()
? split_channels_high_->ibuf_const()->channel(channel)
@ -339,6 +361,18 @@ float* AudioBuffer::high_pass_split_data_f(int channel) {
: NULL;
}
const float* const* AudioBuffer::high_pass_split_channels_f() const {
return split_channels_high_.get()
? split_channels_high_->fbuf_const()->channels()
: NULL;
}
float* const* AudioBuffer::high_pass_split_channels_f() {
return split_channels_high_.get()
? split_channels_high_->fbuf()->channels()
: NULL;
}
const int16_t* AudioBuffer::mixed_low_pass_data() {
// Currently only mixing stereo to mono is supported.
assert(num_proc_channels_ == 1 || num_proc_channels_ == 2);

View File

@ -63,7 +63,7 @@ class AudioBuffer {
int16_t* low_pass_split_data(int channel);
const int16_t* low_pass_split_data(int channel) const;
int16_t* high_pass_split_data(int channel);
const int16_t* high_pass_split_data(int channel) const;
const int16_t* high_pass_split_data(int channel) const;\
// Returns a pointer to the low-pass data downmixed to mono. If this data
// isn't already available it re-calculates it.
const int16_t* mixed_low_pass_data();
@ -73,11 +73,20 @@ class AudioBuffer {
// as necessary. The range of the numbers are the same as for int16_t.
float* data_f(int channel);
const float* data_f(int channel) const;
float* const* channels_f();
const float* const* channels_f() const;
float* low_pass_split_data_f(int channel);
const float* low_pass_split_data_f(int channel) const;
float* high_pass_split_data_f(int channel);
const float* high_pass_split_data_f(int channel) const;
float* const* low_pass_split_channels_f();
const float* const* low_pass_split_channels_f() const;
float* const* high_pass_split_channels_f();
const float* const* high_pass_split_channels_f() const;
const float* keyboard_data() const;
SplitFilterStates* filter_states(int channel);