Delete ACMVADCallback

This callback is enabled via the method
AudioCodingModule::RegisterVADCallback, which is unused, and deleted
in this cl.

Bug: None
Change-Id: I04c8690fbb673305e69fe5b1c32d88efd6c72d1b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/148420
Reviewed-by: Minyue Li <minyue@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30735}
diff --git a/modules/audio_coding/acm2/audio_coding_module.cc b/modules/audio_coding/acm2/audio_coding_module.cc
index e28be18..db6f125 100644
--- a/modules/audio_coding/acm2/audio_coding_module.cc
+++ b/modules/audio_coding/acm2/audio_coding_module.cc
@@ -64,14 +64,6 @@
   int SetPacketLossRate(int loss_rate) override;
 
   /////////////////////////////////////////
-  //   (VAD) Voice Activity Detection
-  //   and
-  //   (CNG) Comfort Noise Generation
-  //
-
-  int RegisterVADCallback(ACMVADCallback* vad_callback) override;
-
-  /////////////////////////////////////////
   //   Receiver
   //
 
@@ -188,7 +180,6 @@
   rtc::CriticalSection callback_crit_sect_;
   AudioPacketizationCallback* packetization_callback_
       RTC_GUARDED_BY(callback_crit_sect_);
-  ACMVADCallback* vad_callback_ RTC_GUARDED_BY(callback_crit_sect_);
 
   int codec_histogram_bins_log_[static_cast<size_t>(
       AudioEncoder::CodecType::kMaxLoggedAudioCodecTypes)];
@@ -223,7 +214,6 @@
       first_10ms_data_(false),
       first_frame_(true),
       packetization_callback_(NULL),
-      vad_callback_(NULL),
       codec_histogram_bins_log_(),
       number_of_consecutive_empty_packets_(0) {
   if (InitializeReceiverSafe() < 0) {
@@ -313,11 +303,6 @@
           encode_buffer_.data(), encode_buffer_.size(),
           absolute_capture_timestamp_ms.value_or(-1));
     }
-
-    if (vad_callback_) {
-      // Callback with VAD decision.
-      vad_callback_->InFrameType(frame_type);
-    }
   }
   previous_pltype_ = encoded_info.payload_type;
   return static_cast<int32_t>(encode_buffer_.size());
@@ -596,13 +581,6 @@
   return 0;
 }
 
-int AudioCodingModuleImpl::RegisterVADCallback(ACMVADCallback* vad_callback) {
-  RTC_LOG(LS_VERBOSE) << "RegisterVADCallback()";
-  rtc::CritScope lock(&callback_crit_sect_);
-  vad_callback_ = vad_callback;
-  return 0;
-}
-
 bool AudioCodingModuleImpl::HaveValidEncoder(const char* caller_name) const {
   if (!encoder_stack_) {
     RTC_LOG(LS_ERROR) << caller_name << " failed: No send codec is registered.";
diff --git a/modules/audio_coding/include/audio_coding_module.h b/modules/audio_coding/include/audio_coding_module.h
index ada389f..a0aa5d0 100644
--- a/modules/audio_coding/include/audio_coding_module.h
+++ b/modules/audio_coding/include/audio_coding_module.h
@@ -61,14 +61,6 @@
   }
 };
 
-// Callback class used for reporting VAD decision
-class ACMVADCallback {
- public:
-  virtual ~ACMVADCallback() {}
-
-  virtual int32_t InFrameType(AudioFrameType frame_type) = 0;
-};
-
 class AudioCodingModule {
  protected:
   AudioCodingModule() {}
@@ -163,26 +155,6 @@
   virtual int SetPacketLossRate(int packet_loss_rate) = 0;
 
   ///////////////////////////////////////////////////////////////////////////
-  //   (VAD) Voice Activity Detection
-  //
-
-  ///////////////////////////////////////////////////////////////////////////
-  // int32_t RegisterVADCallback()
-  // Call this method to register a callback function which is called
-  // any time that ACM encounters an empty frame. That is a frame which is
-  // recognized inactive. Depending on the codec WebRtc VAD or internal codec
-  // VAD is employed to identify a frame as active/inactive.
-  //
-  // Input:
-  //   -vad_callback        : pointer to a callback function.
-  //
-  // Return value:
-  //   -1 if failed to register the callback function.
-  //    0 if the callback function is registered successfully.
-  //
-  virtual int32_t RegisterVADCallback(ACMVADCallback* vad_callback) = 0;
-
-  ///////////////////////////////////////////////////////////////////////////
   //   Receiver
   //
 
diff --git a/modules/audio_coding/test/TestVADDTX.cc b/modules/audio_coding/test/TestVADDTX.cc
index 52b7fc3..c493e64 100644
--- a/modules/audio_coding/test/TestVADDTX.cc
+++ b/modules/audio_coding/test/TestVADDTX.cc
@@ -29,16 +29,25 @@
 
 namespace webrtc {
 
-ActivityMonitor::ActivityMonitor() {
+MonitoringAudioPacketizationCallback::MonitoringAudioPacketizationCallback(
+    AudioPacketizationCallback* next)
+    : next_(next) {
   ResetStatistics();
 }
 
-int32_t ActivityMonitor::InFrameType(AudioFrameType frame_type) {
+int32_t MonitoringAudioPacketizationCallback::SendData(
+    AudioFrameType frame_type,
+    uint8_t payload_type,
+    uint32_t timestamp,
+    const uint8_t* payload_data,
+    size_t payload_len_bytes,
+    int64_t absolute_capture_timestamp_ms) {
   counter_[static_cast<int>(frame_type)]++;
-  return 0;
+  return next_->SendData(frame_type, payload_type, timestamp, payload_data,
+                         payload_len_bytes, absolute_capture_timestamp_ms);
 }
 
-void ActivityMonitor::PrintStatistics() {
+void MonitoringAudioPacketizationCallback::PrintStatistics() {
   printf("\n");
   printf("kEmptyFrame       %u\n",
          counter_[static_cast<int>(AudioFrameType::kEmptyFrame)]);
@@ -49,11 +58,11 @@
   printf("\n\n");
 }
 
-void ActivityMonitor::ResetStatistics() {
+void MonitoringAudioPacketizationCallback::ResetStatistics() {
   memset(counter_, 0, sizeof(counter_));
 }
 
-void ActivityMonitor::GetStatistics(uint32_t* counter) {
+void MonitoringAudioPacketizationCallback::GetStatistics(uint32_t* counter) {
   memcpy(counter, counter_, sizeof(counter_));
 }
 
@@ -68,11 +77,13 @@
           AudioCodingModule::Config(decoder_factory_))),
       acm_receive_(AudioCodingModule::Create(
           AudioCodingModule::Config(decoder_factory_))),
-      channel_(new Channel),
-      monitor_(new ActivityMonitor) {
-  EXPECT_EQ(0, acm_send_->RegisterTransportCallback(channel_.get()));
+      channel_(std::make_unique<Channel>()),
+      packetization_callback_(
+          std::make_unique<MonitoringAudioPacketizationCallback>(
+              channel_.get())) {
+  EXPECT_EQ(
+      0, acm_send_->RegisterTransportCallback(packetization_callback_.get()));
   channel_->RegisterReceiverACM(acm_receive_.get());
-  EXPECT_EQ(0, acm_send_->RegisterVADCallback(monitor_.get()));
 }
 
 bool TestVadDtx::RegisterCodec(const SdpAudioFormat& codec_format,
@@ -109,7 +120,7 @@
                      std::string out_filename,
                      bool append,
                      const int* expects) {
-  monitor_->ResetStatistics();
+  packetization_callback_->ResetStatistics();
 
   PCMFile in_file;
   in_file.Open(in_filename, frequency, "rb");
@@ -144,12 +155,12 @@
   out_file.Close();
 
 #ifdef PRINT_STAT
-  monitor_->PrintStatistics();
+  packetization_callback_->PrintStatistics();
 #endif
 
   uint32_t stats[3];
-  monitor_->GetStatistics(stats);
-  monitor_->ResetStatistics();
+  packetization_callback_->GetStatistics(stats);
+  packetization_callback_->ResetStatistics();
 
   for (const auto& st : stats) {
     int i = &st - stats;  // Calculate the current position in stats.
diff --git a/modules/audio_coding/test/TestVADDTX.h b/modules/audio_coding/test/TestVADDTX.h
index 0cb5750..cce802d 100644
--- a/modules/audio_coding/test/TestVADDTX.h
+++ b/modules/audio_coding/test/TestVADDTX.h
@@ -22,10 +22,20 @@
 
 namespace webrtc {
 
-class ActivityMonitor : public ACMVADCallback {
+// This class records the frame type, and delegates actual sending to the
+// |next_| AudioPacketizationCallback.
+class MonitoringAudioPacketizationCallback : public AudioPacketizationCallback {
  public:
-  ActivityMonitor();
-  int32_t InFrameType(AudioFrameType frame_type);
+  explicit MonitoringAudioPacketizationCallback(
+      AudioPacketizationCallback* next);
+
+  int32_t SendData(AudioFrameType frame_type,
+                   uint8_t payload_type,
+                   uint32_t timestamp,
+                   const uint8_t* payload_data,
+                   size_t payload_len_bytes,
+                   int64_t absolute_capture_timestamp_ms) override;
+
   void PrintStatistics();
   void ResetStatistics();
   void GetStatistics(uint32_t* stats);
@@ -35,6 +45,7 @@
   // 1 - kAudioFrameSpeech
   // 2 - kAudioFrameCN
   uint32_t counter_[3];
+  AudioPacketizationCallback* const next_;
 };
 
 // TestVadDtx is to verify that VAD/DTX perform as they should. It runs through
@@ -74,7 +85,7 @@
   std::unique_ptr<AudioCodingModule> acm_send_;
   std::unique_ptr<AudioCodingModule> acm_receive_;
   std::unique_ptr<Channel> channel_;
-  std::unique_ptr<ActivityMonitor> monitor_;
+  std::unique_ptr<MonitoringAudioPacketizationCallback> packetization_callback_;
   uint32_t time_stamp_ = 0x12345678;
 };