Remove AudioFrameOperations::Add, ApplyHalfGain and Scale.

These methods are unused.

Bug: none
Change-Id: If1499c7c0bc925c2504b7a1318b2d7c4fc4240b1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/349500
Reviewed-by: Per Ã…hgren <peah@webrtc.org>
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42214}
diff --git a/audio/utility/audio_frame_operations.cc b/audio/utility/audio_frame_operations.cc
index 23cc645..c4582a4 100644
--- a/audio/utility/audio_frame_operations.cc
+++ b/audio/utility/audio_frame_operations.cc
@@ -29,48 +29,6 @@
 
 }  // namespace
 
-void AudioFrameOperations::Add(const AudioFrame& frame_to_add,
-                               AudioFrame* result_frame) {
-  // Sanity check.
-  RTC_DCHECK(result_frame);
-  RTC_DCHECK_GT(result_frame->num_channels_, 0);
-  RTC_DCHECK_EQ(result_frame->num_channels_, frame_to_add.num_channels_);
-
-  bool no_previous_data = result_frame->muted();
-  if (result_frame->samples_per_channel_ != frame_to_add.samples_per_channel_) {
-    // Special case we have no data to start with.
-    RTC_DCHECK_EQ(result_frame->samples_per_channel_, 0);
-    result_frame->samples_per_channel_ = frame_to_add.samples_per_channel_;
-    no_previous_data = true;
-  }
-
-  if (result_frame->vad_activity_ == AudioFrame::kVadActive ||
-      frame_to_add.vad_activity_ == AudioFrame::kVadActive) {
-    result_frame->vad_activity_ = AudioFrame::kVadActive;
-  } else if (result_frame->vad_activity_ == AudioFrame::kVadUnknown ||
-             frame_to_add.vad_activity_ == AudioFrame::kVadUnknown) {
-    result_frame->vad_activity_ = AudioFrame::kVadUnknown;
-  }
-
-  if (result_frame->speech_type_ != frame_to_add.speech_type_)
-    result_frame->speech_type_ = AudioFrame::kUndefined;
-
-  if (!frame_to_add.muted()) {
-    auto in_data = frame_to_add.data_view();
-    auto out_data = result_frame->mutable_data(
-        frame_to_add.samples_per_channel_, frame_to_add.num_channels_);
-    if (no_previous_data) {
-      std::copy(in_data.begin(), in_data.end(), out_data.data());
-    } else {
-      for (size_t i = 0; i < in_data.size(); ++i) {
-        const int32_t wrap_guard = static_cast<int32_t>(out_data[i]) +
-                                   static_cast<int32_t>(in_data[i]);
-        out_data[i] = rtc::saturated_cast<int16_t>(wrap_guard);
-      }
-    }
-  }
-}
-
 void AudioFrameOperations::QuadToStereo(rtc::ArrayView<const int16_t> src_audio,
                                         size_t samples_per_channel,
                                         rtc::ArrayView<int16_t> dst_audio) {
@@ -240,35 +198,6 @@
   Mute(frame, true, true);
 }
 
-void AudioFrameOperations::ApplyHalfGain(AudioFrame* frame) {
-  RTC_DCHECK(frame);
-  RTC_DCHECK_GT(frame->num_channels_, 0);
-  if (frame->num_channels_ < 1 || frame->muted()) {
-    return;
-  }
-
-  int16_t* frame_data = frame->mutable_data();
-  for (size_t i = 0; i < frame->samples_per_channel_ * frame->num_channels_;
-       i++) {
-    frame_data[i] = frame_data[i] >> 1;
-  }
-}
-
-int AudioFrameOperations::Scale(float left, float right, AudioFrame* frame) {
-  if (frame->num_channels_ != 2) {
-    return -1;
-  } else if (frame->muted()) {
-    return 0;
-  }
-
-  int16_t* frame_data = frame->mutable_data();
-  for (size_t i = 0; i < frame->samples_per_channel_; i++) {
-    frame_data[2 * i] = static_cast<int16_t>(left * frame_data[2 * i]);
-    frame_data[2 * i + 1] = static_cast<int16_t>(right * frame_data[2 * i + 1]);
-  }
-  return 0;
-}
-
 int AudioFrameOperations::ScaleWithSat(float scale, AudioFrame* frame) {
   if (frame->muted()) {
     return 0;
diff --git a/audio/utility/audio_frame_operations.h b/audio/utility/audio_frame_operations.h
index 7b076e1..3d1e996 100644
--- a/audio/utility/audio_frame_operations.h
+++ b/audio/utility/audio_frame_operations.h
@@ -25,15 +25,6 @@
 // than a class.
 class AudioFrameOperations {
  public:
-  // Add samples in `frame_to_add` with samples in `result_frame`
-  // putting the results in `results_frame`.  The fields
-  // `vad_activity_` and `speech_type_` of the result frame are
-  // updated. If `result_frame` is empty (`samples_per_channel_`==0),
-  // the samples in `frame_to_add` are added to it.  The number of
-  // channels and number of samples per channel must match except when
-  // `result_frame` is empty.
-  static void Add(const AudioFrame& frame_to_add, AudioFrame* result_frame);
-
   // Downmixes 4 channels `src_audio` to stereo `dst_audio`. This is an in-place
   // operation, meaning `src_audio` and `dst_audio` may point to the same
   // buffer.
@@ -83,11 +74,6 @@
   // Zero out contents of frame.
   static void Mute(AudioFrame* frame);
 
-  // Halve samples in `frame`.
-  static void ApplyHalfGain(AudioFrame* frame);
-
-  static int Scale(float left, float right, AudioFrame* frame);
-
   static int ScaleWithSat(float scale, AudioFrame* frame);
 };
 
diff --git a/audio/utility/audio_frame_operations_unittest.cc b/audio/utility/audio_frame_operations_unittest.cc
index a1f8db3..d50b685 100644
--- a/audio/utility/audio_frame_operations_unittest.cc
+++ b/audio/utility/audio_frame_operations_unittest.cc
@@ -443,64 +443,6 @@
   EXPECT_TRUE(frame_.muted());
 }
 
-TEST_F(AudioFrameOperationsTest, ApplyHalfGainSucceeds) {
-  SetFrameData(2, &frame_);
-
-  AudioFrame half_gain_frame;
-  half_gain_frame.num_channels_ = frame_.num_channels_;
-  half_gain_frame.samples_per_channel_ = frame_.samples_per_channel_;
-  SetFrameData(1, &half_gain_frame);
-
-  AudioFrameOperations::ApplyHalfGain(&frame_);
-  VerifyFramesAreEqual(half_gain_frame, frame_);
-}
-
-TEST_F(AudioFrameOperationsTest, ApplyHalfGainMuted) {
-  ASSERT_TRUE(frame_.muted());
-  AudioFrameOperations::ApplyHalfGain(&frame_);
-  EXPECT_TRUE(frame_.muted());
-}
-
-// TODO(andrew): should not allow negative scales.
-TEST_F(AudioFrameOperationsTest, DISABLED_ScaleFailsWithBadParameters) {
-  frame_.num_channels_ = 1;
-  EXPECT_EQ(-1, AudioFrameOperations::Scale(1.0, 1.0, &frame_));
-
-  frame_.num_channels_ = 3;
-  EXPECT_EQ(-1, AudioFrameOperations::Scale(1.0, 1.0, &frame_));
-
-  frame_.num_channels_ = 2;
-  EXPECT_EQ(-1, AudioFrameOperations::Scale(-1.0, 1.0, &frame_));
-  EXPECT_EQ(-1, AudioFrameOperations::Scale(1.0, -1.0, &frame_));
-}
-
-// TODO(andrew): fix the wraparound bug. We should always saturate.
-TEST_F(AudioFrameOperationsTest, DISABLED_ScaleDoesNotWrapAround) {
-  SetFrameData(4000, -4000, &frame_);
-  EXPECT_EQ(0, AudioFrameOperations::Scale(10.0, 10.0, &frame_));
-
-  AudioFrame clipped_frame;
-  clipped_frame.samples_per_channel_ = 320;
-  SetFrameData(32767, -32768, &clipped_frame);
-  VerifyFramesAreEqual(clipped_frame, frame_);
-}
-
-TEST_F(AudioFrameOperationsTest, ScaleSucceeds) {
-  SetFrameData(1, -1, &frame_);
-  EXPECT_EQ(0, AudioFrameOperations::Scale(2.0, 3.0, &frame_));
-
-  AudioFrame scaled_frame;
-  scaled_frame.samples_per_channel_ = 320;
-  SetFrameData(2, -3, &scaled_frame);
-  VerifyFramesAreEqual(scaled_frame, frame_);
-}
-
-TEST_F(AudioFrameOperationsTest, ScaleMuted) {
-  ASSERT_TRUE(frame_.muted());
-  EXPECT_EQ(0, AudioFrameOperations::Scale(2.0, 3.0, &frame_));
-  EXPECT_TRUE(frame_.muted());
-}
-
 // TODO(andrew): should fail with a negative scale.
 TEST_F(AudioFrameOperationsTest, DISABLED_ScaleWithSatFailsWithBadParameters) {
   EXPECT_EQ(-1, AudioFrameOperations::ScaleWithSat(-1.0, &frame_));
@@ -537,63 +479,5 @@
   EXPECT_TRUE(frame_.muted());
 }
 
-TEST_F(AudioFrameOperationsTest, AddingXToEmptyGivesX) {
-  // When samples_per_channel_ is 0, the frame counts as empty and zero.
-  AudioFrame frame_to_add_to;
-  frame_to_add_to.mutable_data();  // Unmute the frame.
-  ASSERT_FALSE(frame_to_add_to.muted());
-
-  SetFrameData(1000, &frame_);
-  frame_to_add_to.samples_per_channel_ = 0;
-  frame_to_add_to.num_channels_ = frame_.num_channels_;
-
-  AudioFrameOperations::Add(frame_, &frame_to_add_to);
-  VerifyFramesAreEqual(frame_, frame_to_add_to);
-}
-
-TEST_F(AudioFrameOperationsTest, AddingXToMutedGivesX) {
-  AudioFrame frame_to_add_to;
-  ASSERT_TRUE(frame_to_add_to.muted());
-
-  frame_to_add_to.samples_per_channel_ = frame_.samples_per_channel_;
-  SetFrameData(1000, &frame_);
-  frame_to_add_to.num_channels_ = frame_.num_channels_;
-
-  AudioFrameOperations::Add(frame_, &frame_to_add_to);
-  VerifyFramesAreEqual(frame_, frame_to_add_to);
-}
-
-TEST_F(AudioFrameOperationsTest, AddingMutedToXGivesX) {
-  AudioFrame frame_to_add_to;
-
-  // Clear the internal buffer to avoid msan issues since we're changing
-  // buffer dimension member variables outside of the class without updating
-  // the buffer.
-  RTC_DCHECK(frame_to_add_to.muted());
-  frame_to_add_to.mutable_data();
-
-  frame_to_add_to.samples_per_channel_ = frame_.samples_per_channel_;
-  SetFrameData(1000, &frame_to_add_to);  // sets frame to mono.
-  frame_to_add_to.num_channels_ = frame_.num_channels_;
-
-  AudioFrame frame_copy;
-  frame_copy.CopyFrom(frame_to_add_to);
-
-  ASSERT_TRUE(frame_.muted());
-  AudioFrameOperations::Add(frame_, &frame_to_add_to);
-  VerifyFramesAreEqual(frame_copy, frame_to_add_to);
-}
-
-TEST_F(AudioFrameOperationsTest, AddingTwoFramesProducesTheirSum) {
-  AudioFrame frame_to_add_to;
-  frame_to_add_to.samples_per_channel_ = frame_.samples_per_channel_;
-  SetFrameData(1000, &frame_to_add_to);
-  SetFrameData(2000, &frame_);
-
-  AudioFrameOperations::Add(frame_, &frame_to_add_to);
-  SetFrameData(frame_.data()[0] + 1000, &frame_);
-  VerifyFramesAreEqual(frame_, frame_to_add_to);
-}
-
 }  // namespace
 }  // namespace webrtc