Change VideoRtpReceiver to create remote VideoTrack and VideoTrackSource.

This enabled us to be able to remove VideoTrack::GetSink and RemoteVideoCapturer.

Since video frames from the decoder is delivered on a media engine internal thread, VideoBroadCaster must be made thread safe.

BUG=webrtc:5426
R=deadbeef@webrtc.org, pthatcher@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11944}
diff --git a/webrtc/api/peerconnection.h b/webrtc/api/peerconnection.h
index e4fcdf0..2e9d9b2 100644
--- a/webrtc/api/peerconnection.h
+++ b/webrtc/api/peerconnection.h
@@ -27,6 +27,7 @@
 
 class MediaStreamObserver;
 class RemoteMediaStreamFactory;
+class VideoRtpReceiver;
 
 // Populates |session_options| from |rtc_options|, and returns true if options
 // are valid.
@@ -167,8 +168,9 @@
   void CreateAudioReceiver(MediaStreamInterface* stream,
                            AudioTrackInterface* audio_track,
                            uint32_t ssrc);
+
   void CreateVideoReceiver(MediaStreamInterface* stream,
-                           VideoTrackInterface* video_track,
+                           const std::string& track_id,
                            uint32_t ssrc);
   void DestroyAudioReceiver(MediaStreamInterface* stream,
                             AudioTrackInterface* audio_track);