From e5e5292adb97c9dcbf45bfc85d030b0eeb25d5fd Mon Sep 17 00:00:00 2001 From: nisse Date: Wed, 25 May 2016 06:25:17 -0700 Subject: [PATCH] Let VideoRenderFrames::FrameToRender return a rtc::Optional. This eliminates one use of IsZeroSize. BUG=webrtc:5682 Review-Url: https://codereview.webrtc.org/2008513003 Cr-Commit-Position: refs/heads/master@{#12891} --- webrtc/common_video/incoming_video_stream.cc | 9 +++------ webrtc/common_video/video_render_frames.cc | 6 +++--- webrtc/common_video/video_render_frames.h | 5 +++-- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/webrtc/common_video/incoming_video_stream.cc b/webrtc/common_video/incoming_video_stream.cc index 5fc8eae0bd..7bc24861b8 100644 --- a/webrtc/common_video/incoming_video_stream.cc +++ b/webrtc/common_video/incoming_video_stream.cc @@ -175,7 +175,7 @@ bool IncomingVideoStream::IncomingVideoStreamProcess() { } // Get a new frame to render and the time for the frame after this one. - VideoFrame frame_to_render; + rtc::Optional frame_to_render; uint32_t wait_time; { rtc::CritScope cs(&buffer_critsect_); @@ -189,17 +189,14 @@ bool IncomingVideoStream::IncomingVideoStreamProcess() { } deliver_buffer_event_->StartTimer(false, wait_time); - DeliverFrame(frame_to_render); + if (frame_to_render) + DeliverFrame(*frame_to_render); } return true; } void IncomingVideoStream::DeliverFrame(const VideoFrame& video_frame) { rtc::CritScope cs(&thread_critsect_); - if (video_frame.IsZeroSize()) { - // No frame. - return; - } // Send frame for rendering. if (external_callback_) { diff --git a/webrtc/common_video/video_render_frames.cc b/webrtc/common_video/video_render_frames.cc index 3e5dfe9d10..62b317d966 100644 --- a/webrtc/common_video/video_render_frames.cc +++ b/webrtc/common_video/video_render_frames.cc @@ -53,11 +53,11 @@ int32_t VideoRenderFrames::AddFrame(const VideoFrame& new_frame) { return static_cast(incoming_frames_.size()); } -VideoFrame VideoRenderFrames::FrameToRender() { - VideoFrame render_frame; +rtc::Optional VideoRenderFrames::FrameToRender() { + rtc::Optional render_frame; // Get the newest frame that can be released for rendering. while (!incoming_frames_.empty() && TimeToNextFrameRelease() <= 0) { - render_frame = incoming_frames_.front(); + render_frame = rtc::Optional(incoming_frames_.front()); incoming_frames_.pop_front(); } return render_frame; diff --git a/webrtc/common_video/video_render_frames.h b/webrtc/common_video/video_render_frames.h index 450c1f2215..acd955887f 100644 --- a/webrtc/common_video/video_render_frames.h +++ b/webrtc/common_video/video_render_frames.h @@ -15,6 +15,7 @@ #include +#include "webrtc/base/optional.h" #include "webrtc/video_frame.h" namespace webrtc { @@ -27,8 +28,8 @@ class VideoRenderFrames { // Add a frame to the render queue int32_t AddFrame(const VideoFrame& new_frame); - // Get a frame for rendering, or a zero-size frame if it's not time to render. - VideoFrame FrameToRender(); + // Get a frame for rendering, or false if it's not time to render. + rtc::Optional FrameToRender(); // Releases all frames int32_t ReleaseAllFrames();