OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2014 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 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
146 private: | 146 private: |
147 int decoded_frames_; | 147 int decoded_frames_; |
148 }; | 148 }; |
149 | 149 |
150 class SkipEncodingUnusedStreamsTest { | 150 class SkipEncodingUnusedStreamsTest { |
151 public: | 151 public: |
152 std::vector<unsigned int> RunTest(VP8Encoder* encoder, | 152 std::vector<unsigned int> RunTest(VP8Encoder* encoder, |
153 VideoCodec* settings, | 153 VideoCodec* settings, |
154 uint32_t target_bitrate) { | 154 uint32_t target_bitrate) { |
155 SpyingTemporalLayersFactory spy_factory; | 155 SpyingTemporalLayersFactory spy_factory; |
156 settings->codecSpecific.VP8.tl_factory = &spy_factory; | 156 settings->VP8()->tl_factory = &spy_factory; |
157 EXPECT_EQ(0, encoder->InitEncode(settings, 1, 1200)); | 157 EXPECT_EQ(0, encoder->InitEncode(settings, 1, 1200)); |
158 | 158 |
159 encoder->SetRates(target_bitrate, 30); | 159 encoder->SetRates(target_bitrate, 30); |
160 | 160 |
161 std::vector<unsigned int> configured_bitrates; | 161 std::vector<unsigned int> configured_bitrates; |
162 for (std::vector<TemporalLayers*>::const_iterator it = | 162 for (std::vector<TemporalLayers*>::const_iterator it = |
163 spy_factory.spying_layers_.begin(); | 163 spy_factory.spying_layers_.begin(); |
164 it != spy_factory.spying_layers_.end(); ++it) { | 164 it != spy_factory.spying_layers_.end(); ++it) { |
165 configured_bitrates.push_back( | 165 configured_bitrates.push_back( |
166 static_cast<SpyingTemporalLayers*>(*it)->configured_bitrate_); | 166 static_cast<SpyingTemporalLayers*>(*it)->configured_bitrate_); |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
281 ASSERT_EQ(3, kNumberOfSimulcastStreams); | 281 ASSERT_EQ(3, kNumberOfSimulcastStreams); |
282 ConfigureStream(kDefaultWidth / 4, kDefaultHeight / 4, kMaxBitrates[0], | 282 ConfigureStream(kDefaultWidth / 4, kDefaultHeight / 4, kMaxBitrates[0], |
283 kMinBitrates[0], kTargetBitrates[0], | 283 kMinBitrates[0], kTargetBitrates[0], |
284 &settings->simulcastStream[0], temporal_layer_profile[0]); | 284 &settings->simulcastStream[0], temporal_layer_profile[0]); |
285 ConfigureStream(kDefaultWidth / 2, kDefaultHeight / 2, kMaxBitrates[1], | 285 ConfigureStream(kDefaultWidth / 2, kDefaultHeight / 2, kMaxBitrates[1], |
286 kMinBitrates[1], kTargetBitrates[1], | 286 kMinBitrates[1], kTargetBitrates[1], |
287 &settings->simulcastStream[1], temporal_layer_profile[1]); | 287 &settings->simulcastStream[1], temporal_layer_profile[1]); |
288 ConfigureStream(kDefaultWidth, kDefaultHeight, kMaxBitrates[2], | 288 ConfigureStream(kDefaultWidth, kDefaultHeight, kMaxBitrates[2], |
289 kMinBitrates[2], kTargetBitrates[2], | 289 kMinBitrates[2], kTargetBitrates[2], |
290 &settings->simulcastStream[2], temporal_layer_profile[2]); | 290 &settings->simulcastStream[2], temporal_layer_profile[2]); |
291 settings->codecSpecific.VP8.resilience = kResilientStream; | 291 settings->VP8()->resilience = kResilientStream; |
292 settings->codecSpecific.VP8.denoisingOn = true; | 292 settings->VP8()->denoisingOn = true; |
293 settings->codecSpecific.VP8.errorConcealmentOn = false; | 293 settings->VP8()->errorConcealmentOn = false; |
294 settings->codecSpecific.VP8.automaticResizeOn = false; | 294 settings->VP8()->automaticResizeOn = false; |
295 settings->codecSpecific.VP8.feedbackModeOn = false; | 295 settings->VP8()->feedbackModeOn = false; |
296 settings->codecSpecific.VP8.frameDroppingOn = true; | 296 settings->VP8()->frameDroppingOn = true; |
297 settings->codecSpecific.VP8.keyFrameInterval = 3000; | 297 settings->VP8()->keyFrameInterval = 3000; |
298 } | 298 } |
299 | 299 |
300 static void ConfigureStream(int width, | 300 static void ConfigureStream(int width, |
301 int height, | 301 int height, |
302 int max_bitrate, | 302 int max_bitrate, |
303 int min_bitrate, | 303 int min_bitrate, |
304 int target_bitrate, | 304 int target_bitrate, |
305 SimulcastStream* stream, | 305 SimulcastStream* stream, |
306 int num_temporal_layers) { | 306 int num_temporal_layers) { |
307 assert(stream); | 307 assert(stream); |
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
556 kTargetBitrates[0] + kTargetBitrates[1] + kTargetBitrates[2], 30); | 556 kTargetBitrates[0] + kTargetBitrates[1] + kTargetBitrates[2], 30); |
557 // We get a key frame because a new stream is being enabled. | 557 // We get a key frame because a new stream is being enabled. |
558 ExpectStreams(kVideoFrameKey, 3); | 558 ExpectStreams(kVideoFrameKey, 3); |
559 input_frame_->set_timestamp(input_frame_->timestamp() + 3000); | 559 input_frame_->set_timestamp(input_frame_->timestamp() + 3000); |
560 EXPECT_EQ(0, encoder_->Encode(*input_frame_, NULL, &frame_types)); | 560 EXPECT_EQ(0, encoder_->Encode(*input_frame_, NULL, &frame_types)); |
561 } | 561 } |
562 | 562 |
563 void SwitchingToOneStream(int width, int height) { | 563 void SwitchingToOneStream(int width, int height) { |
564 // Disable all streams except the last and set the bitrate of the last to | 564 // Disable all streams except the last and set the bitrate of the last to |
565 // 100 kbps. This verifies the way GTP switches to screenshare mode. | 565 // 100 kbps. This verifies the way GTP switches to screenshare mode. |
566 settings_.codecSpecific.VP8.numberOfTemporalLayers = 1; | 566 settings_.VP8()->numberOfTemporalLayers = 1; |
567 settings_.maxBitrate = 100; | 567 settings_.maxBitrate = 100; |
568 settings_.startBitrate = 100; | 568 settings_.startBitrate = 100; |
569 settings_.width = width; | 569 settings_.width = width; |
570 settings_.height = height; | 570 settings_.height = height; |
571 for (int i = 0; i < settings_.numberOfSimulcastStreams - 1; ++i) { | 571 for (int i = 0; i < settings_.numberOfSimulcastStreams - 1; ++i) { |
572 settings_.simulcastStream[i].maxBitrate = 0; | 572 settings_.simulcastStream[i].maxBitrate = 0; |
573 settings_.simulcastStream[i].width = settings_.width; | 573 settings_.simulcastStream[i].width = settings_.width; |
574 settings_.simulcastStream[i].height = settings_.height; | 574 settings_.simulcastStream[i].height = settings_.height; |
575 } | 575 } |
576 // Setting input image to new resolution. | 576 // Setting input image to new resolution. |
(...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
971 MockDecodedImageCallback decoder_callback_; | 971 MockDecodedImageCallback decoder_callback_; |
972 VideoCodec settings_; | 972 VideoCodec settings_; |
973 rtc::scoped_refptr<I420Buffer> input_buffer_; | 973 rtc::scoped_refptr<I420Buffer> input_buffer_; |
974 std::unique_ptr<VideoFrame> input_frame_; | 974 std::unique_ptr<VideoFrame> input_frame_; |
975 }; | 975 }; |
976 | 976 |
977 } // namespace testing | 977 } // namespace testing |
978 } // namespace webrtc | 978 } // namespace webrtc |
979 | 979 |
980 #endif // WEBRTC_MODULES_VIDEO_CODING_CODECS_VP8_SIMULCAST_UNITTEST_H_ | 980 #endif // WEBRTC_MODULES_VIDEO_CODING_CODECS_VP8_SIMULCAST_UNITTEST_H_ |
OLD | NEW |