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}
This commit is contained in:
nisse 2016-05-25 06:25:17 -07:00 committed by Commit bot
parent 1f0ad1085d
commit e5e5292adb
3 changed files with 9 additions and 11 deletions

View File

@ -175,7 +175,7 @@ bool IncomingVideoStream::IncomingVideoStreamProcess() {
} }
// Get a new frame to render and the time for the frame after this one. // Get a new frame to render and the time for the frame after this one.
VideoFrame frame_to_render; rtc::Optional<VideoFrame> frame_to_render;
uint32_t wait_time; uint32_t wait_time;
{ {
rtc::CritScope cs(&buffer_critsect_); rtc::CritScope cs(&buffer_critsect_);
@ -189,17 +189,14 @@ bool IncomingVideoStream::IncomingVideoStreamProcess() {
} }
deliver_buffer_event_->StartTimer(false, wait_time); deliver_buffer_event_->StartTimer(false, wait_time);
DeliverFrame(frame_to_render); if (frame_to_render)
DeliverFrame(*frame_to_render);
} }
return true; return true;
} }
void IncomingVideoStream::DeliverFrame(const VideoFrame& video_frame) { void IncomingVideoStream::DeliverFrame(const VideoFrame& video_frame) {
rtc::CritScope cs(&thread_critsect_); rtc::CritScope cs(&thread_critsect_);
if (video_frame.IsZeroSize()) {
// No frame.
return;
}
// Send frame for rendering. // Send frame for rendering.
if (external_callback_) { if (external_callback_) {

View File

@ -53,11 +53,11 @@ int32_t VideoRenderFrames::AddFrame(const VideoFrame& new_frame) {
return static_cast<int32_t>(incoming_frames_.size()); return static_cast<int32_t>(incoming_frames_.size());
} }
VideoFrame VideoRenderFrames::FrameToRender() { rtc::Optional<VideoFrame> VideoRenderFrames::FrameToRender() {
VideoFrame render_frame; rtc::Optional<VideoFrame> render_frame;
// Get the newest frame that can be released for rendering. // Get the newest frame that can be released for rendering.
while (!incoming_frames_.empty() && TimeToNextFrameRelease() <= 0) { while (!incoming_frames_.empty() && TimeToNextFrameRelease() <= 0) {
render_frame = incoming_frames_.front(); render_frame = rtc::Optional<VideoFrame>(incoming_frames_.front());
incoming_frames_.pop_front(); incoming_frames_.pop_front();
} }
return render_frame; return render_frame;

View File

@ -15,6 +15,7 @@
#include <list> #include <list>
#include "webrtc/base/optional.h"
#include "webrtc/video_frame.h" #include "webrtc/video_frame.h"
namespace webrtc { namespace webrtc {
@ -27,8 +28,8 @@ class VideoRenderFrames {
// Add a frame to the render queue // Add a frame to the render queue
int32_t AddFrame(const VideoFrame& new_frame); int32_t AddFrame(const VideoFrame& new_frame);
// Get a frame for rendering, or a zero-size frame if it's not time to render. // Get a frame for rendering, or false if it's not time to render.
VideoFrame FrameToRender(); rtc::Optional<VideoFrame> FrameToRender();
// Releases all frames // Releases all frames
int32_t ReleaseAllFrames(); int32_t ReleaseAllFrames();