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:
parent
1f0ad1085d
commit
e5e5292adb
@ -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_) {
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user