diff --git a/video/video_send_stream_impl.cc b/video/video_send_stream_impl.cc
index 316037a..3fc6b67 100644
--- a/video/video_send_stream_impl.cc
+++ b/video/video_send_stream_impl.cc
@@ -529,7 +529,7 @@
   rtp_video_sender_->SetEncodingData(streams[0].width, streams[0].height,
                                      num_temporal_layers);
 
-  if (rtp_video_sender_->IsActive() && !timed_out_) {
+  if (rtp_video_sender_->IsActive()) {
     // The send stream is started already. Update the allocator with new bitrate
     // limits.
     bitrate_allocator_->AddObserver(this, GetAllocationConfig());
diff --git a/video/video_send_stream_impl_unittest.cc b/video/video_send_stream_impl_unittest.cc
index 2ba5ab2..71cec7c 100644
--- a/video/video_send_stream_impl_unittest.cc
+++ b/video/video_send_stream_impl_unittest.cc
@@ -1038,58 +1038,5 @@
         RTC_FROM_HERE);
   }
 }
-
-// Check that a timed out stream is not allocated by doing the following:
-// 1. Allocate a video stream.
-// 2. Wait for the stream to time out which de-allocates the stream.
-// 3. Reconfigure the stream and make sure that this does not allocate the
-// stream again.
-TEST_F(VideoSendStreamImplTest, AvoidAllocationAfterTimeout) {
-  std::unique_ptr<VideoSendStreamImpl> vss_impl = CreateVideoSendStreamImpl(
-      kDefaultInitialBitrateBps, kDefaultBitratePriority,
-      VideoEncoderConfig::ContentType::kRealtimeVideo);
-
-  test_queue_.SendTask(
-      [&] {
-        EXPECT_CALL(bitrate_allocator_, AddObserver(vss_impl.get(), _));
-        vss_impl->Start();
-        const uint32_t kBitrateBps = 100000;
-        EXPECT_CALL(rtp_video_sender_, GetPayloadBitrateBps())
-            .WillOnce(Return(kBitrateBps));
-        static_cast<BitrateAllocatorObserver*>(vss_impl.get())
-            ->OnBitrateUpdated(CreateAllocation(kBitrateBps));
-
-        // The stream should be de-allocated after a timeout.
-        EXPECT_CALL(bitrate_allocator_, RemoveObserver(vss_impl.get()));
-      },
-      RTC_FROM_HERE);
-
-  rtc::Event done;
-  test_queue_.PostDelayedTask(
-      [&] {
-        VideoStream qvga_stream;
-        qvga_stream.width = 320;
-        qvga_stream.height = 180;
-        qvga_stream.max_framerate = 30;
-        qvga_stream.min_bitrate_bps = 30000;
-        qvga_stream.target_bitrate_bps = 150000;
-        qvga_stream.max_bitrate_bps = 200000;
-        qvga_stream.max_qp = 56;
-        qvga_stream.bitrate_priority = 1;
-
-        int min_transmit_bitrate_bps = 30000;
-        // This should not allocate the stream since it has timed out.
-        static_cast<VideoStreamEncoderInterface::EncoderSink*>(vss_impl.get())
-            ->OnEncoderConfigurationChanged(
-                std::vector<VideoStream>{qvga_stream}, false,
-                VideoEncoderConfig::ContentType::kRealtimeVideo,
-                min_transmit_bitrate_bps);
-        testing::Mock::VerifyAndClearExpectations(&bitrate_allocator_);
-        vss_impl->Stop();
-        done.Set();
-      },
-      2000);
-  ASSERT_TRUE(done.Wait(5000));
-}
 }  // namespace internal
 }  // namespace webrtc
