Document that preferred VideoFrame constructor takes no RTP timestamp.

And update most internal calls to use it.

Bug: webrtc:5740, webrtc:9372
Change-Id: Ib57d4ebfa7b0729af6d22981a792f0fdadf8a13f
Reviewed-on: https://webrtc-review.googlesource.com/81743
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23567}
This commit is contained in:
Niels Möller
2018-06-11 11:14:32 +02:00
committed by Commit Bot
parent 425f713d24
commit 2ac64467c4
9 changed files with 29 additions and 30 deletions

View File

@ -25,11 +25,11 @@ VideoFrame::VideoFrame(const rtc::scoped_refptr<VideoFrameBuffer>& buffer,
rotation_(rotation) {}
VideoFrame::VideoFrame(const rtc::scoped_refptr<VideoFrameBuffer>& buffer,
uint32_t timestamp,
uint32_t timestamp_rtp,
int64_t render_time_ms,
VideoRotation rotation)
: video_frame_buffer_(buffer),
timestamp_rtp_(timestamp),
timestamp_rtp_(timestamp_rtp),
ntp_time_ms_(0),
timestamp_us_(render_time_ms * rtc::kNumMicrosecsPerMillisec),
rotation_(rotation) {

View File

@ -20,16 +20,14 @@ namespace webrtc {
class VideoFrame {
public:
// TODO(nisse): This constructor is consistent with the now deleted
// cricket::WebRtcVideoFrame. We should consider whether or not we
// want to stick to this style and deprecate the other constructor.
// Preferred constructor.
VideoFrame(const rtc::scoped_refptr<VideoFrameBuffer>& buffer,
webrtc::VideoRotation rotation,
int64_t timestamp_us);
// Preferred constructor.
// For use by the parts of the pipeline that needs the RTP 90kHz timestamp.
VideoFrame(const rtc::scoped_refptr<VideoFrameBuffer>& buffer,
uint32_t timestamp,
uint32_t timestamp_rtp,
int64_t render_time_ms,
VideoRotation rotation);

View File

@ -70,8 +70,8 @@ class FakeWebRtcVideoCaptureModule : public webrtc::VideoCaptureModule {
// Initialize memory to satisfy DrMemory tests. See
// https://bugs.chromium.org/p/libyuv/issues/detail?id=377
buffer->InitializeData();
callback_->OnFrame(
webrtc::VideoFrame(buffer, 0, 0, webrtc::kVideoRotation_0));
callback_->OnFrame(webrtc::VideoFrame(buffer, webrtc::kVideoRotation_0,
0 /* timestamp_us */));
});
}

View File

@ -158,7 +158,8 @@ void VideoEncoderSoftwareFallbackWrapperTest::EncodeFrame(int expected_ret) {
I420Buffer::SetBlack(buffer);
std::vector<FrameType> types(1, kVideoFrameKey);
frame_.reset(new VideoFrame(buffer, 0, 0, webrtc::kVideoRotation_0));
frame_.reset(
new VideoFrame(buffer, webrtc::kVideoRotation_0, 0 /* timestamp_us */));
EXPECT_EQ(expected_ret, fallback_wrapper_.Encode(*frame_, nullptr, &types));
}

View File

@ -370,8 +370,8 @@ class VideoCaptureExternalTest : public testing::Test {
buffer->ChromaHeight() * buffer->StrideU());
memset(buffer->MutableDataV(), 127,
buffer->ChromaHeight() * buffer->StrideV());
test_frame_.reset(
new webrtc::VideoFrame(buffer, 0, 0, webrtc::kVideoRotation_0));
test_frame_.reset(new webrtc::VideoFrame(buffer, webrtc::kVideoRotation_0,
0 /* timestamp_us */));
SleepMs(1); // Wait 1ms so that two tests can't have the same timestamp.

View File

@ -137,9 +137,8 @@ int H264DecoderImpl::AVGetBuffer2(
total_size,
AVFreeBuffer2,
static_cast<void*>(new VideoFrame(frame_buffer,
0 /* timestamp */,
0 /* render_time_ms */,
kVideoRotation_0)),
kVideoRotation_0,
0 /* timestamp_us */)),
0);
RTC_CHECK(av_frame->buf[0]);
return 0;

View File

@ -66,7 +66,7 @@ class TestMultiplexAdapter : public VideoCodecUnitTest {
yuv_buffer->DataV(), yuv_buffer->StrideV(), yuv_buffer->DataY(),
yuv_buffer->StrideY(), rtc::KeepRefUntilDone(yuv_buffer));
return rtc::WrapUnique<VideoFrame>(
new VideoFrame(yuva_buffer, 123 /* timestamp_us */,
new VideoFrame(yuva_buffer, 123 /* RTP timestamp */,
345 /* render_time_ms */, kVideoRotation_0));
}
@ -79,7 +79,7 @@ class TestMultiplexAdapter : public VideoCodecUnitTest {
yuva_buffer->DataV(), yuva_buffer->StrideV(),
rtc::KeepRefUntilDone(yuva_frame.video_frame_buffer()));
return rtc::WrapUnique<VideoFrame>(
new VideoFrame(axx_buffer, 123 /* timestamp_us */,
new VideoFrame(axx_buffer, 123 /* RTP timestamp */,
345 /* render_time_ms */, kVideoRotation_0));
}

View File

@ -261,8 +261,8 @@ void SimulcastTestFixtureImpl::SetUpCodec(const int* temporal_layer_profile) {
EXPECT_EQ(0, decoder_->InitDecode(&settings_, 1));
input_buffer_ = I420Buffer::Create(kDefaultWidth, kDefaultHeight);
input_buffer_->InitializeData();
input_frame_.reset(
new VideoFrame(input_buffer_, 0, 0, webrtc::kVideoRotation_0));
input_frame_.reset(new VideoFrame(input_buffer_, webrtc::kVideoRotation_0,
0 /* timestamp_us */));
}
void SimulcastTestFixtureImpl::SetUpRateAllocator() {
@ -575,8 +575,8 @@ void SimulcastTestFixtureImpl::SwitchingToOneStream(int width, int height) {
input_buffer_ = I420Buffer::Create(settings_.width, settings_.height);
input_buffer_->InitializeData();
input_frame_.reset(
new VideoFrame(input_buffer_, 0, 0, webrtc::kVideoRotation_0));
input_frame_.reset(new VideoFrame(input_buffer_, webrtc::kVideoRotation_0,
0 /* timestamp_us */));
// The for loop above did not set the bitrate of the highest layer.
settings_.simulcastStream[settings_.numberOfSimulcastStreams - 1].maxBitrate =
@ -615,8 +615,8 @@ void SimulcastTestFixtureImpl::SwitchingToOneStream(int width, int height) {
// Resize |input_frame_| to the new resolution.
input_buffer_ = I420Buffer::Create(settings_.width, settings_.height);
input_buffer_->InitializeData();
input_frame_.reset(
new VideoFrame(input_buffer_, 0, 0, webrtc::kVideoRotation_0));
input_frame_.reset(new VideoFrame(input_buffer_, webrtc::kVideoRotation_0,
0 /* timestamp_us */));
EXPECT_EQ(0, encoder_->Encode(*input_frame_, NULL, &frame_types));
}
@ -773,8 +773,8 @@ void SimulcastTestFixtureImpl::TestStrideEncodeDecode() {
int stride_uv = ((kDefaultWidth + 1) / 2) + 5;
input_buffer_ = I420Buffer::Create(kDefaultWidth, kDefaultHeight, stride_y,
stride_uv, stride_uv);
input_frame_.reset(
new VideoFrame(input_buffer_, 0, 0, webrtc::kVideoRotation_0));
input_frame_.reset(new VideoFrame(input_buffer_, webrtc::kVideoRotation_0,
0 /* timestamp_us */));
// Set color.
int plane_offset[kNumOfPlanes];

View File

@ -90,7 +90,8 @@ class SquareGenerator : public FrameGenerator {
for (const auto& square : squares_)
square->Draw(buffer);
frame_.reset(new VideoFrame(buffer, 0, 0, webrtc::kVideoRotation_0));
frame_.reset(
new VideoFrame(buffer, webrtc::kVideoRotation_0, 0 /* timestamp_us */));
return frame_.get();
}
@ -192,8 +193,8 @@ class YuvFileGenerator : public FrameGenerator {
if (++current_display_count_ >= frame_display_count_)
current_display_count_ = 0;
temp_frame_.reset(
new VideoFrame(last_read_buffer_, 0, 0, webrtc::kVideoRotation_0));
temp_frame_.reset(new VideoFrame(
last_read_buffer_, webrtc::kVideoRotation_0, 0 /* timestamp_us */));
return temp_frame_.get();
}
@ -249,8 +250,8 @@ class SlideGenerator : public FrameGenerator {
if (++current_display_count_ >= frame_display_count_)
current_display_count_ = 0;
frame_.reset(
new VideoFrame(buffer_, 0, 0, webrtc::kVideoRotation_0));
frame_.reset(new VideoFrame(buffer_, webrtc::kVideoRotation_0,
0 /* timestamp_us */));
return frame_.get();
}