* Remove the previous renderer before set a new one.
* Allow to unregister a renderer by giving a NULL point. Review URL: http://webrtc-codereview.appspot.com/123001 git-svn-id: http://webrtc.googlecode.com/svn/trunk@412 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
@ -53,14 +53,18 @@ class WebRtcRenderAdapter : public webrtc::ExternalRenderer {
|
|||||||
|
|
||||||
virtual int FrameSizeChange(unsigned int width, unsigned int height,
|
virtual int FrameSizeChange(unsigned int width, unsigned int height,
|
||||||
unsigned int /*number_of_streams*/) {
|
unsigned int /*number_of_streams*/) {
|
||||||
ASSERT(renderer_ != NULL);
|
if (renderer_ == NULL) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
width_ = width;
|
width_ = width;
|
||||||
height_ = height;
|
height_ = height;
|
||||||
return renderer_->SetSize(width_, height_, 0) ? 0 : -1;
|
return renderer_->SetSize(width_, height_, 0) ? 0 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual int DeliverFrame(unsigned char* buffer, int buffer_size) {
|
virtual int DeliverFrame(unsigned char* buffer, int buffer_size) {
|
||||||
ASSERT(renderer_ != NULL);
|
if (renderer_ == NULL) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
WebRtcVideoFrame video_frame;
|
WebRtcVideoFrame video_frame;
|
||||||
// TODO(ronghuawu): Currently by the time DeliverFrame got called,
|
// TODO(ronghuawu): Currently by the time DeliverFrame got called,
|
||||||
// ViE expects the frame will be rendered ASAP. However, the libjingle
|
// ViE expects the frame will be rendered ASAP. However, the libjingle
|
||||||
@ -711,6 +715,7 @@ bool WebRtcVideoMediaChannel::SetRenderer(
|
|||||||
if (remote_renderer_.get()) {
|
if (remote_renderer_.get()) {
|
||||||
// If the renderer already set, stop it first
|
// If the renderer already set, stop it first
|
||||||
engine_->video_engine()->render()->StopRender(vie_channel_);
|
engine_->video_engine()->render()->StopRender(vie_channel_);
|
||||||
|
engine_->video_engine()->render()->RemoveRenderer(vie_channel_);
|
||||||
}
|
}
|
||||||
remote_renderer_.reset(new WebRtcRenderAdapter(renderer));
|
remote_renderer_.reset(new WebRtcRenderAdapter(renderer));
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user