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.
|
// 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_) {
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user