Reland In GenericEncoder enable timing frames for encoders with internal source

The original cl broke some downstream project because some internal source
encoders do not call OnBitrateChanged on GenericEncoder.

Bug: webrtc:9058
Change-Id: I7841c65059fb4fc9e1ab9754bb1d232ce660a990
Reviewed-on: https://webrtc-review.googlesource.com/66342
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22733}
diff --git a/modules/video_coding/generic_encoder.h b/modules/video_coding/generic_encoder.h
index d859933..4efd961 100644
--- a/modules/video_coding/generic_encoder.h
+++ b/modules/video_coding/generic_encoder.h
@@ -77,6 +77,14 @@
   }
 
  private:
+  // For non-internal-source encoders, returns encode started time and fixes
+  // capture timestamp for the frame, if corrupted by the encoder.
+  rtc::Optional<int64_t> ExtractEncodeStartTime(size_t simulcast_svc_idx,
+                                                EncodedImage* encoded_image)
+      RTC_EXCLUSIVE_LOCKS_REQUIRED(timing_params_lock_);
+
+  void FillTimingInfo(size_t simulcast_svc_idx, EncodedImage* encoded_image);
+
   rtc::CriticalSection timing_params_lock_;
   bool internal_source_;
   EncodedImageCallback* const post_encode_callback_;