OLD | NEW |
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 2978 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2989 | 2989 |
2990 // TODO(philipel): Implement statistics for the new video jitter buffer. | 2990 // TODO(philipel): Implement statistics for the new video jitter buffer. |
2991 if (GetParam() == new_jb_enabled) | 2991 if (GetParam() == new_jb_enabled) |
2992 return; | 2992 return; |
2993 | 2993 |
2994 RunBaseTest(&test); | 2994 RunBaseTest(&test); |
2995 } | 2995 } |
2996 | 2996 |
2997 class RtcpXrObserver : public test::EndToEndTest { | 2997 class RtcpXrObserver : public test::EndToEndTest { |
2998 public: | 2998 public: |
2999 explicit RtcpXrObserver(bool enable_rrtr) | 2999 RtcpXrObserver(bool enable_rrtr, bool enable_target_bitrate) |
3000 : EndToEndTest(test::CallTest::kDefaultTimeoutMs), | 3000 : EndToEndTest(test::CallTest::kDefaultTimeoutMs), |
3001 enable_rrtr_(enable_rrtr), | 3001 enable_rrtr_(enable_rrtr), |
| 3002 enable_target_bitrate_(enable_target_bitrate), |
3002 sent_rtcp_sr_(0), | 3003 sent_rtcp_sr_(0), |
3003 sent_rtcp_rr_(0), | 3004 sent_rtcp_rr_(0), |
3004 sent_rtcp_rrtr_(0), | 3005 sent_rtcp_rrtr_(0), |
3005 sent_rtcp_target_bitrate_(false), | 3006 sent_rtcp_target_bitrate_(false), |
3006 sent_rtcp_dlrr_(0) {} | 3007 sent_rtcp_dlrr_(0) {} |
3007 | 3008 |
3008 private: | 3009 private: |
3009 // Receive stream should send RR packets (and RRTR packets if enabled). | 3010 // Receive stream should send RR packets (and RRTR packets if enabled). |
3010 Action OnReceiveRtcp(const uint8_t* packet, size_t length) override { | 3011 Action OnReceiveRtcp(const uint8_t* packet, size_t length) override { |
3011 rtc::CritScope lock(&crit_); | 3012 rtc::CritScope lock(&crit_); |
(...skipping 22 matching lines...) Expand all Loading... |
3034 if (parser.xr()->num_packets() > 0) { | 3035 if (parser.xr()->num_packets() > 0) { |
3035 EXPECT_FALSE(parser.xr()->rrtr()); | 3036 EXPECT_FALSE(parser.xr()->rrtr()); |
3036 if (parser.xr()->dlrr()) | 3037 if (parser.xr()->dlrr()) |
3037 ++sent_rtcp_dlrr_; | 3038 ++sent_rtcp_dlrr_; |
3038 if (parser.xr()->target_bitrate()) | 3039 if (parser.xr()->target_bitrate()) |
3039 sent_rtcp_target_bitrate_ = true; | 3040 sent_rtcp_target_bitrate_ = true; |
3040 } | 3041 } |
3041 | 3042 |
3042 if (sent_rtcp_sr_ > kNumRtcpReportPacketsToObserve && | 3043 if (sent_rtcp_sr_ > kNumRtcpReportPacketsToObserve && |
3043 sent_rtcp_rr_ > kNumRtcpReportPacketsToObserve && | 3044 sent_rtcp_rr_ > kNumRtcpReportPacketsToObserve && |
3044 sent_rtcp_target_bitrate_) { | 3045 (sent_rtcp_target_bitrate_ || !enable_target_bitrate_)) { |
3045 if (enable_rrtr_) { | 3046 if (enable_rrtr_) { |
3046 EXPECT_GT(sent_rtcp_rrtr_, 0); | 3047 EXPECT_GT(sent_rtcp_rrtr_, 0); |
3047 EXPECT_GT(sent_rtcp_dlrr_, 0); | 3048 EXPECT_GT(sent_rtcp_dlrr_, 0); |
3048 } else { | 3049 } else { |
3049 EXPECT_EQ(sent_rtcp_rrtr_, 0); | 3050 EXPECT_EQ(sent_rtcp_rrtr_, 0); |
3050 EXPECT_EQ(sent_rtcp_dlrr_, 0); | 3051 EXPECT_EQ(sent_rtcp_dlrr_, 0); |
3051 } | 3052 } |
| 3053 EXPECT_EQ(enable_target_bitrate_, sent_rtcp_target_bitrate_); |
3052 observation_complete_.Set(); | 3054 observation_complete_.Set(); |
3053 } | 3055 } |
3054 return SEND_PACKET; | 3056 return SEND_PACKET; |
3055 } | 3057 } |
3056 | 3058 |
3057 void ModifyVideoConfigs( | 3059 void ModifyVideoConfigs( |
3058 VideoSendStream::Config* send_config, | 3060 VideoSendStream::Config* send_config, |
3059 std::vector<VideoReceiveStream::Config>* receive_configs, | 3061 std::vector<VideoReceiveStream::Config>* receive_configs, |
3060 VideoEncoderConfig* encoder_config) override { | 3062 VideoEncoderConfig* encoder_config) override { |
| 3063 if (enable_target_bitrate_) { |
| 3064 // TargetBitrate only signaled for screensharing. |
| 3065 encoder_config->content_type = VideoEncoderConfig::ContentType::kScreen; |
| 3066 } |
3061 (*receive_configs)[0].rtp.rtcp_mode = RtcpMode::kReducedSize; | 3067 (*receive_configs)[0].rtp.rtcp_mode = RtcpMode::kReducedSize; |
3062 (*receive_configs)[0].rtp.rtcp_xr.receiver_reference_time_report = | 3068 (*receive_configs)[0].rtp.rtcp_xr.receiver_reference_time_report = |
3063 enable_rrtr_; | 3069 enable_rrtr_; |
3064 } | 3070 } |
3065 | 3071 |
3066 void PerformTest() override { | 3072 void PerformTest() override { |
3067 EXPECT_TRUE(Wait()) | 3073 EXPECT_TRUE(Wait()) |
3068 << "Timed out while waiting for RTCP SR/RR packets to be sent."; | 3074 << "Timed out while waiting for RTCP SR/RR packets to be sent."; |
3069 } | 3075 } |
3070 | 3076 |
3071 static const int kNumRtcpReportPacketsToObserve = 5; | 3077 static const int kNumRtcpReportPacketsToObserve = 5; |
3072 | 3078 |
3073 rtc::CriticalSection crit_; | 3079 rtc::CriticalSection crit_; |
3074 bool enable_rrtr_; | 3080 const bool enable_rrtr_; |
| 3081 const bool enable_target_bitrate_; |
3075 int sent_rtcp_sr_; | 3082 int sent_rtcp_sr_; |
3076 int sent_rtcp_rr_ GUARDED_BY(&crit_); | 3083 int sent_rtcp_rr_ GUARDED_BY(&crit_); |
3077 int sent_rtcp_rrtr_ GUARDED_BY(&crit_); | 3084 int sent_rtcp_rrtr_ GUARDED_BY(&crit_); |
3078 bool sent_rtcp_target_bitrate_ GUARDED_BY(&crit_); | 3085 bool sent_rtcp_target_bitrate_ GUARDED_BY(&crit_); |
3079 int sent_rtcp_dlrr_; | 3086 int sent_rtcp_dlrr_; |
3080 }; | 3087 }; |
3081 | 3088 |
3082 TEST_P(EndToEndTest, TestExtendedReportsWithRrtr) { | 3089 TEST_P(EndToEndTest, TestExtendedReportsWithRrtrWithoutTargetBitrate) { |
3083 RtcpXrObserver test(true); | 3090 RtcpXrObserver test(true, false); |
3084 RunBaseTest(&test); | 3091 RunBaseTest(&test); |
3085 } | 3092 } |
3086 | 3093 |
3087 TEST_P(EndToEndTest, TestExtendedReportsWithoutRrtr) { | 3094 TEST_P(EndToEndTest, TestExtendedReportsWithoutRrtrWithoutTargetBitrate) { |
3088 RtcpXrObserver test(false); | 3095 RtcpXrObserver test(false, false); |
3089 RunBaseTest(&test); | 3096 RunBaseTest(&test); |
3090 } | 3097 } |
3091 | 3098 |
| 3099 TEST_P(EndToEndTest, TestExtendedReportsWithRrtrWithTargetBitrate) { |
| 3100 RtcpXrObserver test(true, true); |
| 3101 RunBaseTest(&test); |
| 3102 } |
| 3103 |
| 3104 TEST_P(EndToEndTest, TestExtendedReportsWithoutRrtrWithTargetBitrate) { |
| 3105 RtcpXrObserver test(false, true); |
| 3106 RunBaseTest(&test); |
| 3107 } |
| 3108 |
3092 TEST_P(EndToEndTest, TestReceivedRtpPacketStats) { | 3109 TEST_P(EndToEndTest, TestReceivedRtpPacketStats) { |
3093 static const size_t kNumRtpPacketsToSend = 5; | 3110 static const size_t kNumRtpPacketsToSend = 5; |
3094 class ReceivedRtpStatsObserver : public test::EndToEndTest { | 3111 class ReceivedRtpStatsObserver : public test::EndToEndTest { |
3095 public: | 3112 public: |
3096 ReceivedRtpStatsObserver() | 3113 ReceivedRtpStatsObserver() |
3097 : EndToEndTest(kDefaultTimeoutMs), | 3114 : EndToEndTest(kDefaultTimeoutMs), |
3098 receive_stream_(nullptr), | 3115 receive_stream_(nullptr), |
3099 sent_rtp_(0) {} | 3116 sent_rtp_(0) {} |
3100 | 3117 |
3101 private: | 3118 private: |
(...skipping 963 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4065 std::unique_ptr<VideoEncoder> encoder_; | 4082 std::unique_ptr<VideoEncoder> encoder_; |
4066 std::unique_ptr<VideoDecoder> decoder_; | 4083 std::unique_ptr<VideoDecoder> decoder_; |
4067 rtc::CriticalSection crit_; | 4084 rtc::CriticalSection crit_; |
4068 int recorded_frames_ GUARDED_BY(crit_); | 4085 int recorded_frames_ GUARDED_BY(crit_); |
4069 } test(this); | 4086 } test(this); |
4070 | 4087 |
4071 RunBaseTest(&test); | 4088 RunBaseTest(&test); |
4072 } | 4089 } |
4073 | 4090 |
4074 } // namespace webrtc | 4091 } // namespace webrtc |
OLD | NEW |