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

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

Issue 2489843002: Revert of Extract bitrate allocation of spatial/temporal layers out of codec impl. (Closed)
Patch Set: Created 4 years, 1 month 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/video/video_encoder_unittest.cc ('k') | webrtc/video/vie_encoder.h » ('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> // max 10 #include <algorithm> // max
(...skipping 1460 matching lines...) Expand 10 before | Expand all | Expand 10 after
1471 last_initialized_frame_height_(0) {} 1471 last_initialized_frame_height_(0) {}
1472 1472
1473 void WaitForResolution(int width, int height) { 1473 void WaitForResolution(int width, int height) {
1474 { 1474 {
1475 rtc::CritScope lock(&crit_); 1475 rtc::CritScope lock(&crit_);
1476 if (last_initialized_frame_width_ == width && 1476 if (last_initialized_frame_width_ == width &&
1477 last_initialized_frame_height_ == height) { 1477 last_initialized_frame_height_ == height) {
1478 return; 1478 return;
1479 } 1479 }
1480 } 1480 }
1481 EXPECT_TRUE( 1481 init_encode_called_.Wait(VideoSendStreamTest::kDefaultTimeoutMs);
1482 init_encode_called_.Wait(VideoSendStreamTest::kDefaultTimeoutMs));
1483 { 1482 {
1484 rtc::CritScope lock(&crit_); 1483 rtc::CritScope lock(&crit_);
1485 EXPECT_EQ(width, last_initialized_frame_width_); 1484 EXPECT_EQ(width, last_initialized_frame_width_);
1486 EXPECT_EQ(height, last_initialized_frame_height_); 1485 EXPECT_EQ(height, last_initialized_frame_height_);
1487 } 1486 }
1488 } 1487 }
1489 1488
1490 private: 1489 private:
1491 int32_t InitEncode(const VideoCodec* config, 1490 int32_t InitEncode(const VideoCodec* config,
1492 int32_t number_of_cores, 1491 int32_t number_of_cores,
1493 size_t max_payload_size) override { 1492 size_t max_payload_size) override {
1494 rtc::CritScope lock(&crit_); 1493 rtc::CritScope lock(&crit_);
1495 last_initialized_frame_width_ = config->width; 1494 last_initialized_frame_width_ = config->width;
1496 last_initialized_frame_height_ = config->height; 1495 last_initialized_frame_height_ = config->height;
1497 ++number_of_initializations_; 1496 ++number_of_initializations_;
1498 init_encode_called_.Set(); 1497 // First time InitEncode is called, the frame size is unknown.
1498 if (number_of_initializations_ > 1)
1499 init_encode_called_.Set();
1499 return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size); 1500 return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size);
1500 } 1501 }
1501 1502
1502 int32_t Encode(const VideoFrame& input_image, 1503 int32_t Encode(const VideoFrame& input_image,
1503 const CodecSpecificInfo* codec_specific_info, 1504 const CodecSpecificInfo* codec_specific_info,
1504 const std::vector<FrameType>* frame_types) override { 1505 const std::vector<FrameType>* frame_types) override {
1505 ADD_FAILURE() 1506 ADD_FAILURE()
1506 << "Unexpected Encode call since the send stream is not started"; 1507 << "Unexpected Encode call since the send stream is not started";
1507 return 0; 1508 return 0;
1508 } 1509 }
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
1618 bitrate_kbps_(0) {} 1619 bitrate_kbps_(0) {}
1619 int32_t InitEncode(const VideoCodec* config, 1620 int32_t InitEncode(const VideoCodec* config,
1620 int32_t number_of_cores, 1621 int32_t number_of_cores,
1621 size_t max_payload_size) override { 1622 size_t max_payload_size) override {
1622 rtc::CritScope lock(&crit_); 1623 rtc::CritScope lock(&crit_);
1623 bitrate_kbps_ = config->startBitrate; 1624 bitrate_kbps_ = config->startBitrate;
1624 encoder_init_.Set(); 1625 encoder_init_.Set();
1625 return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size); 1626 return FakeEncoder::InitEncode(config, number_of_cores, max_payload_size);
1626 } 1627 }
1627 1628
1628 int32_t SetRateAllocation(const BitrateAllocation& bitrate, 1629 int32_t SetRates(uint32_t new_target_bitrate, uint32_t framerate) override {
1629 uint32_t framerate) override {
1630 rtc::CritScope lock(&crit_); 1630 rtc::CritScope lock(&crit_);
1631 bitrate_kbps_ = bitrate.get_sum_kbps(); 1631 bitrate_kbps_ = new_target_bitrate;
1632 bitrate_changed_.Set(); 1632 bitrate_changed_.Set();
1633 return FakeEncoder::SetRateAllocation(bitrate, framerate); 1633 return FakeEncoder::SetRates(new_target_bitrate, framerate);
1634 } 1634 }
1635 1635
1636 int GetBitrateKbps() const { 1636 int GetBitrateKbps() const {
1637 rtc::CritScope lock(&crit_); 1637 rtc::CritScope lock(&crit_);
1638 return bitrate_kbps_; 1638 return bitrate_kbps_;
1639 } 1639 }
1640 1640
1641 bool WaitForEncoderInit() { 1641 bool WaitForEncoderInit() {
1642 return encoder_init_.Wait(VideoSendStreamTest::kDefaultTimeoutMs); 1642 return encoder_init_.Wait(VideoSendStreamTest::kDefaultTimeoutMs);
1643 } 1643 }
(...skipping 13 matching lines...) Expand all
1657 test::NullTransport transport; 1657 test::NullTransport transport;
1658 CreateSendConfig(1, 0, &transport); 1658 CreateSendConfig(1, 0, &transport);
1659 1659
1660 StartStopBitrateObserver encoder; 1660 StartStopBitrateObserver encoder;
1661 video_send_config_.encoder_settings.encoder = &encoder; 1661 video_send_config_.encoder_settings.encoder = &encoder;
1662 video_send_config_.encoder_settings.internal_source = true; 1662 video_send_config_.encoder_settings.internal_source = true;
1663 1663
1664 CreateVideoStreams(); 1664 CreateVideoStreams();
1665 1665
1666 EXPECT_TRUE(encoder.WaitForEncoderInit()); 1666 EXPECT_TRUE(encoder.WaitForEncoderInit());
1667 EXPECT_TRUE(encoder.WaitBitrateChanged()); 1667 EXPECT_GT(encoder.GetBitrateKbps(), 0);
1668 EXPECT_EQ(0, encoder.GetBitrateKbps());
1669
1670 video_send_stream_->Start(); 1668 video_send_stream_->Start();
1671 EXPECT_TRUE(encoder.WaitBitrateChanged()); 1669 EXPECT_TRUE(encoder.WaitBitrateChanged());
1672 EXPECT_GT(encoder.GetBitrateKbps(), 0); 1670 EXPECT_GT(encoder.GetBitrateKbps(), 0);
1673
1674 video_send_stream_->Stop(); 1671 video_send_stream_->Stop();
1675 EXPECT_TRUE(encoder.WaitBitrateChanged()); 1672 EXPECT_TRUE(encoder.WaitBitrateChanged());
1676 EXPECT_EQ(0, encoder.GetBitrateKbps()); 1673 EXPECT_EQ(0, encoder.GetBitrateKbps());
1677
1678 video_send_stream_->Start(); 1674 video_send_stream_->Start();
1679 EXPECT_TRUE(encoder.WaitBitrateChanged()); 1675 EXPECT_TRUE(encoder.WaitBitrateChanged());
1680 EXPECT_GT(encoder.GetBitrateKbps(), 0); 1676 EXPECT_GT(encoder.GetBitrateKbps(), 0);
1681 1677
1682 DestroyStreams(); 1678 DestroyStreams();
1683 } 1679 }
1684 1680
1685 TEST_F(VideoSendStreamTest, CapturesTextureAndVideoFrames) { 1681 TEST_F(VideoSendStreamTest, CapturesTextureAndVideoFrames) {
1686 class FrameObserver : public rtc::VideoSinkInterface<VideoFrame> { 1682 class FrameObserver : public rtc::VideoSinkInterface<VideoFrame> {
1687 public: 1683 public:
(...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after
2082 // VideoCodec. 2078 // VideoCodec.
2083 EXPECT_EQ(kVideoCodecConfigObserverNumberOfTemporalLayers, 2079 EXPECT_EQ(kVideoCodecConfigObserverNumberOfTemporalLayers,
2084 config.VP8().numberOfTemporalLayers); 2080 config.VP8().numberOfTemporalLayers);
2085 2081
2086 for (unsigned char i = 0; i < config.numberOfSimulcastStreams; ++i) { 2082 for (unsigned char i = 0; i < config.numberOfSimulcastStreams; ++i) {
2087 EXPECT_EQ(kVideoCodecConfigObserverNumberOfTemporalLayers, 2083 EXPECT_EQ(kVideoCodecConfigObserverNumberOfTemporalLayers,
2088 config.simulcastStream[i].numberOfTemporalLayers); 2084 config.simulcastStream[i].numberOfTemporalLayers);
2089 } 2085 }
2090 2086
2091 // Set expected temporal layers as they should have been set when 2087 // Set expected temporal layers as they should have been set when
2092 // reconfiguring the encoder and not match the set config. Also copy the 2088 // reconfiguring the encoder and not match the set config.
2093 // TemporalLayersFactory pointer that has been injected by ViEEncoder.
2094 VideoCodecVP8 encoder_settings = encoder_settings_; 2089 VideoCodecVP8 encoder_settings = encoder_settings_;
2095 encoder_settings.numberOfTemporalLayers = 2090 encoder_settings.numberOfTemporalLayers =
2096 kVideoCodecConfigObserverNumberOfTemporalLayers; 2091 kVideoCodecConfigObserverNumberOfTemporalLayers;
2097 encoder_settings.tl_factory = config.VP8().tl_factory;
2098 EXPECT_EQ( 2092 EXPECT_EQ(
2099 0, memcmp(&config.VP8(), &encoder_settings, sizeof(encoder_settings_))); 2093 0, memcmp(&config.VP8(), &encoder_settings, sizeof(encoder_settings_)));
2100 } 2094 }
2101 2095
2102 template <> 2096 template <>
2103 rtc::scoped_refptr<VideoEncoderConfig::EncoderSpecificSettings> 2097 rtc::scoped_refptr<VideoEncoderConfig::EncoderSpecificSettings>
2104 VideoCodecConfigObserver<VideoCodecVP8>::GetEncoderSpecificSettings() const { 2098 VideoCodecConfigObserver<VideoCodecVP8>::GetEncoderSpecificSettings() const {
2105 return new rtc::RefCountedObject< 2099 return new rtc::RefCountedObject<
2106 VideoEncoderConfig::Vp8EncoderSpecificSettings>(encoder_settings_); 2100 VideoEncoderConfig::Vp8EncoderSpecificSettings>(encoder_settings_);
2107 } 2101 }
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
2309 // has currently configured but in the span of the set max and min 2303 // has currently configured but in the span of the set max and min
2310 // bitrate. 2304 // bitrate.
2311 } 2305 }
2312 ++num_initializations_; 2306 ++num_initializations_;
2313 init_encode_event_.Set(); 2307 init_encode_event_.Set();
2314 2308
2315 return FakeEncoder::InitEncode(codecSettings, numberOfCores, 2309 return FakeEncoder::InitEncode(codecSettings, numberOfCores,
2316 maxPayloadSize); 2310 maxPayloadSize);
2317 } 2311 }
2318 2312
2319 int32_t SetRateAllocation(const BitrateAllocation& bitrate, 2313 int32_t SetRates(uint32_t newBitRate, uint32_t frameRate) override {
2320 uint32_t frameRate) override {
2321 { 2314 {
2322 rtc::CritScope lock(&crit_); 2315 rtc::CritScope lock(&crit_);
2323 if (target_bitrate_ == bitrate.get_sum_kbps()) { 2316 if (target_bitrate_ == newBitRate) {
2324 return FakeEncoder::SetRateAllocation(bitrate, frameRate); 2317 return FakeEncoder::SetRates(newBitRate, frameRate);
2325 } 2318 }
2326 target_bitrate_ = bitrate.get_sum_kbps(); 2319 target_bitrate_ = newBitRate;
2327 } 2320 }
2328 bitrate_changed_event_.Set(); 2321 bitrate_changed_event_.Set();
2329 return FakeEncoder::SetRateAllocation(bitrate, frameRate); 2322 return FakeEncoder::SetRates(newBitRate, frameRate);
2330 } 2323 }
2331 2324
2332 void WaitForSetRates(uint32_t expected_bitrate) { 2325 void WaitForSetRates(uint32_t expected_bitrate) {
2333 EXPECT_TRUE( 2326 EXPECT_TRUE(
2334 bitrate_changed_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs)) 2327 bitrate_changed_event_.Wait(VideoSendStreamTest::kDefaultTimeoutMs))
2335 << "Timed out while waiting encoder rate to be set."; 2328 << "Timed out while waiting encoder rate to be set.";
2336 rtc::CritScope lock(&crit_); 2329 rtc::CritScope lock(&crit_);
2337 EXPECT_EQ(expected_bitrate, target_bitrate_); 2330 EXPECT_EQ(expected_bitrate, target_bitrate_);
2338 } 2331 }
2339 2332
(...skipping 654 matching lines...) Expand 10 before | Expand all | Expand 10 after
2994 RequestSourceRotateIfVideoOrientationExtensionNotSupported) { 2987 RequestSourceRotateIfVideoOrientationExtensionNotSupported) {
2995 TestRequestSourceRotateVideo(false); 2988 TestRequestSourceRotateVideo(false);
2996 } 2989 }
2997 2990
2998 TEST_F(VideoSendStreamTest, 2991 TEST_F(VideoSendStreamTest,
2999 DoNotRequestsRotationIfVideoOrientationExtensionSupported) { 2992 DoNotRequestsRotationIfVideoOrientationExtensionSupported) {
3000 TestRequestSourceRotateVideo(true); 2993 TestRequestSourceRotateVideo(true);
3001 } 2994 }
3002 2995
3003 } // namespace webrtc 2996 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/video/video_encoder_unittest.cc ('k') | webrtc/video/vie_encoder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698