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

Side by Side Diff: webrtc/video/end_to_end_tests.cc

Issue 2705973002: Replace test::FrameGenerator::ChromaGenerator with new FrameGenerator::SquareGenerator (Closed)
Patch Set: addressed comments. Created 3 years, 9 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
« no previous file with comments | « webrtc/test/frame_generator_capturer.cc ('k') | webrtc/video/video_quality_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 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 #include <algorithm> 10 #include <algorithm>
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 CreateMatchingReceiveConfigs(&receiver_transport); 222 CreateMatchingReceiveConfigs(&receiver_transport);
223 223
224 video_receive_configs_[0].renderer = &renderer; 224 video_receive_configs_[0].renderer = &renderer;
225 225
226 CreateVideoStreams(); 226 CreateVideoStreams();
227 Start(); 227 Start();
228 228
229 // Create frames that are smaller than the send width/height, this is done to 229 // Create frames that are smaller than the send width/height, this is done to
230 // check that the callbacks are done after processing video. 230 // check that the callbacks are done after processing video.
231 std::unique_ptr<test::FrameGenerator> frame_generator( 231 std::unique_ptr<test::FrameGenerator> frame_generator(
232 test::FrameGenerator::CreateChromaGenerator(kWidth, kHeight)); 232 test::FrameGenerator::CreateSquareGenerator(kWidth, kHeight));
233 test::FrameForwarder frame_forwarder; 233 test::FrameForwarder frame_forwarder;
234 video_send_stream_->SetSource( 234 video_send_stream_->SetSource(
235 &frame_forwarder, VideoSendStream::DegradationPreference::kBalanced); 235 &frame_forwarder, VideoSendStream::DegradationPreference::kBalanced);
236 236
237 frame_forwarder.IncomingCapturedFrame(*frame_generator->NextFrame()); 237 frame_forwarder.IncomingCapturedFrame(*frame_generator->NextFrame());
238 EXPECT_TRUE(renderer.Wait()) 238 EXPECT_TRUE(renderer.Wait())
239 << "Timed out while waiting for the frame to render."; 239 << "Timed out while waiting for the frame to render.";
240 240
241 Stop(); 241 Stop();
242 242
(...skipping 23 matching lines...) Expand all
266 receiver_transport.SetReceiver(sender_call_->Receiver()); 266 receiver_transport.SetReceiver(sender_call_->Receiver());
267 267
268 CreateSendConfig(1, 0, 0, &sender_transport); 268 CreateSendConfig(1, 0, 0, &sender_transport);
269 CreateMatchingReceiveConfigs(&receiver_transport); 269 CreateMatchingReceiveConfigs(&receiver_transport);
270 video_receive_configs_[0].renderer = &renderer; 270 video_receive_configs_[0].renderer = &renderer;
271 271
272 CreateVideoStreams(); 272 CreateVideoStreams();
273 Start(); 273 Start();
274 274
275 std::unique_ptr<test::FrameGenerator> frame_generator( 275 std::unique_ptr<test::FrameGenerator> frame_generator(
276 test::FrameGenerator::CreateChromaGenerator(kDefaultWidth, 276 test::FrameGenerator::CreateSquareGenerator(kDefaultWidth,
277 kDefaultHeight)); 277 kDefaultHeight));
278 test::FrameForwarder frame_forwarder; 278 test::FrameForwarder frame_forwarder;
279 video_send_stream_->SetSource( 279 video_send_stream_->SetSource(
280 &frame_forwarder, VideoSendStream::DegradationPreference::kBalanced); 280 &frame_forwarder, VideoSendStream::DegradationPreference::kBalanced);
281 frame_forwarder.IncomingCapturedFrame(*frame_generator->NextFrame()); 281 frame_forwarder.IncomingCapturedFrame(*frame_generator->NextFrame());
282 282
283 EXPECT_TRUE(renderer.Wait()) 283 EXPECT_TRUE(renderer.Wait())
284 << "Timed out while waiting for the frame to render."; 284 << "Timed out while waiting for the frame to render.";
285 285
286 Stop(); 286 Stop();
(...skipping 1375 matching lines...) Expand 10 before | Expand all | Expand 10 after
1662 // Only drop media, and not on the first stream (otherwise it will be 1662 // Only drop media, and not on the first stream (otherwise it will be
1663 // hard to distinguish from padding, which is always sent on the first 1663 // hard to distinguish from padding, which is always sent on the first
1664 // stream). 1664 // stream).
1665 if (header.payloadType != kSendRtxPayloadType && 1665 if (header.payloadType != kSendRtxPayloadType &&
1666 header.ssrc != first_media_ssrc_ && 1666 header.ssrc != first_media_ssrc_ &&
1667 header.extension.transportSequenceNumber % 17 == 0) { 1667 header.extension.transportSequenceNumber % 17 == 0) {
1668 dropped_seq_[header.ssrc].insert(header.sequenceNumber); 1668 dropped_seq_[header.ssrc].insert(header.sequenceNumber);
1669 drop_packet = true; 1669 drop_packet = true;
1670 } 1670 }
1671 1671
1672 size_t payload_length = 1672 if (header.payloadType == kSendRtxPayloadType) {
1673 length - (header.headerLength + header.paddingLength);
1674 if (payload_length == 0) {
1675 padding_observed_ = true;
1676 } else if (header.payloadType == kSendRtxPayloadType) {
1677 uint16_t original_sequence_number = 1673 uint16_t original_sequence_number =
1678 ByteReader<uint16_t>::ReadBigEndian(&data[header.headerLength]); 1674 ByteReader<uint16_t>::ReadBigEndian(&data[header.headerLength]);
1679 uint32_t original_ssrc = 1675 uint32_t original_ssrc =
1680 rtx_to_media_ssrcs_.find(header.ssrc)->second; 1676 rtx_to_media_ssrcs_.find(header.ssrc)->second;
1681 std::set<uint16_t>* seq_no_map = &dropped_seq_[original_ssrc]; 1677 std::set<uint16_t>* seq_no_map = &dropped_seq_[original_ssrc];
1682 auto it = seq_no_map->find(original_sequence_number); 1678 auto it = seq_no_map->find(original_sequence_number);
1683 if (it != seq_no_map->end()) { 1679 if (it != seq_no_map->end()) {
1684 retransmit_observed_ = true; 1680 retransmit_observed_ = true;
1685 seq_no_map->erase(it); 1681 seq_no_map->erase(it);
1686 } else { 1682 } else {
(...skipping 10 matching lines...) Expand all
1697 return true; 1693 return true;
1698 } 1694 }
1699 } 1695 }
1700 1696
1701 return test::DirectTransport::SendRtp(data, length, options); 1697 return test::DirectTransport::SendRtp(data, length, options);
1702 } 1698 }
1703 1699
1704 bool IsDone() { 1700 bool IsDone() {
1705 bool observed_types_ok = 1701 bool observed_types_ok =
1706 streams_observed_.size() == MultiStreamTest::kNumStreams && 1702 streams_observed_.size() == MultiStreamTest::kNumStreams &&
1707 padding_observed_ && retransmit_observed_ && rtx_padding_observed_; 1703 retransmit_observed_ && rtx_padding_observed_;
1708 if (!observed_types_ok) 1704 if (!observed_types_ok)
1709 return false; 1705 return false;
1710 // We should not have any gaps in the sequence number range. 1706 // We should not have any gaps in the sequence number range.
1711 size_t seqno_range = 1707 size_t seqno_range =
1712 *received_packed_ids_.rbegin() - *received_packed_ids_.begin() + 1; 1708 *received_packed_ids_.rbegin() - *received_packed_ids_.begin() + 1;
1713 return seqno_range == received_packed_ids_.size(); 1709 return seqno_range == received_packed_ids_.size();
1714 } 1710 }
1715 1711
1716 bool Wait() { 1712 bool Wait() {
1717 { 1713 {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1752 1748
1753 void UpdateSendConfig( 1749 void UpdateSendConfig(
1754 size_t stream_index, 1750 size_t stream_index,
1755 VideoSendStream::Config* send_config, 1751 VideoSendStream::Config* send_config,
1756 VideoEncoderConfig* encoder_config, 1752 VideoEncoderConfig* encoder_config,
1757 test::FrameGeneratorCapturer** frame_generator) override { 1753 test::FrameGeneratorCapturer** frame_generator) override {
1758 send_config->rtp.extensions.clear(); 1754 send_config->rtp.extensions.clear();
1759 send_config->rtp.extensions.push_back(RtpExtension( 1755 send_config->rtp.extensions.push_back(RtpExtension(
1760 RtpExtension::kTransportSequenceNumberUri, kExtensionId)); 1756 RtpExtension::kTransportSequenceNumberUri, kExtensionId));
1761 1757
1762 // Force some padding to be sent. 1758 // Force some padding to be sent. Note that since we do send media
1759 // packets we can not guarantee that a padding only packet is sent.
1760 // Instead, padding will most likely be send as an RTX packet.
1763 const int kPaddingBitrateBps = 50000; 1761 const int kPaddingBitrateBps = 50000;
1764 encoder_config->max_bitrate_bps = 1000000; 1762 encoder_config->max_bitrate_bps = 200000;
1765 encoder_config->min_transmit_bitrate_bps = 1763 encoder_config->min_transmit_bitrate_bps =
1766 encoder_config->max_bitrate_bps + kPaddingBitrateBps; 1764 encoder_config->max_bitrate_bps + kPaddingBitrateBps;
1767 1765
1768 // Configure RTX for redundant payload padding. 1766 // Configure RTX for redundant payload padding.
1769 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs; 1767 send_config->rtp.nack.rtp_history_ms = kNackRtpHistoryMs;
1770 send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[stream_index]); 1768 send_config->rtp.rtx.ssrcs.push_back(kSendRtxSsrcs[stream_index]);
1771 send_config->rtp.rtx.payload_type = kSendRtxPayloadType; 1769 send_config->rtp.rtx.payload_type = kSendRtxPayloadType;
1772 rtx_to_media_ssrcs_[kSendRtxSsrcs[stream_index]] = 1770 rtx_to_media_ssrcs_[kSendRtxSsrcs[stream_index]] =
1773 send_config->rtp.ssrcs[0]; 1771 send_config->rtp.ssrcs[0];
1774 1772
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
1946 1944
1947 CreateSendConfig(1, 0, 0, &sender_transport); 1945 CreateSendConfig(1, 0, 0, &sender_transport);
1948 CreateMatchingReceiveConfigs(&receiver_transport); 1946 CreateMatchingReceiveConfigs(&receiver_transport);
1949 video_send_config_.post_encode_callback = &post_encode_observer; 1947 video_send_config_.post_encode_callback = &post_encode_observer;
1950 video_receive_configs_[0].pre_decode_callback = &pre_decode_observer; 1948 video_receive_configs_[0].pre_decode_callback = &pre_decode_observer;
1951 1949
1952 CreateVideoStreams(); 1950 CreateVideoStreams();
1953 Start(); 1951 Start();
1954 1952
1955 std::unique_ptr<test::FrameGenerator> frame_generator( 1953 std::unique_ptr<test::FrameGenerator> frame_generator(
1956 test::FrameGenerator::CreateChromaGenerator(kDefaultWidth, 1954 test::FrameGenerator::CreateSquareGenerator(kDefaultWidth,
1957 kDefaultHeight)); 1955 kDefaultHeight));
1958 test::FrameForwarder forwarder; 1956 test::FrameForwarder forwarder;
1959 video_send_stream_->SetSource( 1957 video_send_stream_->SetSource(
1960 &forwarder, VideoSendStream::DegradationPreference::kBalanced); 1958 &forwarder, VideoSendStream::DegradationPreference::kBalanced);
1961 forwarder.IncomingCapturedFrame(*frame_generator->NextFrame()); 1959 forwarder.IncomingCapturedFrame(*frame_generator->NextFrame());
1962 1960
1963 EXPECT_TRUE(post_encode_observer.Wait()) 1961 EXPECT_TRUE(post_encode_observer.Wait())
1964 << "Timed out while waiting for send-side encoded-frame callback."; 1962 << "Timed out while waiting for send-side encoded-frame callback.";
1965 1963
1966 EXPECT_TRUE(pre_decode_observer.Wait()) 1964 EXPECT_TRUE(pre_decode_observer.Wait())
(...skipping 2216 matching lines...) Expand 10 before | Expand all | Expand 10 after
4183 std::unique_ptr<VideoEncoder> encoder_; 4181 std::unique_ptr<VideoEncoder> encoder_;
4184 std::unique_ptr<VideoDecoder> decoder_; 4182 std::unique_ptr<VideoDecoder> decoder_;
4185 rtc::CriticalSection crit_; 4183 rtc::CriticalSection crit_;
4186 int recorded_frames_ GUARDED_BY(crit_); 4184 int recorded_frames_ GUARDED_BY(crit_);
4187 } test(this); 4185 } test(this);
4188 4186
4189 RunBaseTest(&test); 4187 RunBaseTest(&test);
4190 } 4188 }
4191 4189
4192 } // namespace webrtc 4190 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/test/frame_generator_capturer.cc ('k') | webrtc/video/video_quality_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698