VideoRenderCallback::RenderFrame: Make I420VideoFrame& ref const.

RenderFrame should not modify the I420VideoFrame (and we don't).

This CL changes the declaration of RenderFrame from:
int32_t RenderFrame(const uint32_t streamId, I420VideoFrame& videoFrame)
to:
int32_t RenderFrame(const uint32_t streamId, const I420VideoFrame& videoFrame)

BUG=1128
R=mflodman@webrtc.org, perkj@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8902}
diff --git a/talk/media/webrtc/webrtcpassthroughrender.cc b/talk/media/webrtc/webrtcpassthroughrender.cc
index 0c6029d..179dd11 100644
--- a/talk/media/webrtc/webrtcpassthroughrender.cc
+++ b/talk/media/webrtc/webrtcpassthroughrender.cc
@@ -44,7 +44,7 @@
   virtual ~PassthroughStream() {
   }
   virtual int32_t RenderFrame(const uint32_t stream_id,
-                              webrtc::I420VideoFrame& videoFrame) {
+                              const webrtc::I420VideoFrame& videoFrame) {
     rtc::CritScope cs(&stream_critical_);
     // Send frame for rendering directly
     if (running_ && renderer_) {
diff --git a/talk/media/webrtc/webrtcpassthroughrender_unittest.cc b/talk/media/webrtc/webrtcpassthroughrender_unittest.cc
index 72aa549..9bbba0e 100644
--- a/talk/media/webrtc/webrtcpassthroughrender_unittest.cc
+++ b/talk/media/webrtc/webrtcpassthroughrender_unittest.cc
@@ -44,7 +44,7 @@
     }
 
     virtual int32_t RenderFrame(const uint32_t stream_id,
-                                webrtc::I420VideoFrame& videoFrame) {
+                                const webrtc::I420VideoFrame& videoFrame) {
       ++frame_num_;
       LOG(INFO) << "RenderFrame stream_id: " << stream_id
                 << " frame_num: " << frame_num_;
diff --git a/webrtc/modules/video_render/android/video_render_android_native_opengl2.cc b/webrtc/modules/video_render/android/video_render_android_native_opengl2.cc
index bba89d7..170b733 100644
--- a/webrtc/modules/video_render/android/video_render_android_native_opengl2.cc
+++ b/webrtc/modules/video_render/android/video_render_android_native_opengl2.cc
@@ -383,7 +383,7 @@
 
 int32_t AndroidNativeOpenGl2Channel::RenderFrame(
     const uint32_t /*streamId*/,
-    I420VideoFrame& videoFrame) {
+    const I420VideoFrame& videoFrame) {
   //   WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer,_id, "%s:" ,__FUNCTION__);
   _renderCritSect.Enter();
   _bufferToRender = videoFrame;
diff --git a/webrtc/modules/video_render/android/video_render_android_native_opengl2.h b/webrtc/modules/video_render/android/video_render_android_native_opengl2.h
index f5e5b57e..a006f2e 100644
--- a/webrtc/modules/video_render/android/video_render_android_native_opengl2.h
+++ b/webrtc/modules/video_render/android/video_render_android_native_opengl2.h
@@ -35,7 +35,7 @@
   //Implement VideoRenderCallback
   virtual int32_t RenderFrame(
       const uint32_t streamId,
-      I420VideoFrame& videoFrame);
+      const I420VideoFrame& videoFrame);
 
   //Implements AndroidStream
   virtual void DeliverFrame(JNIEnv* jniEnv);
diff --git a/webrtc/modules/video_render/android/video_render_android_surface_view.cc b/webrtc/modules/video_render/android/video_render_android_surface_view.cc
index c430702..eca8a1a 100644
--- a/webrtc/modules/video_render/android/video_render_android_surface_view.cc
+++ b/webrtc/modules/video_render/android/video_render_android_surface_view.cc
@@ -412,7 +412,7 @@
 
 int32_t AndroidSurfaceViewChannel::RenderFrame(
     const uint32_t /*streamId*/,
-    I420VideoFrame& videoFrame) {
+    const I420VideoFrame& videoFrame) {
   // WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer,_id, "%s:" ,__FUNCTION__);
   _renderCritSect.Enter();
   _bufferToRender = videoFrame;
diff --git a/webrtc/modules/video_render/android/video_render_android_surface_view.h b/webrtc/modules/video_render/android/video_render_android_surface_view.h
index ac58bca..acafa46 100644
--- a/webrtc/modules/video_render/android/video_render_android_surface_view.h
+++ b/webrtc/modules/video_render/android/video_render_android_surface_view.h
@@ -33,7 +33,7 @@
 
   //Implement VideoRenderCallback
   virtual int32_t RenderFrame(const uint32_t streamId,
-                              I420VideoFrame& videoFrame);
+                              const I420VideoFrame& videoFrame);
 
   //Implements AndroidStream
   virtual void DeliverFrame(JNIEnv* jniEnv);
diff --git a/webrtc/modules/video_render/external/video_render_external_impl.cc b/webrtc/modules/video_render/external/video_render_external_impl.cc
index 04ae205..d37b30f 100644
--- a/webrtc/modules/video_render/external/video_render_external_impl.cc
+++ b/webrtc/modules/video_render/external/video_render_external_impl.cc
@@ -188,9 +188,8 @@
 }
 
 // VideoRenderCallback
-int32_t VideoRenderExternalImpl::RenderFrame(
-                                                   const uint32_t streamId,
-                                                   I420VideoFrame& videoFrame)
+int32_t VideoRenderExternalImpl::RenderFrame(const uint32_t streamId,
+                                             const I420VideoFrame& videoFrame)
 {
     return 0;
 }
diff --git a/webrtc/modules/video_render/external/video_render_external_impl.h b/webrtc/modules/video_render/external/video_render_external_impl.h
index e83d842..43182b1 100644
--- a/webrtc/modules/video_render/external/video_render_external_impl.h
+++ b/webrtc/modules/video_render/external/video_render_external_impl.h
@@ -115,7 +115,7 @@
 
     // VideoRenderCallback
     virtual int32_t RenderFrame(const uint32_t streamId,
-                                I420VideoFrame& videoFrame);
+                                const I420VideoFrame& videoFrame);
 
 private:
     CriticalSectionWrapper& _critSect;
diff --git a/webrtc/modules/video_render/include/video_render_defines.h b/webrtc/modules/video_render/include/video_render_defines.h
index e5da2bb..4eb8409 100644
--- a/webrtc/modules/video_render/include/video_render_defines.h
+++ b/webrtc/modules/video_render/include/video_render_defines.h
@@ -49,7 +49,7 @@
 {
 public:
     virtual int32_t RenderFrame(const uint32_t streamId,
-                                I420VideoFrame& videoFrame) = 0;
+                                const I420VideoFrame& videoFrame) = 0;
 
 protected:
     virtual ~VideoRenderCallback()
diff --git a/webrtc/modules/video_render/incoming_video_stream.cc b/webrtc/modules/video_render/incoming_video_stream.cc
index 3fcdac1..04fc6ec 100644
--- a/webrtc/modules/video_render/incoming_video_stream.cc
+++ b/webrtc/modules/video_render/incoming_video_stream.cc
@@ -85,7 +85,7 @@
 }
 
 int32_t IncomingVideoStream::RenderFrame(const uint32_t stream_id,
-                                         I420VideoFrame& video_frame) {
+                                         const I420VideoFrame& video_frame) {
   CriticalSectionScoped csS(&stream_critsect_);
   WEBRTC_TRACE(kTraceStream, kTraceVideoRenderer, module_id_,
                "%s for stream %d, render time: %u", __FUNCTION__, stream_id_,
diff --git a/webrtc/modules/video_render/incoming_video_stream.h b/webrtc/modules/video_render/incoming_video_stream.h
index 5f7a001..833ffe2 100644
--- a/webrtc/modules/video_render/incoming_video_stream.h
+++ b/webrtc/modules/video_render/incoming_video_stream.h
@@ -31,7 +31,7 @@
   // Get callback to deliver frames to the module.
   VideoRenderCallback* ModuleCallback();
   virtual int32_t RenderFrame(const uint32_t stream_id,
-                              I420VideoFrame& video_frame);
+                              const I420VideoFrame& video_frame);
 
   // Set callback to the platform dependent code.
   int32_t SetRenderCallback(VideoRenderCallback* render_callback);
diff --git a/webrtc/modules/video_render/ios/video_render_ios_channel.h b/webrtc/modules/video_render/ios/video_render_ios_channel.h
index 2d635a7..97f1efd 100644
--- a/webrtc/modules/video_render/ios/video_render_ios_channel.h
+++ b/webrtc/modules/video_render/ios/video_render_ios_channel.h
@@ -25,7 +25,7 @@
 
   // Implementation of VideoRenderCallback.
   int32_t RenderFrame(const uint32_t stream_id,
-                      I420VideoFrame& video_frame) override;
+                      const I420VideoFrame& video_frame) override;
 
   int SetStreamSettings(const float z_order,
                         const float left,
diff --git a/webrtc/modules/video_render/ios/video_render_ios_channel.mm b/webrtc/modules/video_render/ios/video_render_ios_channel.mm
index 02814b2..33f1423 100644
--- a/webrtc/modules/video_render/ios/video_render_ios_channel.mm
+++ b/webrtc/modules/video_render/ios/video_render_ios_channel.mm
@@ -24,10 +24,9 @@
 VideoRenderIosChannel::~VideoRenderIosChannel() { delete current_frame_; }
 
 int32_t VideoRenderIosChannel::RenderFrame(const uint32_t stream_id,
-                                           I420VideoFrame& video_frame) {
-  video_frame.set_render_time_ms(0);
-
+                                           const I420VideoFrame& video_frame) {
   current_frame_->CopyFrame(video_frame);
+  current_frame_->set_render_time_ms(0);
   buffer_is_updated_ = true;
 
   return 0;
diff --git a/webrtc/modules/video_render/linux/video_x11_channel.cc b/webrtc/modules/video_render/linux/video_x11_channel.cc
index d33dace..92b990d 100644
--- a/webrtc/modules/video_render/linux/video_x11_channel.cc
+++ b/webrtc/modules/video_render/linux/video_x11_channel.cc
@@ -44,7 +44,7 @@
 }
 
 int32_t VideoX11Channel::RenderFrame(const uint32_t streamId,
-                                     I420VideoFrame& videoFrame) {
+                                     const I420VideoFrame& videoFrame) {
   CriticalSectionScoped cs(&_crit);
   if (_width != videoFrame.width() || _height
       != videoFrame.height()) {
diff --git a/webrtc/modules/video_render/linux/video_x11_channel.h b/webrtc/modules/video_render/linux/video_x11_channel.h
index 35c004c..4a83a60 100644
--- a/webrtc/modules/video_render/linux/video_x11_channel.h
+++ b/webrtc/modules/video_render/linux/video_x11_channel.h
@@ -34,7 +34,7 @@
     virtual ~VideoX11Channel();
 
     virtual int32_t RenderFrame(const uint32_t streamId,
-                                I420VideoFrame& videoFrame);
+                                const I420VideoFrame& videoFrame);
 
     int32_t FrameSizeChange(int32_t width, int32_t height,
                             int32_t numberOfStreams);
diff --git a/webrtc/modules/video_render/mac/video_render_nsopengl.h b/webrtc/modules/video_render/mac/video_render_nsopengl.h
index 7143e69..b52e66b 100644
--- a/webrtc/modules/video_render/mac/video_render_nsopengl.h
+++ b/webrtc/modules/video_render/mac/video_render_nsopengl.h
@@ -63,7 +63,7 @@
 
     // ********** new module functions ************ //
     virtual int32_t RenderFrame(const uint32_t streamId,
-                                I420VideoFrame& videoFrame);
+                                const I420VideoFrame& videoFrame);
 
     // ********** new module helper functions ***** //
     int ChangeContext(NSOpenGLContext *nsglContext);
diff --git a/webrtc/modules/video_render/mac/video_render_nsopengl.mm b/webrtc/modules/video_render/mac/video_render_nsopengl.mm
index 603ca89..d176b5d 100644
--- a/webrtc/modules/video_render/mac/video_render_nsopengl.mm
+++ b/webrtc/modules/video_render/mac/video_render_nsopengl.mm
@@ -90,7 +90,7 @@
 }
 
 int32_t VideoChannelNSOpenGL::RenderFrame(
-  const uint32_t /*streamId*/, I420VideoFrame& videoFrame) {
+  const uint32_t /*streamId*/, const I420VideoFrame& videoFrame) {
 
   _owner->LockAGLCntx();
 
diff --git a/webrtc/modules/video_render/test/testAPI/testAPI.cc b/webrtc/modules/video_render/test/testAPI/testAPI.cc
index 3ec68dd..14f9791 100644
--- a/webrtc/modules/video_render/test/testAPI/testAPI.cc
+++ b/webrtc/modules/video_render/test/testAPI/testAPI.cc
@@ -262,7 +262,7 @@
     }
     ;
     virtual int32_t RenderFrame(const uint32_t streamId,
-                                I420VideoFrame& videoFrame)
+                                const I420VideoFrame& videoFrame)
     {
         _cnt++;
         if (_cnt % 100 == 0)
diff --git a/webrtc/modules/video_render/windows/video_render_direct3d9.cc b/webrtc/modules/video_render/windows/video_render_direct3d9.cc
index 4cc26e0..b94e078 100644
--- a/webrtc/modules/video_render/windows/video_render_direct3d9.cc
+++ b/webrtc/modules/video_render/windows/video_render_direct3d9.cc
@@ -142,7 +142,7 @@
 }
 
 int32_t D3D9Channel::RenderFrame(const uint32_t streamId,
-                                 I420VideoFrame& videoFrame)
+                                 const I420VideoFrame& videoFrame)
 {
     CriticalSectionScoped cs(_critSect);
     if (_width != videoFrame.width() || _height != videoFrame.height())
diff --git a/webrtc/modules/video_render/windows/video_render_direct3d9.h b/webrtc/modules/video_render/windows/video_render_direct3d9.h
index aface8a..a8b0999 100644
--- a/webrtc/modules/video_render/windows/video_render_direct3d9.h
+++ b/webrtc/modules/video_render/windows/video_render_direct3d9.h
@@ -45,7 +45,7 @@
     // A new frame is delivered.
     virtual int DeliverFrame(const I420VideoFrame& videoFrame);
     virtual int32_t RenderFrame(const uint32_t streamId,
-                                I420VideoFrame& videoFrame);
+                                const I420VideoFrame& videoFrame);
 
     // Called to check if the video frame is updated.
     int IsUpdated(bool& isUpdated);
diff --git a/webrtc/video_engine/vie_renderer.cc b/webrtc/video_engine/vie_renderer.cc
index a2c90cb..bfeeba2 100644
--- a/webrtc/video_engine/vie_renderer.cc
+++ b/webrtc/video_engine/vie_renderer.cc
@@ -155,8 +155,9 @@
   return 0;
 }
 
-int32_t ViEExternalRendererImpl::RenderFrame(const uint32_t stream_id,
-                                             I420VideoFrame& video_frame) {
+int32_t ViEExternalRendererImpl::RenderFrame(
+    const uint32_t stream_id,
+    const I420VideoFrame& video_frame) {
   if (external_renderer_format_ != kVideoI420)
     return ConvertAndRenderFrame(stream_id, video_frame);
 
@@ -173,7 +174,7 @@
 
 int32_t ViEExternalRendererImpl::ConvertAndRenderFrame(
     uint32_t stream_id,
-    I420VideoFrame& video_frame) {
+    const I420VideoFrame& video_frame) {
   if (video_frame.native_handle() != NULL) {
     NotifyFrameSizeChange(stream_id, video_frame);
 
@@ -239,7 +240,7 @@
 
 void ViEExternalRendererImpl::NotifyFrameSizeChange(
     const uint32_t stream_id,
-    I420VideoFrame& video_frame) {
+    const I420VideoFrame& video_frame) {
   if (external_renderer_width_ != video_frame.width() ||
       external_renderer_height_ != video_frame.height()) {
     external_renderer_width_ = video_frame.width();
diff --git a/webrtc/video_engine/vie_renderer.h b/webrtc/video_engine/vie_renderer.h
index fcd80ab..5a7fdc1 100644
--- a/webrtc/video_engine/vie_renderer.h
+++ b/webrtc/video_engine/vie_renderer.h
@@ -33,13 +33,13 @@
 
   // Implements VideoRenderCallback.
   virtual int32_t RenderFrame(const uint32_t stream_id,
-                              I420VideoFrame& video_frame);
+                              const I420VideoFrame& video_frame);
 
  private:
   void NotifyFrameSizeChange(const uint32_t stream_id,
-                             I420VideoFrame& video_frame);
+                             const I420VideoFrame& video_frame);
   int32_t ConvertAndRenderFrame(uint32_t stream_id,
-                                I420VideoFrame& video_frame);
+                                const I420VideoFrame& video_frame);
   ExternalRenderer* external_renderer_;
   RawVideoType external_renderer_format_;
   int external_renderer_width_;