Delete method webrtc::VideoFrame::Reset.

Mainly affects VideoCaptureInput.

BUG=webrtc:5682

Review URL: https://codereview.webrtc.org/1889443002

Cr-Commit-Position: refs/heads/master@{#12439}
This commit is contained in:
nisse
2016-04-20 03:25:36 -07:00
committed by Commit bot
parent 1a0c4611d7
commit c7fe3c27eb
7 changed files with 29 additions and 51 deletions

View File

@ -164,21 +164,6 @@ TEST(TestVideoFrame, ShallowCopy) {
EXPECT_NE(frame2.rotation(), frame1.rotation()); EXPECT_NE(frame2.rotation(), frame1.rotation());
} }
TEST(TestVideoFrame, Reset) {
VideoFrame frame;
frame.CreateEmptyFrame(5, 5, 5, 5, 5);
frame.set_ntp_time_ms(1);
frame.set_timestamp(2);
frame.set_render_time_ms(3);
ASSERT_TRUE(frame.video_frame_buffer() != NULL);
frame.Reset();
EXPECT_EQ(0u, frame.ntp_time_ms());
EXPECT_EQ(0u, frame.render_time_ms());
EXPECT_EQ(0u, frame.timestamp());
EXPECT_TRUE(frame.video_frame_buffer() == NULL);
}
TEST(TestVideoFrame, CopyBuffer) { TEST(TestVideoFrame, CopyBuffer) {
VideoFrame frame1, frame2; VideoFrame frame1, frame2;
int width = 15; int width = 15;

View File

@ -29,11 +29,12 @@ int ExpectedSize(int plane_stride, int image_height, PlaneType type) {
return plane_stride * ((image_height + 1) / 2); return plane_stride * ((image_height + 1) / 2);
} }
VideoFrame::VideoFrame() { VideoFrame::VideoFrame()
// Intentionally using Reset instead of initializer list so that any missed : video_frame_buffer_(nullptr),
// fields in Reset will be caught by memory checkers. timestamp_(0),
Reset(); ntp_time_ms_(0),
} render_time_ms_(0),
rotation_(kVideoRotation_0) {}
VideoFrame::VideoFrame(const rtc::scoped_refptr<VideoFrameBuffer>& buffer, VideoFrame::VideoFrame(const rtc::scoped_refptr<VideoFrameBuffer>& buffer,
uint32_t timestamp, uint32_t timestamp,
@ -129,14 +130,6 @@ void VideoFrame::ShallowCopy(const VideoFrame& videoFrame) {
rotation_ = videoFrame.rotation_; rotation_ = videoFrame.rotation_;
} }
void VideoFrame::Reset() {
video_frame_buffer_ = nullptr;
timestamp_ = 0;
ntp_time_ms_ = 0;
render_time_ms_ = 0;
rotation_ = kVideoRotation_0;
}
uint8_t* VideoFrame::buffer(PlaneType type) { uint8_t* VideoFrame::buffer(PlaneType type) {
return video_frame_buffer_ ? video_frame_buffer_->MutableData(type) return video_frame_buffer_ ? video_frame_buffer_->MutableData(type)
: nullptr; : nullptr;

View File

@ -84,10 +84,11 @@ void VideoCaptureInput::IncomingCapturedFrame(const VideoFrame& video_frame) {
return; return;
} }
captured_frame_.ShallowCopy(incoming_frame); captured_frame_.reset(new VideoFrame);
captured_frame_->ShallowCopy(incoming_frame);
last_captured_timestamp_ = incoming_frame.ntp_time_ms(); last_captured_timestamp_ = incoming_frame.ntp_time_ms();
overuse_detector_->FrameCaptured(captured_frame_); overuse_detector_->FrameCaptured(*captured_frame_);
TRACE_EVENT_ASYNC_BEGIN1("webrtc", "Video", video_frame.render_time_ms(), TRACE_EVENT_ASYNC_BEGIN1("webrtc", "Video", video_frame.render_time_ms(),
"render_time", video_frame.render_time_ms()); "render_time", video_frame.render_time_ms());
@ -97,11 +98,11 @@ void VideoCaptureInput::IncomingCapturedFrame(const VideoFrame& video_frame) {
bool VideoCaptureInput::GetVideoFrame(VideoFrame* video_frame) { bool VideoCaptureInput::GetVideoFrame(VideoFrame* video_frame) {
rtc::CritScope lock(&crit_); rtc::CritScope lock(&crit_);
if (captured_frame_.IsZeroSize()) if (!captured_frame_)
return false; return false;
*video_frame = captured_frame_; *video_frame = *captured_frame_;
captured_frame_.Reset(); captured_frame_.reset();
return true; return true;
} }

View File

@ -53,7 +53,7 @@ class VideoCaptureInput : public webrtc::VideoCaptureInput {
SendStatisticsProxy* const stats_proxy_; SendStatisticsProxy* const stats_proxy_;
rtc::Event* const capture_event_; rtc::Event* const capture_event_;
VideoFrame captured_frame_ GUARDED_BY(crit_); std::unique_ptr<VideoFrame> captured_frame_ GUARDED_BY(crit_);
Clock* const clock_; Clock* const clock_;
// Used to make sure incoming time stamp is increasing for every frame. // Used to make sure incoming time stamp is increasing for every frame.
int64_t last_captured_timestamp_; int64_t last_captured_timestamp_;

View File

@ -94,17 +94,18 @@ TEST_F(VideoCaptureInputTest, DoesNotRetainHandleNorCopyBuffer) {
rtc::Event* const event_; rtc::Event* const event_;
}; };
VideoFrame frame( {
new rtc::RefCountedObject<TestBuffer>(&frame_destroyed_event), 1, 1, VideoFrame frame(
kVideoRotation_0); new rtc::RefCountedObject<TestBuffer>(&frame_destroyed_event), 1, 1,
kVideoRotation_0);
AddInputFrame(&frame); AddInputFrame(&frame);
WaitOutputFrame(); WaitOutputFrame();
EXPECT_EQ(output_frames_[0]->video_frame_buffer().get(), EXPECT_EQ(output_frames_[0]->video_frame_buffer().get(),
frame.video_frame_buffer().get()); frame.video_frame_buffer().get());
output_frames_.clear(); output_frames_.clear();
frame.Reset(); }
EXPECT_TRUE(frame_destroyed_event.Wait(FRAME_TIMEOUT_MS)); EXPECT_TRUE(frame_destroyed_event.Wait(FRAME_TIMEOUT_MS));
} }

View File

@ -21,6 +21,7 @@
#include "webrtc/base/checks.h" #include "webrtc/base/checks.h"
#include "webrtc/base/event.h" #include "webrtc/base/event.h"
#include "webrtc/base/format_macros.h" #include "webrtc/base/format_macros.h"
#include "webrtc/base/optional.h"
#include "webrtc/base/timeutils.h" #include "webrtc/base/timeutils.h"
#include "webrtc/call.h" #include "webrtc/call.h"
#include "webrtc/common_video/libyuv/include/webrtc_libyuv.h" #include "webrtc/common_video/libyuv/include/webrtc_libyuv.h"
@ -146,8 +147,8 @@ class VideoAnalyzer : public PacketReceiver,
{ {
rtc::CritScope lock(&crit_); rtc::CritScope lock(&crit_);
if (first_send_frame_.IsZeroSize() && rtp_timestamp_delta_ == 0) if (!first_send_timestamp_ && rtp_timestamp_delta_ == 0)
first_send_frame_ = copy; first_send_timestamp_ = rtc::Optional<uint32_t>(copy.timestamp());
frames_.push_back(copy); frames_.push_back(copy);
} }
@ -169,8 +170,8 @@ class VideoAnalyzer : public PacketReceiver,
rtc::CritScope lock(&crit_); rtc::CritScope lock(&crit_);
if (rtp_timestamp_delta_ == 0) { if (rtp_timestamp_delta_ == 0) {
rtp_timestamp_delta_ = header.timestamp - first_send_frame_.timestamp(); rtp_timestamp_delta_ = header.timestamp - *first_send_timestamp_;
first_send_frame_.Reset(); first_send_timestamp_ = rtc::Optional<uint32_t>();
} }
int64_t timestamp = int64_t timestamp =
wrap_handler_.Unwrap(header.timestamp - rtp_timestamp_delta_); wrap_handler_.Unwrap(header.timestamp - rtp_timestamp_delta_);
@ -622,7 +623,7 @@ class VideoAnalyzer : public PacketReceiver,
std::map<int64_t, int64_t> send_times_ GUARDED_BY(crit_); std::map<int64_t, int64_t> send_times_ GUARDED_BY(crit_);
std::map<int64_t, int64_t> recv_times_ GUARDED_BY(crit_); std::map<int64_t, int64_t> recv_times_ GUARDED_BY(crit_);
std::map<int64_t, size_t> encoded_frame_sizes_ GUARDED_BY(crit_); std::map<int64_t, size_t> encoded_frame_sizes_ GUARDED_BY(crit_);
VideoFrame first_send_frame_ GUARDED_BY(crit_); rtc::Optional<uint32_t> first_send_timestamp_ GUARDED_BY(crit_);
const double avg_psnr_threshold_; const double avg_psnr_threshold_;
const double avg_ssim_threshold_; const double avg_ssim_threshold_;

View File

@ -65,9 +65,6 @@ class VideoFrame {
// reference to the video buffer also retained by |videoFrame|. // reference to the video buffer also retained by |videoFrame|.
void ShallowCopy(const VideoFrame& videoFrame); void ShallowCopy(const VideoFrame& videoFrame);
// Release frame buffer and reset time stamps.
void Reset();
// Get pointer to buffer per plane. // Get pointer to buffer per plane.
uint8_t* buffer(PlaneType type); uint8_t* buffer(PlaneType type);
// Overloading with const. // Overloading with const.