Index: webrtc/media/base/videobroadcaster.cc |
diff --git a/webrtc/media/base/videobroadcaster.cc b/webrtc/media/base/videobroadcaster.cc |
index ef5c49b4a188a416641bd2af7ea04885f31842d5..20e8c976c74d50248904a8a8955db0a5c31a7495 100644 |
--- a/webrtc/media/base/videobroadcaster.cc |
+++ b/webrtc/media/base/videobroadcaster.cc |
@@ -54,9 +54,7 @@ |
rtc::CritScope cs(&sinks_and_wants_lock_); |
for (auto& sink_pair : sink_pairs()) { |
if (sink_pair.wants.black_frames) { |
- sink_pair.sink->OnFrame(cricket::WebRtcVideoFrame( |
- GetBlackFrameBuffer(frame.width(), frame.height()), |
- frame.rotation(), frame.timestamp_us())); |
+ sink_pair.sink->OnFrame(GetBlackFrame(frame)); |
} else { |
sink_pair.sink->OnFrame(frame); |
} |
@@ -95,17 +93,20 @@ |
current_wants_ = wants; |
} |
-const rtc::scoped_refptr<webrtc::VideoFrameBuffer>& |
-VideoBroadcaster::GetBlackFrameBuffer(int width, int height) { |
- if (!black_frame_buffer_ || black_frame_buffer_->width() != width || |
- black_frame_buffer_->height() != height) { |
- rtc::scoped_refptr<webrtc::I420Buffer> buffer = |
- new RefCountedObject<webrtc::I420Buffer>(width, height); |
- buffer->SetToBlack(); |
- black_frame_buffer_ = buffer; |
+const cricket::VideoFrame& VideoBroadcaster::GetBlackFrame( |
+ const cricket::VideoFrame& frame) { |
+ if (black_frame_ && black_frame_->width() == frame.width() && |
+ black_frame_->height() == frame.height() && |
+ black_frame_->rotation() == frame.rotation()) { |
+ black_frame_->set_timestamp_us(frame.timestamp_us()); |
+ return *black_frame_; |
} |
- |
- return black_frame_buffer_; |
+ black_frame_.reset(new cricket::WebRtcVideoFrame( |
+ new rtc::RefCountedObject<webrtc::I420Buffer>(frame.width(), |
+ frame.height()), |
+ frame.rotation(), frame.timestamp_us())); |
+ black_frame_->SetToBlack(); |
+ return *black_frame_; |
} |
} // namespace rtc |