Revert "Revert "Remove VideoSendStreamInput::PutFrame.""

This reverts commit r6230 to re-land r6229.

ViECapturer::SwapFrame now resets timestamps.

BUG=
R=stefan@webrtc.org
TBR=mflodman@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/13529004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6231 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/video/full_stack.cc b/webrtc/video/full_stack.cc
index cb0ba55..cb97cd8 100644
--- a/webrtc/video/full_stack.cc
+++ b/webrtc/video/full_stack.cc
@@ -125,10 +125,6 @@
     return receiver_->DeliverPacket(packet, length);
   }
 
-  virtual void PutFrame(const I420VideoFrame& video_frame) OVERRIDE {
-    ADD_FAILURE() << "PutFrame() should not have been called in this test.";
-  }
-
   virtual void SwapFrame(I420VideoFrame* video_frame) OVERRIDE {
     I420VideoFrame* copy = NULL;
     {
diff --git a/webrtc/video/video_send_stream.cc b/webrtc/video/video_send_stream.cc
index 7cdb353..ced0b69 100644
--- a/webrtc/video/video_send_stream.cc
+++ b/webrtc/video/video_send_stream.cc
@@ -280,24 +280,12 @@
   rtp_rtcp_->Release();
 }
 
-void VideoSendStream::PutFrame(const I420VideoFrame& frame) {
-  input_frame_.CopyFrame(frame);
-  SwapFrame(&input_frame_);
-}
-
 void VideoSendStream::SwapFrame(I420VideoFrame* frame) {
-  // TODO(pbos): Warn if frame is "too far" into the future, or too old. This
-  //             would help detect if frame's being used without NTP.
-  //             TO REVIEWER: Is there any good check for this? Should it be
-  //             skipped?
-  if (frame != &input_frame_)
-    input_frame_.SwapFrame(frame);
-
   // TODO(pbos): Local rendering should not be done on the capture thread.
   if (config_.local_renderer != NULL)
-    config_.local_renderer->RenderFrame(input_frame_, 0);
+    config_.local_renderer->RenderFrame(*frame, 0);
 
-  external_capture_->SwapFrame(&input_frame_);
+  external_capture_->SwapFrame(frame);
 }
 
 VideoSendStreamInput* VideoSendStream::Input() { return this; }
diff --git a/webrtc/video/video_send_stream.h b/webrtc/video/video_send_stream.h
index b8f5661..a7e2267 100644
--- a/webrtc/video/video_send_stream.h
+++ b/webrtc/video/video_send_stream.h
@@ -57,7 +57,6 @@
   bool DeliverRtcp(const uint8_t* packet, size_t length);
 
   // From VideoSendStreamInput.
-  virtual void PutFrame(const I420VideoFrame& frame) OVERRIDE;
   virtual void SwapFrame(I420VideoFrame* frame) OVERRIDE;
 
   // From webrtc::VideoSendStream.
@@ -69,7 +68,6 @@
   virtual std::string GetCName() OVERRIDE;
 
  private:
-  I420VideoFrame input_frame_;
   TransportAdapter transport_adapter_;
   EncodedFrameCallbackAdapter encoded_frame_proxy_;
   scoped_ptr<CriticalSectionWrapper> codec_lock_;
diff --git a/webrtc/video_engine/vie_capturer.cc b/webrtc/video_engine/vie_capturer.cc
index 65159a1..f037dc8 100644
--- a/webrtc/video_engine/vie_capturer.cc
+++ b/webrtc/video_engine/vie_capturer.cc
@@ -337,6 +337,9 @@
 void ViECapturer::SwapFrame(I420VideoFrame* frame) {
   external_capture_module_->IncomingI420VideoFrame(frame,
                                                    frame->render_time_ms());
+  frame->set_timestamp(0);
+  frame->set_ntp_time_ms(0);
+  frame->set_render_time_ms(0);
 }
 
 void ViECapturer::OnIncomingCapturedFrame(const int32_t capture_id,
diff --git a/webrtc/video_send_stream.h b/webrtc/video_send_stream.h
index 1a94121..87c0dac 100644
--- a/webrtc/video_send_stream.h
+++ b/webrtc/video_send_stream.h
@@ -29,7 +29,6 @@
   // These methods do not lock internally and must be called sequentially.
   // If your application switches input sources synchronization must be done
   // externally to make sure that any old frames are not delivered concurrently.
-  virtual void PutFrame(const I420VideoFrame& video_frame) = 0;
   virtual void SwapFrame(I420VideoFrame* video_frame) = 0;
 
  protected: