Reland: FrameGeneratorCapturer: don't generate video before Start is called
It is partial reland, which adds call to Start() to all relevant places, but doesn't actually switches frame generator to not produce frames from the moment it was created. Bug: b/272350185 Change-Id: I6e3bd7af6f5cd8d9baff79c2aada7b2ddfae1c8d Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/310782 Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Reviewed-by: Florent Castelli <orphis@webrtc.org> Commit-Queue: Artem Titov <titovartem@webrtc.org> Reviewed-by: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/main@{#40379}
This commit is contained in:
parent
b4062e5611
commit
f92cc6d7b4
@ -186,6 +186,7 @@ class BitrateEstimatorTest : public test::CallTest {
|
||||
test::VideoTestConstants::kDefaultFramerate,
|
||||
*test->task_queue_factory_);
|
||||
frame_generator_capturer_->Init();
|
||||
frame_generator_capturer_->Start();
|
||||
send_stream_->SetSource(frame_generator_capturer_.get(),
|
||||
DegradationPreference::MAINTAIN_FRAMERATE);
|
||||
send_stream_->Start();
|
||||
|
||||
@ -237,6 +237,7 @@ TEST_F(PeerConnectionFieldTrialTest, ApplyFakeNetworkConfig) {
|
||||
auto video_track_source =
|
||||
rtc::make_ref_counted<FrameGeneratorCapturerVideoTrackSource>(
|
||||
config, clock_, /*is_screencast=*/false);
|
||||
video_track_source->Start();
|
||||
caller->AddTrack(pc_factory_->CreateVideoTrack(video_track_source, "v"));
|
||||
WrapperPtr callee = CreatePeerConnection();
|
||||
|
||||
|
||||
@ -64,9 +64,15 @@ class FrameGeneratorCapturerVideoTrackSource : public VideoTrackSource {
|
||||
|
||||
~FrameGeneratorCapturerVideoTrackSource() = default;
|
||||
|
||||
void Start() { SetState(kLive); }
|
||||
void Start() {
|
||||
SetState(kLive);
|
||||
video_capturer_->Start();
|
||||
}
|
||||
|
||||
void Stop() { SetState(kMuted); }
|
||||
void Stop() {
|
||||
SetState(kMuted);
|
||||
video_capturer_->Stop();
|
||||
}
|
||||
|
||||
bool is_screencast() const override { return is_screencast_; }
|
||||
|
||||
|
||||
@ -1260,6 +1260,7 @@ if (!build_with_chromium) {
|
||||
":run_loop",
|
||||
":scoped_key_value_config",
|
||||
":test_support",
|
||||
":test_video_capturer",
|
||||
":video_test_common",
|
||||
":video_test_constants",
|
||||
"../api:array_view",
|
||||
|
||||
@ -634,7 +634,14 @@ void CallTest::Start() {
|
||||
audio_recv_stream->Start();
|
||||
}
|
||||
|
||||
void CallTest::StartVideoSources() {
|
||||
for (size_t i = 0; i < video_sources_.size(); ++i) {
|
||||
video_sources_[i]->Start();
|
||||
}
|
||||
}
|
||||
|
||||
void CallTest::StartVideoStreams() {
|
||||
StartVideoSources();
|
||||
for (size_t i = 0; i < video_send_streams_.size(); ++i) {
|
||||
std::vector<bool> active_rtp_streams(
|
||||
video_send_configs_[i].rtp.ssrcs.size(), true);
|
||||
|
||||
@ -36,6 +36,7 @@
|
||||
#include "test/rtp_rtcp_observer.h"
|
||||
#include "test/run_loop.h"
|
||||
#include "test/scoped_key_value_config.h"
|
||||
#include "test/test_video_capturer.h"
|
||||
#include "test/video_test_constants.h"
|
||||
|
||||
namespace webrtc {
|
||||
@ -162,6 +163,7 @@ class CallTest : public ::testing::Test, public RtpPacketSinkInterface {
|
||||
void ConnectVideoSourcesToStreams();
|
||||
|
||||
void Start();
|
||||
void StartVideoSources();
|
||||
void StartVideoStreams();
|
||||
void Stop();
|
||||
void StopVideoStreams();
|
||||
@ -210,8 +212,7 @@ class CallTest : public ::testing::Test, public RtpPacketSinkInterface {
|
||||
std::vector<FlexfecReceiveStream*> flexfec_receive_streams_;
|
||||
|
||||
test::FrameGeneratorCapturer* frame_generator_capturer_;
|
||||
std::vector<std::unique_ptr<rtc::VideoSourceInterface<VideoFrame>>>
|
||||
video_sources_;
|
||||
std::vector<std::unique_ptr<TestVideoCapturer>> video_sources_;
|
||||
DegradationPreference degradation_preference_ =
|
||||
DegradationPreference::MAINTAIN_FRAMERATE;
|
||||
|
||||
|
||||
@ -338,6 +338,7 @@ PeerScenarioClient::VideoSendTrack PeerScenarioClient::CreateVideo(
|
||||
capturer->Init();
|
||||
res.source = rtc::make_ref_counted<FrameGeneratorCapturerVideoTrackSource>(
|
||||
std::move(capturer), config.screencast);
|
||||
res.source->Start();
|
||||
auto track = pc_factory_->CreateVideoTrack(res.source, track_id);
|
||||
res.track = track.get();
|
||||
res.sender =
|
||||
|
||||
@ -419,6 +419,7 @@ SendVideoStream::SendVideoStream(CallClient* sender,
|
||||
send_config.suspend_below_min_bitrate =
|
||||
config.encoder.suspend_below_min_bitrate;
|
||||
|
||||
video_capturer_->Start();
|
||||
sender_->SendTask([&] {
|
||||
if (config.stream.fec_controller_factory) {
|
||||
send_stream_ = sender_->call_->CreateVideoSendStream(
|
||||
|
||||
@ -254,6 +254,7 @@ void MultiCodecReceiveTest::RunTestWithCodecs(
|
||||
GetVideoSendStream()->Start();
|
||||
CreateFrameGeneratorCapturer(kFps, kWidth / 2, kHeight / 2);
|
||||
ConnectVideoSourcesToStreams();
|
||||
StartVideoSources();
|
||||
});
|
||||
EXPECT_TRUE(observer_.Wait()) << "Timed out waiting for frames.";
|
||||
}
|
||||
|
||||
@ -339,6 +339,7 @@ void RtpRtcpEndToEndTest::TestRtpStatePreservation(
|
||||
->SendRtcp(packet.data(), packet.size());
|
||||
}
|
||||
CreateFrameGeneratorCapturer(30, 1280, 720);
|
||||
StartVideoSources();
|
||||
});
|
||||
|
||||
observer.ResetExpectedSsrcs(1);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user