| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 42 return num_bands; | 42 return num_bands; |
| 43 } | 43 } |
| 44 | 44 |
| 45 } // namespace | 45 } // namespace |
| 46 | 46 |
| 47 AudioBuffer::AudioBuffer(size_t input_num_frames, | 47 AudioBuffer::AudioBuffer(size_t input_num_frames, |
| 48 size_t num_input_channels, | 48 size_t num_input_channels, |
| 49 size_t process_num_frames, | 49 size_t process_num_frames, |
| 50 size_t num_process_channels, | 50 size_t num_process_channels, |
| 51 size_t output_num_frames) | 51 size_t output_num_frames) |
| 52 : input_num_frames_(input_num_frames), | 52 : input_num_frames_(input_num_frames), |
| 53 num_input_channels_(num_input_channels), | 53 num_input_channels_(num_input_channels), |
| 54 proc_num_frames_(process_num_frames), | 54 proc_num_frames_(process_num_frames), |
| 55 num_proc_channels_(num_process_channels), | 55 num_proc_channels_(num_process_channels), |
| 56 output_num_frames_(output_num_frames), | 56 output_num_frames_(output_num_frames), |
| 57 num_channels_(num_process_channels), | 57 num_channels_(num_process_channels), |
| 58 num_bands_(NumBandsFromSamplesPerChannel(proc_num_frames_)), | 58 num_bands_(NumBandsFromSamplesPerChannel(proc_num_frames_)), |
| 59 num_split_frames_(rtc::CheckedDivExact(proc_num_frames_, num_bands_)), | 59 num_split_frames_(rtc::CheckedDivExact(proc_num_frames_, num_bands_)), |
| 60 mixed_low_pass_valid_(false), | 60 mixed_low_pass_valid_(false), |
| 61 reference_copied_(false), | 61 reference_copied_(false), |
| 62 activity_(AudioFrame::kVadUnknown), | 62 activity_(AudioFrame::kVadUnknown), |
| 63 keyboard_data_(NULL), | 63 keyboard_data_(nullptr), |
| 64 data_(new IFChannelBuffer(proc_num_frames_, num_proc_channels_)) { | 64 data_(new IFChannelBuffer(proc_num_frames_, num_proc_channels_)) { |
| 65 RTC_DCHECK_GT(input_num_frames_, 0); | 65 RTC_DCHECK_GT(input_num_frames_, 0); |
| 66 RTC_DCHECK_GT(proc_num_frames_, 0); | 66 RTC_DCHECK_GT(proc_num_frames_, 0); |
| 67 RTC_DCHECK_GT(output_num_frames_, 0); | 67 RTC_DCHECK_GT(output_num_frames_, 0); |
| 68 RTC_DCHECK_GT(num_input_channels_, 0); | 68 RTC_DCHECK_GT(num_input_channels_, 0); |
| 69 RTC_DCHECK_GT(num_proc_channels_, 0); | 69 RTC_DCHECK_GT(num_proc_channels_, 0); |
| 70 RTC_DCHECK_LE(num_proc_channels_, num_input_channels_); | 70 RTC_DCHECK_LE(num_proc_channels_, num_input_channels_); |
| 71 | 71 |
| 72 if (input_num_frames_ != proc_num_frames_ || | 72 if (input_num_frames_ != proc_num_frames_ || |
| 73 output_num_frames_ != proc_num_frames_) { | 73 output_num_frames_ != proc_num_frames_) { |
| 74 // Create an intermediate buffer for resampling. | 74 // Create an intermediate buffer for resampling. |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 175 } | 175 } |
| 176 } | 176 } |
| 177 | 177 |
| 178 // Upmix. | 178 // Upmix. |
| 179 for (size_t i = num_channels_; i < stream_config.num_channels(); ++i) { | 179 for (size_t i = num_channels_; i < stream_config.num_channels(); ++i) { |
| 180 memcpy(data[i], data[0], output_num_frames_ * sizeof(**data)); | 180 memcpy(data[i], data[0], output_num_frames_ * sizeof(**data)); |
| 181 } | 181 } |
| 182 } | 182 } |
| 183 | 183 |
| 184 void AudioBuffer::InitForNewData() { | 184 void AudioBuffer::InitForNewData() { |
| 185 keyboard_data_ = NULL; | 185 keyboard_data_ = nullptr; |
| 186 mixed_low_pass_valid_ = false; | 186 mixed_low_pass_valid_ = false; |
| 187 reference_copied_ = false; | 187 reference_copied_ = false; |
| 188 activity_ = AudioFrame::kVadUnknown; | 188 activity_ = AudioFrame::kVadUnknown; |
| 189 num_channels_ = num_proc_channels_; | 189 num_channels_ = num_proc_channels_; |
| 190 data_->set_num_channels(num_proc_channels_); | 190 data_->set_num_channels(num_proc_channels_); |
| 191 if (split_data_.get()) { | 191 if (split_data_.get()) { |
| 192 split_data_->set_num_channels(num_proc_channels_); | 192 split_data_->set_num_channels(num_proc_channels_); |
| 193 } | 193 } |
| 194 } | 194 } |
| 195 | 195 |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 321 DownmixToMono<int16_t, int32_t>(split_channels_const(kBand0To8kHz), | 321 DownmixToMono<int16_t, int32_t>(split_channels_const(kBand0To8kHz), |
| 322 num_split_frames_, num_channels_, | 322 num_split_frames_, num_channels_, |
| 323 mixed_low_pass_channels_->channels()[0]); | 323 mixed_low_pass_channels_->channels()[0]); |
| 324 mixed_low_pass_valid_ = true; | 324 mixed_low_pass_valid_ = true; |
| 325 } | 325 } |
| 326 return mixed_low_pass_channels_->channels()[0]; | 326 return mixed_low_pass_channels_->channels()[0]; |
| 327 } | 327 } |
| 328 | 328 |
| 329 const int16_t* AudioBuffer::low_pass_reference(int channel) const { | 329 const int16_t* AudioBuffer::low_pass_reference(int channel) const { |
| 330 if (!reference_copied_) { | 330 if (!reference_copied_) { |
| 331 return NULL; | 331 return nullptr; |
| 332 } | 332 } |
| 333 | 333 |
| 334 return low_pass_reference_channels_->channels()[channel]; | 334 return low_pass_reference_channels_->channels()[channel]; |
| 335 } | 335 } |
| 336 | 336 |
| 337 const float* AudioBuffer::keyboard_data() const { | 337 const float* AudioBuffer::keyboard_data() const { |
| 338 return keyboard_data_; | 338 return keyboard_data_; |
| 339 } | 339 } |
| 340 | 340 |
| 341 void AudioBuffer::set_activity(AudioFrame::VADActivity activity) { | 341 void AudioBuffer::set_activity(AudioFrame::VADActivity activity) { |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 467 | 467 |
| 468 void AudioBuffer::SplitIntoFrequencyBands() { | 468 void AudioBuffer::SplitIntoFrequencyBands() { |
| 469 splitting_filter_->Analysis(data_.get(), split_data_.get()); | 469 splitting_filter_->Analysis(data_.get(), split_data_.get()); |
| 470 } | 470 } |
| 471 | 471 |
| 472 void AudioBuffer::MergeFrequencyBands() { | 472 void AudioBuffer::MergeFrequencyBands() { |
| 473 splitting_filter_->Synthesis(split_data_.get(), data_.get()); | 473 splitting_filter_->Synthesis(split_data_.get(), data_.get()); |
| 474 } | 474 } |
| 475 | 475 |
| 476 } // namespace webrtc | 476 } // namespace webrtc |
| OLD | NEW |