OLD | NEW |
1 /* | 1 /* |
2 * libjingle | 2 * libjingle |
3 * Copyright 2004 Google Inc. | 3 * Copyright 2004 Google Inc. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions are met: | 6 * modification, are permitted provided that the following conditions are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright notice, | 8 * 1. Redistributions of source code must retain the above copyright notice, |
9 * this list of conditions and the following disclaimer. | 9 * this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright notice, | 10 * 2. Redistributions in binary form must reproduce the above copyright notice, |
(...skipping 474 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
485 | 485 |
486 cricket::CapturedFrame frame; | 486 cricket::CapturedFrame frame; |
487 frame.width = 1280; | 487 frame.width = 1280; |
488 frame.height = 720; | 488 frame.height = 720; |
489 frame.fourcc = cricket::FOURCC_I420; | 489 frame.fourcc = cricket::FOURCC_I420; |
490 frame.data_size = static_cast<uint32>( | 490 frame.data_size = static_cast<uint32>( |
491 cricket::VideoFrame::SizeOf(frame.width, frame.height)); | 491 cricket::VideoFrame::SizeOf(frame.width, frame.height)); |
492 rtc::scoped_ptr<char[]> data(new char[frame.data_size]); | 492 rtc::scoped_ptr<char[]> data(new char[frame.data_size]); |
493 frame.data = data.get(); | 493 frame.data = data.get(); |
494 memset(frame.data, 1, frame.data_size); | 494 memset(frame.data, 1, frame.data_size); |
495 frame.elapsed_time = 0; | |
496 const int kInitialTimestamp = 123456; | 495 const int kInitialTimestamp = 123456; |
497 frame.time_stamp = kInitialTimestamp; | 496 frame.time_stamp = kInitialTimestamp; |
498 | 497 |
499 // Deliver initial frame. | 498 // Deliver initial frame. |
500 capturer1.SignalCapturedFrame(&frame); | 499 capturer1.SignalCapturedFrame(&frame); |
501 // Deliver next frame 1 second later. | 500 // Deliver next frame 1 second later. |
502 frame.time_stamp += rtc::kNumNanosecsPerSec; | 501 frame.time_stamp += rtc::kNumNanosecsPerSec; |
503 rtc::Thread::Current()->SleepMs(1000); | 502 rtc::Thread::Current()->SleepMs(1000); |
504 capturer1.SignalCapturedFrame(&frame); | 503 capturer1.SignalCapturedFrame(&frame); |
505 | 504 |
(...skipping 1297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1803 EXPECT_TRUE(capturer.CaptureFrame()); | 1802 EXPECT_TRUE(capturer.CaptureFrame()); |
1804 | 1803 |
1805 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames()); | 1804 EXPECT_EQ(2, send_stream->GetNumberOfSwappedFrames()); |
1806 | 1805 |
1807 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); | 1806 EXPECT_EQ(codec.width, send_stream->GetLastWidth()); |
1808 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); | 1807 EXPECT_EQ(codec.height, send_stream->GetLastHeight()); |
1809 | 1808 |
1810 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); | 1809 EXPECT_TRUE(channel_->SetCapturer(last_ssrc_, NULL)); |
1811 } | 1810 } |
1812 | 1811 |
1813 TEST_F(WebRtcVideoChannel2Test, EstimatesNtpStartTimeAndElapsedTimeCorrectly) { | 1812 TEST_F(WebRtcVideoChannel2Test, EstimatesNtpStartTimeCorrectly) { |
1814 // Start at last timestamp to verify that wraparounds are estimated correctly. | 1813 // Start at last timestamp to verify that wraparounds are estimated correctly. |
1815 static const uint32_t kInitialTimestamp = 0xFFFFFFFFu; | 1814 static const uint32_t kInitialTimestamp = 0xFFFFFFFFu; |
1816 static const int64_t kInitialNtpTimeMs = 1247891230; | 1815 static const int64_t kInitialNtpTimeMs = 1247891230; |
1817 static const int kFrameOffsetMs = 20; | 1816 static const int kFrameOffsetMs = 20; |
1818 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); | 1817 EXPECT_TRUE(channel_->SetRecvParameters(recv_parameters_)); |
1819 | 1818 |
1820 FakeVideoReceiveStream* stream = AddRecvStream(); | 1819 FakeVideoReceiveStream* stream = AddRecvStream(); |
1821 cricket::FakeVideoRenderer renderer; | 1820 cricket::FakeVideoRenderer renderer; |
1822 EXPECT_TRUE(channel_->SetRenderer(last_ssrc_, &renderer)); | 1821 EXPECT_TRUE(channel_->SetRenderer(last_ssrc_, &renderer)); |
1823 | 1822 |
1824 webrtc::VideoFrame video_frame; | 1823 webrtc::VideoFrame video_frame; |
1825 CreateBlackFrame(&video_frame, 4, 4); | 1824 CreateBlackFrame(&video_frame, 4, 4); |
1826 video_frame.set_timestamp(kInitialTimestamp); | 1825 video_frame.set_timestamp(kInitialTimestamp); |
1827 // Initial NTP time is not available on the first frame, but should still be | 1826 // Initial NTP time is not available on the first frame, but should still be |
1828 // able to be estimated. | 1827 // able to be estimated. |
1829 stream->InjectFrame(video_frame, 0); | 1828 stream->InjectFrame(video_frame, 0); |
1830 | 1829 |
1831 EXPECT_EQ(1, renderer.num_rendered_frames()); | 1830 EXPECT_EQ(1, renderer.num_rendered_frames()); |
1832 EXPECT_EQ(0, renderer.last_frame_elapsed_time_ns()); | |
1833 | 1831 |
1834 // This timestamp is kInitialTimestamp (-1) + kFrameOffsetMs * 90, which | 1832 // This timestamp is kInitialTimestamp (-1) + kFrameOffsetMs * 90, which |
1835 // triggers a constant-overflow warning, hence we're calculating it explicitly | 1833 // triggers a constant-overflow warning, hence we're calculating it explicitly |
1836 // here. | 1834 // here. |
1837 video_frame.set_timestamp(kFrameOffsetMs * 90 - 1); | 1835 video_frame.set_timestamp(kFrameOffsetMs * 90 - 1); |
1838 video_frame.set_ntp_time_ms(kInitialNtpTimeMs + kFrameOffsetMs); | 1836 video_frame.set_ntp_time_ms(kInitialNtpTimeMs + kFrameOffsetMs); |
1839 stream->InjectFrame(video_frame, 0); | 1837 stream->InjectFrame(video_frame, 0); |
1840 | 1838 |
1841 EXPECT_EQ(2, renderer.num_rendered_frames()); | 1839 EXPECT_EQ(2, renderer.num_rendered_frames()); |
1842 EXPECT_EQ(kFrameOffsetMs * rtc::kNumNanosecsPerMillisec, | |
1843 renderer.last_frame_elapsed_time_ns()); | |
1844 | 1840 |
1845 // Verify that NTP time has been correctly deduced. | 1841 // Verify that NTP time has been correctly deduced. |
1846 cricket::VideoMediaInfo info; | 1842 cricket::VideoMediaInfo info; |
1847 ASSERT_TRUE(channel_->GetStats(&info)); | 1843 ASSERT_TRUE(channel_->GetStats(&info)); |
1848 ASSERT_EQ(1u, info.receivers.size()); | 1844 ASSERT_EQ(1u, info.receivers.size()); |
1849 EXPECT_EQ(kInitialNtpTimeMs, info.receivers[0].capture_start_ntp_time_ms); | 1845 EXPECT_EQ(kInitialNtpTimeMs, info.receivers[0].capture_start_ntp_time_ms); |
1850 } | 1846 } |
1851 | 1847 |
1852 TEST_F(WebRtcVideoChannel2Test, SetDefaultSendCodecs) { | 1848 TEST_F(WebRtcVideoChannel2Test, SetDefaultSendCodecs) { |
1853 ASSERT_TRUE(channel_->SetSendParameters(send_parameters_)); | 1849 ASSERT_TRUE(channel_->SetSendParameters(send_parameters_)); |
(...skipping 1347 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3201 // Ensures that the correct settings are applied to the codec when two temporal | 3197 // Ensures that the correct settings are applied to the codec when two temporal |
3202 // layer screencasting is enabled, and that the correct simulcast settings are | 3198 // layer screencasting is enabled, and that the correct simulcast settings are |
3203 // reapplied when disabling screencasting. | 3199 // reapplied when disabling screencasting. |
3204 TEST_F(WebRtcVideoChannel2SimulcastTest, | 3200 TEST_F(WebRtcVideoChannel2SimulcastTest, |
3205 DISABLED_TwoTemporalLayerScreencastSettings) { | 3201 DISABLED_TwoTemporalLayerScreencastSettings) { |
3206 // TODO(pbos): Implement. | 3202 // TODO(pbos): Implement. |
3207 FAIL() << "Not implemented."; | 3203 FAIL() << "Not implemented."; |
3208 } | 3204 } |
3209 | 3205 |
3210 } // namespace cricket | 3206 } // namespace cricket |
OLD | NEW |