Call Release in SimulcastEncoderAdapter destructor if inited.

This check should be superflous once
https://webrtc-review.git.corp.google.com/c/src/+/465582 has landed,
but just to be safe make sure we always call Release() in the destructor
if it hasn't already been called.

Bug: chromium:504620824
Change-Id: I70323b1a71fd9830f0d7af62ebeced05dd833d54
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/465600
Auto-Submit: Erik Språng <sprang@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#47496}
diff --git a/media/engine/simulcast_encoder_adapter.cc b/media/engine/simulcast_encoder_adapter.cc
index 06aebdc..2f61bdd 100644
--- a/media/engine/simulcast_encoder_adapter.cc
+++ b/media/engine/simulcast_encoder_adapter.cc
@@ -342,7 +342,9 @@
 
 SimulcastEncoderAdapter::~SimulcastEncoderAdapter() {
   RTC_DCHECK_RUN_ON(&encoder_queue_checker_);
-  RTC_DCHECK(!Initialized());
+  if (Initialized()) {
+    Release();
+  }
   DestroyStoredEncoders();
 }
 
diff --git a/media/engine/simulcast_encoder_adapter_unittest.cc b/media/engine/simulcast_encoder_adapter_unittest.cc
index 5c10aee..ff843b7 100644
--- a/media/engine/simulcast_encoder_adapter_unittest.cc
+++ b/media/engine/simulcast_encoder_adapter_unittest.cc
@@ -790,6 +790,18 @@
   EXPECT_EQ(0, adapter_->Release());
 }
 
+TEST_F(TestSimulcastEncoderAdapterFake, DestructorCallsReleaseIfInitialized) {
+  SetupCodec();
+  std::vector<MockVideoEncoder*> encoders = helper_->factory()->encoders();
+  ASSERT_EQ(3u, encoders.size());
+
+  for (auto* encoder : encoders) {
+    EXPECT_CALL(*encoder, ReleaseMock()).WillOnce(testing::Return(0));
+  }
+
+  adapter_.reset();
+}
+
 TEST_F(TestSimulcastEncoderAdapterFake, Reinit) {
   SetupCodec();
   EXPECT_EQ(0, adapter_->Release());