Correct the upmixing of mono to stereo in ACM2
This CL is a correction to the former CL that changed the remixing for surround. A bug in that CL caused the upmixing from mono to stereo to place zeros in the right channel. The unittest CL is present in https://webrtc-review.googlesource.com/c/src/+/155740 Bug: b/144458371 Change-Id: I192e587a1b083a7bb55dcac2343f8b6d3942b9ed Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159864 Reviewed-by: Sam Zackrisson <saza@webrtc.org> Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org> Commit-Queue: Per Åhgren <peah@webrtc.org> Cr-Commit-Position: refs/heads/master@{#29805}
This commit is contained in:
@ -243,11 +243,27 @@ void ReMix(const AudioFrame& input,
|
||||
}
|
||||
|
||||
const int16_t* input_data = input.data();
|
||||
size_t in_index = 0;
|
||||
size_t out_index = 0;
|
||||
|
||||
// When upmixing is needed, copy the available channels directly, and set the
|
||||
// remaining channels to zero.
|
||||
// When upmixing is needed and the input is mono copy the left channel
|
||||
// into the left and right channels, and set any remaining channels to zero.
|
||||
if (input.num_channels_ == 1 && input.num_channels_ < num_output_channels) {
|
||||
for (size_t k = 0; k < input.samples_per_channel_; ++k) {
|
||||
(*output)[out_index++] = input_data[k];
|
||||
(*output)[out_index++] = input_data[k];
|
||||
for (size_t j = 2; j < num_output_channels; ++j) {
|
||||
(*output)[out_index++] = 0;
|
||||
}
|
||||
RTC_DCHECK_EQ(out_index, (k + 1) * num_output_channels);
|
||||
}
|
||||
RTC_DCHECK_EQ(out_index, input.samples_per_channel_ * num_output_channels);
|
||||
return;
|
||||
}
|
||||
|
||||
size_t in_index = 0;
|
||||
|
||||
// When upmixing is needed and the output is surround, copy the available
|
||||
// channels directly, and set the remaining channels to zero.
|
||||
if (input.num_channels_ < num_output_channels) {
|
||||
for (size_t k = 0; k < input.samples_per_channel_; ++k) {
|
||||
for (size_t j = 0; j < input.num_channels_; ++j) {
|
||||
|
||||
Reference in New Issue
Block a user