1 | /* |
---|---|
2 | Copyright 2018 Google Inc. All Rights Reserved. |
3 | |
4 | Licensed under the Apache License, Version 2.0 (the "License"); |
5 | you may not use this file except in compliance with the License. |
6 | You may obtain a copy of the License at |
7 | |
8 | http://www.apache.org/licenses/LICENSE-2.0 |
9 | |
10 | Unless required by applicable law or agreed to in writing, software |
11 | distributed under the License is distributed on an "AS-IS" BASIS, |
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
13 | See the License for the specific language governing permissions and |
14 | limitations under the License. |
15 | */ |
16 | |
17 | #include "utils/sum_and_difference_processor.h" |
18 | |
19 | #include "base/constants_and_types.h" |
20 | #include "base/logging.h" |
21 | |
22 | |
23 | namespace vraudio { |
24 | |
25 | SumAndDifferenceProcessor::SumAndDifferenceProcessor(size_t num_frames) |
26 | : temp_buffer_(kNumMonoChannels, num_frames) {} |
27 | |
28 | void SumAndDifferenceProcessor::Process(AudioBuffer* stereo_buffer) { |
29 | |
30 | DCHECK_EQ(stereo_buffer->num_channels(), kNumStereoChannels); |
31 | AudioBuffer::Channel* temp_channel = &temp_buffer_[0]; |
32 | // channel_1' = channel_1 + channel_2; |
33 | // channel_2' = channel_1 - channel_2; |
34 | *temp_channel = (*stereo_buffer)[0]; |
35 | *temp_channel -= (*stereo_buffer)[1]; |
36 | (*stereo_buffer)[0] += (*stereo_buffer)[1]; |
37 | (*stereo_buffer)[1] = *temp_channel; |
38 | } |
39 | |
40 | } // namespace vraudio |
41 |