* 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