diff --git a/webrtc/video/call.cc b/webrtc/video/call.cc index a11656ea3f..15ca45bd9c 100644 --- a/webrtc/video/call.cc +++ b/webrtc/video/call.cc @@ -22,6 +22,7 @@ #include "webrtc/modules/rtp_rtcp/source/byte_io.h" #include "webrtc/modules/video_coding/codecs/vp8/include/vp8.h" #include "webrtc/modules/video_coding/codecs/vp9/include/vp9.h" +#include "webrtc/modules/video_render/include/video_render.h" #include "webrtc/system_wrappers/interface/critical_section_wrapper.h" #include "webrtc/system_wrappers/interface/logging.h" #include "webrtc/system_wrappers/interface/rw_lock_wrapper.h" @@ -152,9 +153,12 @@ class Call : public webrtc::Call, public PacketReceiver { VideoEngine* video_engine_; ViERTP_RTCP* rtp_rtcp_; ViECodec* codec_; + ViERender* render_; ViEBase* base_; int base_channel_id_; + scoped_ptr external_render_; + DISALLOW_COPY_AND_ASSIGN(Call); }; } // namespace internal @@ -177,7 +181,9 @@ Call::Call(webrtc::VideoEngine* video_engine, const Call::Config& config) receive_crit_(RWLockWrapper::CreateRWLock()), send_crit_(RWLockWrapper::CreateRWLock()), video_engine_(video_engine), - base_channel_id_(-1) { + base_channel_id_(-1), + external_render_( + VideoRender::CreateVideoRender(42, NULL, false, kRenderExternal)) { assert(video_engine != NULL); assert(config.send_transport != NULL); @@ -194,6 +200,11 @@ Call::Call(webrtc::VideoEngine* video_engine, const Call::Config& config) new CpuOveruseObserverProxy(config.overuse_callback)); } + render_ = ViERender::GetInterface(video_engine_); + assert(render_ != NULL); + + render_->RegisterVideoRenderModule(*external_render_.get()); + rtp_rtcp_ = ViERTP_RTCP::GetInterface(video_engine_); assert(rtp_rtcp_ != NULL); @@ -211,8 +222,12 @@ Call::Call(webrtc::VideoEngine* video_engine, const Call::Config& config) Call::~Call() { base_->DeleteChannel(base_channel_id_); + + render_->DeRegisterVideoRenderModule(*external_render_.get()); + base_->Release(); codec_->Release(); + render_->Release(); rtp_rtcp_->Release(); webrtc::VideoEngine::Delete(video_engine_); } diff --git a/webrtc/video/video_receive_stream.cc b/webrtc/video/video_receive_stream.cc index fee90f44ff..4699ca4f17 100644 --- a/webrtc/video/video_receive_stream.cc +++ b/webrtc/video/video_receive_stream.cc @@ -102,6 +102,7 @@ std::string VideoReceiveStream::Config::Rtp::ToString() const { namespace internal { namespace { + VideoCodec CreateDecoderVideoCodec(const VideoReceiveStream::Decoder& decoder) { VideoCodec codec; memset(&codec, 0, sizeof(codec)); diff --git a/webrtc/video_engine/vie_renderer.cc b/webrtc/video_engine/vie_renderer.cc index 5c053c3c71..d9b05f26cf 100644 --- a/webrtc/video_engine/vie_renderer.cc +++ b/webrtc/video_engine/vie_renderer.cc @@ -39,8 +39,7 @@ ViERenderer::~ViERenderer(void) { if (render_callback_) render_module_.DeleteIncomingRenderStream(render_id_); - if (incoming_external_callback_) - delete incoming_external_callback_; + delete incoming_external_callback_; } int32_t ViERenderer::StartRender() {