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> // max | 10 #include <algorithm> // max |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
52 VideoFrame CreateVideoFrame(int width, int height, uint8_t data); | 52 VideoFrame CreateVideoFrame(int width, int height, uint8_t data); |
53 | 53 |
54 class VideoSendStreamTest : public test::CallTest { | 54 class VideoSendStreamTest : public test::CallTest { |
55 protected: | 55 protected: |
56 void TestNackRetransmission(uint32_t retransmit_ssrc, | 56 void TestNackRetransmission(uint32_t retransmit_ssrc, |
57 uint8_t retransmit_payload_type); | 57 uint8_t retransmit_payload_type); |
58 void TestPacketFragmentationSize(VideoFormat format, bool with_fec); | 58 void TestPacketFragmentationSize(VideoFormat format, bool with_fec); |
59 }; | 59 }; |
60 | 60 |
61 TEST_F(VideoSendStreamTest, CanStartStartedStream) { | 61 TEST_F(VideoSendStreamTest, CanStartStartedStream) { |
62 test::NullTransport transport; | 62 Call::Config call_config; |
63 Call::Config call_config(&transport); | |
64 CreateSenderCall(call_config); | 63 CreateSenderCall(call_config); |
65 | 64 |
66 CreateSendConfig(1); | 65 test::NullTransport transport; |
| 66 CreateSendConfig(1, &transport); |
67 CreateStreams(); | 67 CreateStreams(); |
68 send_stream_->Start(); | 68 send_stream_->Start(); |
69 send_stream_->Start(); | 69 send_stream_->Start(); |
70 DestroyStreams(); | 70 DestroyStreams(); |
71 } | 71 } |
72 | 72 |
73 TEST_F(VideoSendStreamTest, CanStopStoppedStream) { | 73 TEST_F(VideoSendStreamTest, CanStopStoppedStream) { |
74 test::NullTransport transport; | 74 Call::Config call_config; |
75 Call::Config call_config(&transport); | |
76 CreateSenderCall(call_config); | 75 CreateSenderCall(call_config); |
77 | 76 |
78 CreateSendConfig(1); | 77 test::NullTransport transport; |
| 78 CreateSendConfig(1, &transport); |
79 CreateStreams(); | 79 CreateStreams(); |
80 send_stream_->Stop(); | 80 send_stream_->Stop(); |
81 send_stream_->Stop(); | 81 send_stream_->Stop(); |
82 DestroyStreams(); | 82 DestroyStreams(); |
83 } | 83 } |
84 | 84 |
85 TEST_F(VideoSendStreamTest, SupportsCName) { | 85 TEST_F(VideoSendStreamTest, SupportsCName) { |
86 static std::string kCName = "PjQatC14dGfbVwGPUOA9IH7RlsFDbWl4AhXEiDsBizo="; | 86 static std::string kCName = "PjQatC14dGfbVwGPUOA9IH7RlsFDbWl4AhXEiDsBizo="; |
87 class CNameObserver : public test::SendTest { | 87 class CNameObserver : public test::SendTest { |
88 public: | 88 public: |
(...skipping 518 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
607 // Increase frame size for next encoded frame, in the context of the | 607 // Increase frame size for next encoded frame, in the context of the |
608 // encoder thread. | 608 // encoder thread. |
609 if (!use_fec_ && | 609 if (!use_fec_ && |
610 current_size_frame_.Value() < static_cast<int32_t>(stop_size_)) { | 610 current_size_frame_.Value() < static_cast<int32_t>(stop_size_)) { |
611 ++current_size_frame_; | 611 ++current_size_frame_; |
612 } | 612 } |
613 encoder_.SetFrameSize(static_cast<size_t>(current_size_frame_.Value())); | 613 encoder_.SetFrameSize(static_cast<size_t>(current_size_frame_.Value())); |
614 } | 614 } |
615 | 615 |
616 Call::Config GetSenderCallConfig() override { | 616 Call::Config GetSenderCallConfig() override { |
617 Call::Config config(SendTransport()); | 617 Call::Config config; |
618 const int kMinBitrateBps = 30000; | 618 const int kMinBitrateBps = 30000; |
619 config.bitrate_config.min_bitrate_bps = kMinBitrateBps; | 619 config.bitrate_config.min_bitrate_bps = kMinBitrateBps; |
620 return config; | 620 return config; |
621 } | 621 } |
622 | 622 |
623 void ModifyConfigs(VideoSendStream::Config* send_config, | 623 void ModifyConfigs(VideoSendStream::Config* send_config, |
624 std::vector<VideoReceiveStream::Config>* receive_configs, | 624 std::vector<VideoReceiveStream::Config>* receive_configs, |
625 VideoEncoderConfig* encoder_config) override { | 625 VideoEncoderConfig* encoder_config) override { |
626 if (use_fec_) { | 626 if (use_fec_) { |
627 send_config->rtp.fec.red_payload_type = kRedPayloadType; | 627 send_config->rtp.fec.red_payload_type = kRedPayloadType; |
(...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1037 int GetStartBitrateKbps() const { | 1037 int GetStartBitrateKbps() const { |
1038 rtc::CritScope lock(&crit_); | 1038 rtc::CritScope lock(&crit_); |
1039 return start_bitrate_kbps_; | 1039 return start_bitrate_kbps_; |
1040 } | 1040 } |
1041 | 1041 |
1042 private: | 1042 private: |
1043 mutable rtc::CriticalSection crit_; | 1043 mutable rtc::CriticalSection crit_; |
1044 int start_bitrate_kbps_ GUARDED_BY(crit_); | 1044 int start_bitrate_kbps_ GUARDED_BY(crit_); |
1045 }; | 1045 }; |
1046 | 1046 |
| 1047 CreateSenderCall(Call::Config()); |
| 1048 |
1047 test::NullTransport transport; | 1049 test::NullTransport transport; |
1048 CreateSenderCall(Call::Config(&transport)); | 1050 CreateSendConfig(1, &transport); |
1049 | |
1050 CreateSendConfig(1); | |
1051 | 1051 |
1052 Call::Config::BitrateConfig bitrate_config; | 1052 Call::Config::BitrateConfig bitrate_config; |
1053 bitrate_config.start_bitrate_bps = | 1053 bitrate_config.start_bitrate_bps = |
1054 2 * encoder_config_.streams[0].max_bitrate_bps; | 1054 2 * encoder_config_.streams[0].max_bitrate_bps; |
1055 sender_call_->SetBitrateConfig(bitrate_config); | 1055 sender_call_->SetBitrateConfig(bitrate_config); |
1056 | 1056 |
1057 StartBitrateObserver encoder; | 1057 StartBitrateObserver encoder; |
1058 send_config_.encoder_settings.encoder = &encoder; | 1058 send_config_.encoder_settings.encoder = &encoder; |
1059 | 1059 |
1060 CreateStreams(); | 1060 CreateStreams(); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1097 | 1097 |
1098 private: | 1098 private: |
1099 // Delivered output frames. | 1099 // Delivered output frames. |
1100 std::vector<VideoFrame> output_frames_; | 1100 std::vector<VideoFrame> output_frames_; |
1101 | 1101 |
1102 // Indicate an output frame has arrived. | 1102 // Indicate an output frame has arrived. |
1103 rtc::scoped_ptr<EventWrapper> output_frame_event_; | 1103 rtc::scoped_ptr<EventWrapper> output_frame_event_; |
1104 }; | 1104 }; |
1105 | 1105 |
1106 // Initialize send stream. | 1106 // Initialize send stream. |
| 1107 CreateSenderCall(Call::Config()); |
| 1108 |
1107 test::NullTransport transport; | 1109 test::NullTransport transport; |
1108 CreateSenderCall(Call::Config(&transport)); | 1110 CreateSendConfig(1, &transport); |
1109 | |
1110 CreateSendConfig(1); | |
1111 FrameObserver observer; | 1111 FrameObserver observer; |
1112 send_config_.pre_encode_callback = &observer; | 1112 send_config_.pre_encode_callback = &observer; |
1113 CreateStreams(); | 1113 CreateStreams(); |
1114 | 1114 |
1115 // Prepare five input frames. Send ordinary VideoFrame and texture frames | 1115 // Prepare five input frames. Send ordinary VideoFrame and texture frames |
1116 // alternatively. | 1116 // alternatively. |
1117 std::vector<VideoFrame> input_frames; | 1117 std::vector<VideoFrame> input_frames; |
1118 int width = static_cast<int>(encoder_config_.streams[0].width); | 1118 int width = static_cast<int>(encoder_config_.streams[0].width); |
1119 int height = static_cast<int>(encoder_config_.streams[0].height); | 1119 int height = static_cast<int>(encoder_config_.streams[0].height); |
1120 test::FakeNativeHandle* handle1 = new test::FakeNativeHandle(); | 1120 test::FakeNativeHandle* handle1 = new test::FakeNativeHandle(); |
(...skipping 531 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1652 codecSettings->maxBitrate); | 1652 codecSettings->maxBitrate); |
1653 EXPECT_EQ(static_cast<unsigned int>(kIncreasedStartBitrateKbps), | 1653 EXPECT_EQ(static_cast<unsigned int>(kIncreasedStartBitrateKbps), |
1654 codecSettings->startBitrate); | 1654 codecSettings->startBitrate); |
1655 } | 1655 } |
1656 ++num_initializations_; | 1656 ++num_initializations_; |
1657 return FakeEncoder::InitEncode(codecSettings, numberOfCores, | 1657 return FakeEncoder::InitEncode(codecSettings, numberOfCores, |
1658 maxPayloadSize); | 1658 maxPayloadSize); |
1659 } | 1659 } |
1660 | 1660 |
1661 Call::Config GetSenderCallConfig() override { | 1661 Call::Config GetSenderCallConfig() override { |
1662 Call::Config config(SendTransport()); | 1662 Call::Config config; |
1663 config.bitrate_config.min_bitrate_bps = kMinBitrateKbps * 1000; | 1663 config.bitrate_config.min_bitrate_bps = kMinBitrateKbps * 1000; |
1664 config.bitrate_config.start_bitrate_bps = kStartBitrateKbps * 1000; | 1664 config.bitrate_config.start_bitrate_bps = kStartBitrateKbps * 1000; |
1665 config.bitrate_config.max_bitrate_bps = kMaxBitrateKbps * 1000; | 1665 config.bitrate_config.max_bitrate_bps = kMaxBitrateKbps * 1000; |
1666 return config; | 1666 return config; |
1667 } | 1667 } |
1668 | 1668 |
1669 void ModifyConfigs(VideoSendStream::Config* send_config, | 1669 void ModifyConfigs(VideoSendStream::Config* send_config, |
1670 std::vector<VideoReceiveStream::Config>* receive_configs, | 1670 std::vector<VideoReceiveStream::Config>* receive_configs, |
1671 VideoEncoderConfig* encoder_config) override { | 1671 VideoEncoderConfig* encoder_config) override { |
1672 send_config->encoder_settings.encoder = this; | 1672 send_config->encoder_settings.encoder = this; |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1789 const std::vector<VideoReceiveStream*>& receive_streams) override { | 1789 const std::vector<VideoReceiveStream*>& receive_streams) override { |
1790 send_stream_ = send_stream; | 1790 send_stream_ = send_stream; |
1791 } | 1791 } |
1792 | 1792 |
1793 VideoSendStream* send_stream_; | 1793 VideoSendStream* send_stream_; |
1794 } test; | 1794 } test; |
1795 | 1795 |
1796 RunBaseTest(&test); | 1796 RunBaseTest(&test); |
1797 } | 1797 } |
1798 } // namespace webrtc | 1798 } // namespace webrtc |
OLD | NEW |