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:
@ -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;
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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_;
|
||||||
|
|||||||
@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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_;
|
||||||
|
|
||||||
|
|||||||
@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user