Remove an optimization that's no longer worth the extra complexity it causes
The data_ optimization was a way to operate on the data directly instead of copying it, applicable in the mono, non-float case. Since a few audio_processing steps are already using floats (with more hopefully to come), we don't end up benefiting from the optimization anyway, so we might as well remove it. BUG= R=aluebs@webrtc.org, bjornv@webrtc.org Review URL: https://webrtc-codereview.appspot.com/15539004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@6307 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
parent
34a08b4fb8
commit
c0035a67a1
@ -159,7 +159,6 @@ AudioBuffer::AudioBuffer(int input_samples_per_channel,
|
|||||||
num_mixed_low_pass_channels_(0),
|
num_mixed_low_pass_channels_(0),
|
||||||
reference_copied_(false),
|
reference_copied_(false),
|
||||||
activity_(AudioFrame::kVadUnknown),
|
activity_(AudioFrame::kVadUnknown),
|
||||||
data_(NULL),
|
|
||||||
keyboard_data_(NULL),
|
keyboard_data_(NULL),
|
||||||
channels_(new IFChannelBuffer(proc_samples_per_channel_,
|
channels_(new IFChannelBuffer(proc_samples_per_channel_,
|
||||||
num_proc_channels_)) {
|
num_proc_channels_)) {
|
||||||
@ -278,7 +277,6 @@ void AudioBuffer::CopyTo(int samples_per_channel,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void AudioBuffer::InitForNewData() {
|
void AudioBuffer::InitForNewData() {
|
||||||
data_ = NULL;
|
|
||||||
keyboard_data_ = NULL;
|
keyboard_data_ = NULL;
|
||||||
num_mixed_channels_ = 0;
|
num_mixed_channels_ = 0;
|
||||||
num_mixed_low_pass_channels_ = 0;
|
num_mixed_low_pass_channels_ = 0;
|
||||||
@ -288,11 +286,6 @@ void AudioBuffer::InitForNewData() {
|
|||||||
|
|
||||||
const int16_t* AudioBuffer::data(int channel) const {
|
const int16_t* AudioBuffer::data(int channel) const {
|
||||||
assert(channel >= 0 && channel < num_proc_channels_);
|
assert(channel >= 0 && channel < num_proc_channels_);
|
||||||
if (data_ != NULL) {
|
|
||||||
assert(channel == 0 && num_proc_channels_ == 1);
|
|
||||||
return data_;
|
|
||||||
}
|
|
||||||
|
|
||||||
return channels_->ibuf()->channel(channel);
|
return channels_->ibuf()->channel(channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -303,14 +296,6 @@ int16_t* AudioBuffer::data(int channel) {
|
|||||||
|
|
||||||
float* AudioBuffer::data_f(int channel) {
|
float* AudioBuffer::data_f(int channel) {
|
||||||
assert(channel >= 0 && channel < num_proc_channels_);
|
assert(channel >= 0 && channel < num_proc_channels_);
|
||||||
if (data_ != NULL) {
|
|
||||||
// Need to make a copy of the data instead of just pointing to it, since
|
|
||||||
// we're about to convert it to float.
|
|
||||||
assert(channel == 0 && num_proc_channels_ == 1);
|
|
||||||
memcpy(channels_->ibuf()->channel(0), data_,
|
|
||||||
sizeof(*data_) * proc_samples_per_channel_);
|
|
||||||
data_ = NULL;
|
|
||||||
}
|
|
||||||
return channels_->fbuf()->channel(channel);
|
return channels_->fbuf()->channel(channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -418,12 +403,6 @@ void AudioBuffer::DeinterleaveFrom(AudioFrame* frame) {
|
|||||||
InitForNewData();
|
InitForNewData();
|
||||||
activity_ = frame->vad_activity_;
|
activity_ = frame->vad_activity_;
|
||||||
|
|
||||||
if (num_proc_channels_ == 1) {
|
|
||||||
// We can get away with a pointer assignment in this case.
|
|
||||||
data_ = frame->data_;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
int16_t* interleaved = frame->data_;
|
int16_t* interleaved = frame->data_;
|
||||||
for (int i = 0; i < num_proc_channels_; i++) {
|
for (int i = 0; i < num_proc_channels_; i++) {
|
||||||
int16_t* deinterleaved = channels_->ibuf()->channel(i);
|
int16_t* deinterleaved = channels_->ibuf()->channel(i);
|
||||||
@ -446,12 +425,6 @@ void AudioBuffer::InterleaveTo(AudioFrame* frame, bool data_changed) const {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data_) {
|
|
||||||
assert(num_proc_channels_ == 1);
|
|
||||||
assert(data_ == frame->data_);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
int16_t* interleaved = frame->data_;
|
int16_t* interleaved = frame->data_;
|
||||||
for (int i = 0; i < num_proc_channels_; i++) {
|
for (int i = 0; i < num_proc_channels_; i++) {
|
||||||
int16_t* deinterleaved = channels_->ibuf()->channel(i);
|
int16_t* deinterleaved = channels_->ibuf()->channel(i);
|
||||||
|
@ -113,11 +113,6 @@ class AudioBuffer {
|
|||||||
bool reference_copied_;
|
bool reference_copied_;
|
||||||
AudioFrame::VADActivity activity_;
|
AudioFrame::VADActivity activity_;
|
||||||
|
|
||||||
// If non-null, use this instead of channels_->channel(0). This is an
|
|
||||||
// optimization for the case num_proc_channels_ == 1 that allows us to point
|
|
||||||
// to the data instead of copying it.
|
|
||||||
int16_t* data_;
|
|
||||||
|
|
||||||
const float* keyboard_data_;
|
const float* keyboard_data_;
|
||||||
scoped_ptr<IFChannelBuffer> channels_;
|
scoped_ptr<IFChannelBuffer> channels_;
|
||||||
scoped_ptr<SplitChannelBuffer> split_channels_;
|
scoped_ptr<SplitChannelBuffer> split_channels_;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user