* Update libjingle to 50389769.
* Together with "Add texture support for i420 video frame." from
wuchengli@chromium.org.
https://webrtc-codereview.appspot.com/1413004

RISK=P1
TESTED=try bots
R=fischman@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk/webrtc@4489 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/video_engine/vie_renderer.cc b/video_engine/vie_renderer.cc
index 597f49d..35c68aa 100644
--- a/video_engine/vie_renderer.cc
+++ b/video_engine/vie_renderer.cc
@@ -169,6 +169,21 @@
 int32_t ViEExternalRendererImpl::RenderFrame(
     const uint32_t stream_id,
     I420VideoFrame&   video_frame) {
+  if (video_frame.native_handle() != NULL) {
+    NotifyFrameSizeChange(stream_id, video_frame);
+
+    if (external_renderer_->IsTextureSupported()) {
+      external_renderer_->DeliverFrame(NULL,
+                                       0,
+                                       video_frame.timestamp(),
+                                       video_frame.render_time_ms(),
+                                       video_frame.native_handle());
+    } else {
+      // TODO(wuchengli): readback the pixels and deliver the frame.
+    }
+    return 0;
+  }
+
   VideoFrame* out_frame = converted_frame_.get();
 
   // Convert to requested format.
@@ -218,21 +233,28 @@
       break;
   }
 
-  if (external_renderer_width_ != video_frame.width() ||
-      external_renderer_height_ != video_frame.height()) {
-    external_renderer_width_ = video_frame.width();
-    external_renderer_height_ = video_frame.height();
-    external_renderer_->FrameSizeChange(external_renderer_width_,
-                                        external_renderer_height_, stream_id);
-  }
+  NotifyFrameSizeChange(stream_id, video_frame);
 
   if (out_frame) {
     external_renderer_->DeliverFrame(out_frame->Buffer(),
                                      out_frame->Length(),
                                      video_frame.timestamp(),
-                                     video_frame.render_time_ms());
+                                     video_frame.render_time_ms(),
+                                     NULL);
   }
   return 0;
 }
 
+void ViEExternalRendererImpl::NotifyFrameSizeChange(
+    const uint32_t stream_id,
+    I420VideoFrame& video_frame) {
+  if (external_renderer_width_ != video_frame.width() ||
+      external_renderer_height_ != video_frame.height()) {
+    external_renderer_width_ = video_frame.width();
+    external_renderer_height_ = video_frame.height();
+    external_renderer_->FrameSizeChange(
+        external_renderer_width_, external_renderer_height_, stream_id);
+  }
+}
+
 }  // namespace webrtc