* 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,
|
||||
unsigned int /*number_of_streams*/) {
|
||||
ASSERT(renderer_ != NULL);
|
||||
if (renderer_ == NULL) {
|
||||
return 0;
|
||||
}
|
||||
width_ = width;
|
||||
height_ = height;
|
||||
return renderer_->SetSize(width_, height_, 0) ? 0 : -1;
|
||||
}
|
||||
|
||||
virtual int DeliverFrame(unsigned char* buffer, int buffer_size) {
|
||||
ASSERT(renderer_ != NULL);
|
||||
if (renderer_ == NULL) {
|
||||
return 0;
|
||||
}
|
||||
WebRtcVideoFrame video_frame;
|
||||
// TODO(ronghuawu): Currently by the time DeliverFrame got called,
|
||||
// ViE expects the frame will be rendered ASAP. However, the libjingle
|
||||
@ -711,6 +715,7 @@ bool WebRtcVideoMediaChannel::SetRenderer(
|
||||
if (remote_renderer_.get()) {
|
||||
// If the renderer already set, stop it first
|
||||
engine_->video_engine()->render()->StopRender(vie_channel_);
|
||||
engine_->video_engine()->render()->RemoveRenderer(vie_channel_);
|
||||
}
|
||||
remote_renderer_.reset(new WebRtcRenderAdapter(renderer));
|
||||
|
||||
|
Reference in New Issue
Block a user