Add support for writing raw encoder output to .ivf files.

Also refactor GenericEncoder to use these file writers, and remove use
of preprocessor to enable file writing.

BUG=

Review URL: https://codereview.webrtc.org/1853813002

Cr-Commit-Position: refs/heads/master@{#12372}
diff --git a/webrtc/modules/video_coding/include/video_coding.h b/webrtc/modules/video_coding/include/video_coding.h
index 0c508b7..cb413da 100644
--- a/webrtc/modules/video_coding/include/video_coding.h
+++ b/webrtc/modules/video_coding/include/video_coding.h
@@ -78,7 +78,8 @@
       VideoEncoderRateObserver* encoder_rate_observer,
       VCMQMSettingsCallback* qm_settings_callback,
       NackSender* nack_sender,
-      KeyFrameRequestSender* keyframe_request_sender);
+      KeyFrameRequestSender* keyframe_request_sender,
+      EncodedImageCallback* pre_decode_image_callback);
 
   static VideoCodingModule* Create(Clock* clock, EventFactory* event_factory);
 
@@ -511,8 +512,6 @@
   // suspended due to bandwidth limitations; otherwise false.
   virtual bool VideoSuspended() const = 0;
 
-  virtual void RegisterPreDecodeImageCallback(
-      EncodedImageCallback* observer) = 0;
   virtual void RegisterPostEncodeImageCallback(
       EncodedImageCallback* post_encode_callback) = 0;
   // Releases pending decode calls, permitting faster thread shutdown.