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.
VideoFrame frame_to_render;
rtc::Optional<VideoFrame> 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_) {

View File

@ -53,11 +53,11 @@ int32_t VideoRenderFrames::AddFrame(const VideoFrame& new_frame) {
return static_cast<int32_t>(incoming_frames_.size());
}
VideoFrame VideoRenderFrames::FrameToRender() {
VideoFrame render_frame;
rtc::Optional<VideoFrame> VideoRenderFrames::FrameToRender() {
rtc::Optional<VideoFrame> 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<VideoFrame>(incoming_frames_.front());
incoming_frames_.pop_front();
}
return render_frame;

View File

@ -15,6 +15,7 @@
#include <list>
#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<VideoFrame> FrameToRender();
// Releases all frames
int32_t ReleaseAllFrames();