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}
diff --git a/modules/audio_coding/acm2/audio_coding_module.cc b/modules/audio_coding/acm2/audio_coding_module.cc
index 0232f27..efef3c0 100644
--- a/modules/audio_coding/acm2/audio_coding_module.cc
+++ b/modules/audio_coding/acm2/audio_coding_module.cc
@@ -243,11 +243,27 @@
   }
 
   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) {