Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(504)

Side by Side Diff: webrtc/media/engine/webrtcvideoengine2_unittest.cc

Issue 1865283002: Use microsecond timestamp in cricket::VideoFrame. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Revert conversion, trust that CapturedFrame timestamps are right. Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2004 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 // Allow error to be no more than 1. 476 // Allow error to be no more than 1.
477 EXPECT_NEAR(cricket::VideoFormat::FpsToInterval(30) / 1E6, interval, 1); 477 EXPECT_NEAR(cricket::VideoFormat::FpsToInterval(30) / 1E6, interval, 1);
478 478
479 last_timestamp = timestamp; 479 last_timestamp = timestamp;
480 } 480 }
481 481
482 // Remove stream previously added to free the external encoder instance. 482 // Remove stream previously added to free the external encoder instance.
483 EXPECT_TRUE(channel->RemoveSendStream(kSsrc)); 483 EXPECT_TRUE(channel->RemoveSendStream(kSsrc));
484 } 484 }
485 485
486 // TODO(nisse): This test should be no longer needed when the
perkj_webrtc 2016/04/08 14:52:18 why not?
nisse-webrtc 2016/04/11 06:58:56 Because it should be the responsibility of whoever
487 // timestamp_us refactoring is done.
486 TEST_F(WebRtcVideoEngine2Test, 488 TEST_F(WebRtcVideoEngine2Test,
487 ProducesIncreasingTimestampsWithResetInputSources) { 489 ProducesIncreasingTimestampsWithResetInputSources) {
488 cricket::FakeWebRtcVideoEncoderFactory encoder_factory; 490 cricket::FakeWebRtcVideoEncoderFactory encoder_factory;
489 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP8, "VP8"); 491 encoder_factory.AddSupportedVideoCodecType(webrtc::kVideoCodecVP8, "VP8");
490 std::vector<cricket::VideoCodec> codecs; 492 std::vector<cricket::VideoCodec> codecs;
491 codecs.push_back(kVp8Codec); 493 codecs.push_back(kVp8Codec);
492 494
493 FakeCall* fake_call = new FakeCall(webrtc::Call::Config()); 495 FakeCall* fake_call = new FakeCall(webrtc::Call::Config());
494 call_.reset(fake_call); 496 call_.reset(fake_call);
495 std::unique_ptr<VideoMediaChannel> channel( 497 std::unique_ptr<VideoMediaChannel> channel(
496 SetUpForExternalEncoderFactory(&encoder_factory, codecs)); 498 SetUpForExternalEncoderFactory(&encoder_factory, codecs));
497 499
498 EXPECT_TRUE( 500 EXPECT_TRUE(
499 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc))); 501 channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
500 channel->SetSend(true); 502 channel->SetSend(true);
501 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0]; 503 FakeVideoSendStream* stream = fake_call->GetVideoSendStreams()[0];
502 504
503 FakeVideoCapturer capturer1; 505 FakeVideoCapturer capturer1;
504 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer1)); 506 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer1));
505 507
506 cricket::CapturedFrame frame; 508 cricket::CapturedFrame frame;
507 frame.width = 1280; 509 frame.width = 1280;
508 frame.height = 720; 510 frame.height = 720;
509 frame.fourcc = cricket::FOURCC_I420; 511 frame.fourcc = cricket::FOURCC_I420;
510 frame.data_size = frame.width * frame.height + 512 frame.data_size = frame.width * frame.height +
511 2 * ((frame.width + 1) / 2) * ((frame.height + 1) / 2); 513 2 * ((frame.width + 1) / 2) * ((frame.height + 1) / 2);
512 std::unique_ptr<char[]> data(new char[frame.data_size]); 514 std::unique_ptr<char[]> data(new char[frame.data_size]);
513 frame.data = data.get(); 515 frame.data = data.get();
514 memset(frame.data, 1, frame.data_size); 516 memset(frame.data, 1, frame.data_size);
515 const int kInitialTimestamp = 123456; 517 int64_t initial_timestamp = rtc::TimeNanos();
516 frame.time_stamp = kInitialTimestamp; 518 frame.time_stamp = initial_timestamp;
517 519
518 // Deliver initial frame. 520 // Deliver initial frame.
519 capturer1.SignalCapturedFrame(&frame); 521 capturer1.SignalCapturedFrame(&frame);
520 // Deliver next frame 1 second later. 522 // Deliver next frame 1 second later.
521 frame.time_stamp += rtc::kNumNanosecsPerSec; 523 frame.time_stamp += rtc::kNumNanosecsPerSec;
522 rtc::Thread::Current()->SleepMs(1000); 524 rtc::Thread::Current()->SleepMs(1000);
523 capturer1.SignalCapturedFrame(&frame); 525 capturer1.SignalCapturedFrame(&frame);
524 526
525 int64_t capturer1_last_timestamp = stream->GetLastTimestamp(); 527 int64_t capturer1_last_timestamp = stream->GetLastTimestamp();
526 // Reset input source, should still be continuous even though input-frame 528 // Reset input source, should still be continuous even though input-frame
527 // timestamp is less than before. 529 // timestamp is less than before.
528 FakeVideoCapturer capturer2; 530 FakeVideoCapturer capturer2;
529 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer2)); 531 EXPECT_TRUE(channel->SetCapturer(kSsrc, &capturer2));
530 532
531 rtc::Thread::Current()->SleepMs(1); 533 rtc::Thread::Current()->SleepMs(1);
532 // Deliver with a timestamp (10 seconds) before the previous initial one, 534 // Deliver with a timestamp (10 seconds) before the previous initial one,
533 // these should not be related at all anymore and it should still work fine. 535 // these should not be related at all anymore and it should still work fine.
534 frame.time_stamp = kInitialTimestamp - 10000; 536 frame.time_stamp = initial_timestamp - 10 * rtc::kNumNanosecsPerSec;;
535 capturer2.SignalCapturedFrame(&frame); 537 capturer2.SignalCapturedFrame(&frame);
536 538
537 // New timestamp should be at least 1ms in the future and not old. 539 // New timestamp should be at least 1ms in the future and not old.
538 EXPECT_GT(stream->GetLastTimestamp(), capturer1_last_timestamp); 540 EXPECT_GT(stream->GetLastTimestamp(), capturer1_last_timestamp);
539 541
540 EXPECT_TRUE(channel->RemoveSendStream(kSsrc)); 542 EXPECT_TRUE(channel->RemoveSendStream(kSsrc));
541 } 543 }
542 544
543 VideoMediaChannel* WebRtcVideoEngine2Test::SetUpForExternalEncoderFactory( 545 VideoMediaChannel* WebRtcVideoEngine2Test::SetUpForExternalEncoderFactory(
544 cricket::WebRtcVideoEncoderFactory* encoder_factory, 546 cricket::WebRtcVideoEncoderFactory* encoder_factory,
(...skipping 3037 matching lines...) Expand 10 before | Expand all | Expand 10 after
3582 } 3584 }
3583 3585
3584 // Test that we normalize send codec format size in simulcast. 3586 // Test that we normalize send codec format size in simulcast.
3585 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) { 3587 TEST_F(WebRtcVideoChannel2SimulcastTest, SetSendCodecsWithOddSizeInSimulcast) {
3586 cricket::VideoCodec codec(kVp8Codec270p); 3588 cricket::VideoCodec codec(kVp8Codec270p);
3587 codec.width += 1; 3589 codec.width += 1;
3588 codec.height += 1; 3590 codec.height += 1;
3589 VerifySimulcastSettings(codec, 2, 2); 3591 VerifySimulcastSettings(codec, 2, 2);
3590 } 3592 }
3591 } // namespace cricket 3593 } // namespace cricket
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698