Add a race-checking mechanism.

Permits CHECKing/DCHECKing that methods are being accessed in a
thread-safe manner, even if they are not used by one single thread
(thread pools such as VideoToolbox OK).

BUG=
R=danilchap@webrtc.org, tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#13358}
diff --git a/webrtc/modules/video_coding/generic_encoder.h b/webrtc/modules/video_coding/generic_encoder.h
index 469f04d..0493d31 100644
--- a/webrtc/modules/video_coding/generic_encoder.h
+++ b/webrtc/modules/video_coding/generic_encoder.h
@@ -18,6 +18,7 @@
 #include "webrtc/modules/video_coding/include/video_coding_defines.h"
 
 #include "webrtc/base/criticalsection.h"
+#include "webrtc/base/race_checker.h"
 
 namespace webrtc {
 class CriticalSectionWrapper;
@@ -82,7 +83,9 @@
   bool SupportsNativeHandle() const;
 
  private:
-  VideoEncoder* const encoder_;
+  rtc::RaceChecker race_checker_;
+
+  VideoEncoder* const encoder_ GUARDED_BY(race_checker_);
   VideoEncoderRateObserver* const rate_observer_;
   VCMEncodedFrameCallback* const vcm_encoded_frame_callback_;
   const bool internal_source_;