Use an external-only VideoRenderModule in Call.
The default render module instantiated from inside VideoEngine if none exists instantiates platform-specific code. Call only uses external rendering, so this is an unneccessary overhead. BUG=1667 R=mflodman@webrtc.org Review URL: https://webrtc-codereview.appspot.com/39069004 Cr-Commit-Position: refs/heads/master@{#8346} git-svn-id: http://webrtc.googlecode.com/svn/trunk@8346 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
parent
a4ef2ce29d
commit
9e4e524f38
@ -22,6 +22,7 @@
|
|||||||
#include "webrtc/modules/rtp_rtcp/source/byte_io.h"
|
#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/vp8/include/vp8.h"
|
||||||
#include "webrtc/modules/video_coding/codecs/vp9/include/vp9.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/critical_section_wrapper.h"
|
||||||
#include "webrtc/system_wrappers/interface/logging.h"
|
#include "webrtc/system_wrappers/interface/logging.h"
|
||||||
#include "webrtc/system_wrappers/interface/rw_lock_wrapper.h"
|
#include "webrtc/system_wrappers/interface/rw_lock_wrapper.h"
|
||||||
@ -152,9 +153,12 @@ class Call : public webrtc::Call, public PacketReceiver {
|
|||||||
VideoEngine* video_engine_;
|
VideoEngine* video_engine_;
|
||||||
ViERTP_RTCP* rtp_rtcp_;
|
ViERTP_RTCP* rtp_rtcp_;
|
||||||
ViECodec* codec_;
|
ViECodec* codec_;
|
||||||
|
ViERender* render_;
|
||||||
ViEBase* base_;
|
ViEBase* base_;
|
||||||
int base_channel_id_;
|
int base_channel_id_;
|
||||||
|
|
||||||
|
scoped_ptr<VideoRender> external_render_;
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(Call);
|
DISALLOW_COPY_AND_ASSIGN(Call);
|
||||||
};
|
};
|
||||||
} // namespace internal
|
} // namespace internal
|
||||||
@ -177,7 +181,9 @@ Call::Call(webrtc::VideoEngine* video_engine, const Call::Config& config)
|
|||||||
receive_crit_(RWLockWrapper::CreateRWLock()),
|
receive_crit_(RWLockWrapper::CreateRWLock()),
|
||||||
send_crit_(RWLockWrapper::CreateRWLock()),
|
send_crit_(RWLockWrapper::CreateRWLock()),
|
||||||
video_engine_(video_engine),
|
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(video_engine != NULL);
|
||||||
assert(config.send_transport != 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));
|
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_);
|
rtp_rtcp_ = ViERTP_RTCP::GetInterface(video_engine_);
|
||||||
assert(rtp_rtcp_ != NULL);
|
assert(rtp_rtcp_ != NULL);
|
||||||
|
|
||||||
@ -211,8 +222,12 @@ Call::Call(webrtc::VideoEngine* video_engine, const Call::Config& config)
|
|||||||
|
|
||||||
Call::~Call() {
|
Call::~Call() {
|
||||||
base_->DeleteChannel(base_channel_id_);
|
base_->DeleteChannel(base_channel_id_);
|
||||||
|
|
||||||
|
render_->DeRegisterVideoRenderModule(*external_render_.get());
|
||||||
|
|
||||||
base_->Release();
|
base_->Release();
|
||||||
codec_->Release();
|
codec_->Release();
|
||||||
|
render_->Release();
|
||||||
rtp_rtcp_->Release();
|
rtp_rtcp_->Release();
|
||||||
webrtc::VideoEngine::Delete(video_engine_);
|
webrtc::VideoEngine::Delete(video_engine_);
|
||||||
}
|
}
|
||||||
|
@ -102,6 +102,7 @@ std::string VideoReceiveStream::Config::Rtp::ToString() const {
|
|||||||
|
|
||||||
namespace internal {
|
namespace internal {
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
VideoCodec CreateDecoderVideoCodec(const VideoReceiveStream::Decoder& decoder) {
|
VideoCodec CreateDecoderVideoCodec(const VideoReceiveStream::Decoder& decoder) {
|
||||||
VideoCodec codec;
|
VideoCodec codec;
|
||||||
memset(&codec, 0, sizeof(codec));
|
memset(&codec, 0, sizeof(codec));
|
||||||
|
@ -39,8 +39,7 @@ ViERenderer::~ViERenderer(void) {
|
|||||||
if (render_callback_)
|
if (render_callback_)
|
||||||
render_module_.DeleteIncomingRenderStream(render_id_);
|
render_module_.DeleteIncomingRenderStream(render_id_);
|
||||||
|
|
||||||
if (incoming_external_callback_)
|
delete incoming_external_callback_;
|
||||||
delete incoming_external_callback_;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t ViERenderer::StartRender() {
|
int32_t ViERenderer::StartRender() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user