| 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
|
|
|