Introduce AddDefaultRecvStreamForTesting to VideoReceiveChannel API
This change allows us to remove one static_cast from tests that was problematic for another refactoring. Bug: webrtc:13931 Change-Id: I8e1b5cecadd806b266b6c115b56b18b9613cbe82 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/306500 Reviewed-by: Henrik Boström <hbos@webrtc.org> Commit-Queue: Harald Alvestrand <hta@webrtc.org> Cr-Commit-Position: refs/heads/main@{#40144}
This commit is contained in:
parent
5c35d08703
commit
cfd4cd0703
@ -143,6 +143,10 @@ class RtpHelper : public Base {
|
||||
CreateRtpParametersWithEncodings(sp);
|
||||
return true;
|
||||
}
|
||||
virtual bool AddDefaultRecvStreamForTesting(const StreamParams& sp) {
|
||||
RTC_CHECK_NOTREACHED();
|
||||
return false;
|
||||
}
|
||||
virtual bool RemoveRecvStream(uint32_t ssrc) {
|
||||
auto parameters_iterator = rtp_receive_parameters_.find(ssrc);
|
||||
if (parameters_iterator != rtp_receive_parameters_.end()) {
|
||||
|
||||
@ -1005,6 +1005,7 @@ class VideoMediaReceiveChannelInterface : public MediaReceiveChannelInterface {
|
||||
bool nack_enabled,
|
||||
webrtc::RtcpMode rtcp_mode,
|
||||
absl::optional<int> rtx_time) = 0;
|
||||
virtual bool AddDefaultRecvStreamForTesting(const StreamParams& sp) = 0;
|
||||
};
|
||||
|
||||
} // namespace cricket
|
||||
|
||||
@ -242,6 +242,8 @@ class VideoMediaChannel : public MediaChannel,
|
||||
void SetSsrcListChangedCallback(
|
||||
absl::AnyInvocable<void(const std::set<uint32_t>&)> callback) override =
|
||||
0;
|
||||
bool AddRecvStream(const StreamParams& sp) override = 0;
|
||||
void OnPacketReceived(const webrtc::RtpPacketReceived& packet) override = 0;
|
||||
|
||||
// This fills the "bitrate parts" (rtx, video bitrate) of the
|
||||
// BandwidthEstimationInfo, since that part that isn't possible to get
|
||||
@ -815,9 +817,13 @@ class VideoMediaReceiveChannel : public VideoMediaReceiveChannelInterface {
|
||||
impl()->SetReceiverFeedbackParameters(lntf_enabled, nack_enabled, rtcp_mode,
|
||||
rtx_time);
|
||||
}
|
||||
MediaChannel* ImplForTesting() override { return impl_; }
|
||||
void SetReceive(bool receive) override { impl()->SetReceive(receive); }
|
||||
|
||||
MediaChannel* ImplForTesting() override { return impl_; }
|
||||
bool AddDefaultRecvStreamForTesting(const StreamParams& sp) override {
|
||||
return impl()->AddDefaultRecvStreamForTesting(sp);
|
||||
}
|
||||
|
||||
private:
|
||||
VideoMediaReceiveChannelInterface* impl() { return impl_; }
|
||||
const VideoMediaReceiveChannelInterface* impl() const { return impl_; }
|
||||
|
||||
@ -168,7 +168,10 @@ class WebRtcVideoChannel : public VideoMediaChannel,
|
||||
bool AddSendStream(const StreamParams& sp) override;
|
||||
bool RemoveSendStream(uint32_t ssrc) override;
|
||||
bool AddRecvStream(const StreamParams& sp) override;
|
||||
bool AddRecvStream(const StreamParams& sp, bool default_stream);
|
||||
bool AddDefaultRecvStreamForTesting(const StreamParams& sp) override {
|
||||
// Invokes private AddRecvStream variant function
|
||||
return AddRecvStream(sp, true);
|
||||
}
|
||||
bool RemoveRecvStream(uint32_t ssrc) override;
|
||||
void ResetUnsignaledRecvStream() override;
|
||||
absl::optional<uint32_t> GetUnsignaledSsrc() const override;
|
||||
@ -379,6 +382,9 @@ class WebRtcVideoChannel : public VideoMediaChannel,
|
||||
RTC_EXCLUSIVE_LOCKS_REQUIRED(thread_checker_);
|
||||
void ReCreateDefaultReceiveStream(uint32_t ssrc,
|
||||
absl::optional<uint32_t> rtx_ssrc);
|
||||
// Add a receive stream. Used for testing.
|
||||
bool AddRecvStream(const StreamParams& sp, bool default_stream);
|
||||
|
||||
void ConfigureReceiverRtp(
|
||||
webrtc::VideoReceiveStreamInterface::Config* config,
|
||||
webrtc::FlexfecReceiveStream::Config* flexfec_config,
|
||||
|
||||
@ -1613,14 +1613,13 @@ class WebRtcVideoChannelEncodedFrameCallbackTest : public ::testing::Test {
|
||||
[]() { return std::make_unique<webrtc::test::FakeDecoder>(); },
|
||||
kSdpVideoFormats),
|
||||
field_trials_),
|
||||
channel_(absl::WrapUnique(static_cast<cricket::WebRtcVideoChannel*>(
|
||||
engine_.CreateMediaChannel(
|
||||
cricket::MediaChannel::Role::kBoth,
|
||||
call_.get(),
|
||||
cricket::MediaConfig(),
|
||||
cricket::VideoOptions(),
|
||||
webrtc::CryptoOptions(),
|
||||
video_bitrate_allocator_factory_.get())))) {
|
||||
channel_(absl::WrapUnique(engine_.CreateMediaChannel(
|
||||
cricket::MediaChannel::Role::kBoth,
|
||||
call_.get(),
|
||||
cricket::MediaConfig(),
|
||||
cricket::VideoOptions(),
|
||||
webrtc::CryptoOptions(),
|
||||
video_bitrate_allocator_factory_.get()))) {
|
||||
send_channel_ = std::make_unique<VideoMediaSendChannel>(channel_.get());
|
||||
receive_channel_ =
|
||||
std::make_unique<VideoMediaReceiveChannel>(channel_.get());
|
||||
@ -1657,7 +1656,7 @@ class WebRtcVideoChannelEncodedFrameCallbackTest : public ::testing::Test {
|
||||
std::unique_ptr<webrtc::VideoBitrateAllocatorFactory>
|
||||
video_bitrate_allocator_factory_;
|
||||
WebRtcVideoEngine engine_;
|
||||
std::unique_ptr<WebRtcVideoChannel> channel_;
|
||||
std::unique_ptr<VideoMediaChannel> channel_;
|
||||
std::unique_ptr<VideoMediaSendChannel> send_channel_;
|
||||
std::unique_ptr<VideoMediaReceiveChannel> receive_channel_;
|
||||
cricket::FakeNetworkInterface network_interface_;
|
||||
@ -1672,8 +1671,8 @@ TEST_F(WebRtcVideoChannelEncodedFrameCallbackTest,
|
||||
SetEncodedFrameBufferFunction_DefaultStream) {
|
||||
testing::MockFunction<void(const webrtc::RecordableEncodedFrame&)> callback;
|
||||
EXPECT_CALL(callback, Call);
|
||||
EXPECT_TRUE(channel_->AddRecvStream(
|
||||
cricket::StreamParams::CreateLegacy(kSsrc), /*is_default_stream=*/true));
|
||||
EXPECT_TRUE(channel_->AddDefaultRecvStreamForTesting(
|
||||
cricket::StreamParams::CreateLegacy(kSsrc)));
|
||||
channel_->SetRecordableEncodedFrameCallback(/*ssrc=*/0,
|
||||
callback.AsStdFunction());
|
||||
EXPECT_TRUE(channel_->SetSink(kSsrc, &renderer_));
|
||||
@ -1687,8 +1686,8 @@ TEST_F(WebRtcVideoChannelEncodedFrameCallbackTest,
|
||||
SetEncodedFrameBufferFunction_MatchSsrcWithDefaultStream) {
|
||||
testing::MockFunction<void(const webrtc::RecordableEncodedFrame&)> callback;
|
||||
EXPECT_CALL(callback, Call);
|
||||
EXPECT_TRUE(channel_->AddRecvStream(
|
||||
cricket::StreamParams::CreateLegacy(kSsrc), /*is_default_stream=*/true));
|
||||
EXPECT_TRUE(channel_->AddDefaultRecvStreamForTesting(
|
||||
cricket::StreamParams::CreateLegacy(kSsrc)));
|
||||
EXPECT_TRUE(channel_->SetSink(kSsrc, &renderer_));
|
||||
channel_->SetRecordableEncodedFrameCallback(kSsrc, callback.AsStdFunction());
|
||||
DeliverKeyFrame(kSsrc);
|
||||
@ -1701,8 +1700,8 @@ TEST_F(WebRtcVideoChannelEncodedFrameCallbackTest,
|
||||
SetEncodedFrameBufferFunction_MatchSsrc) {
|
||||
testing::MockFunction<void(const webrtc::RecordableEncodedFrame&)> callback;
|
||||
EXPECT_CALL(callback, Call);
|
||||
EXPECT_TRUE(channel_->AddRecvStream(
|
||||
cricket::StreamParams::CreateLegacy(kSsrc), /*is_default_stream=*/false));
|
||||
EXPECT_TRUE(
|
||||
channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(kSsrc)));
|
||||
EXPECT_TRUE(channel_->SetSink(kSsrc, &renderer_));
|
||||
channel_->SetRecordableEncodedFrameCallback(kSsrc, callback.AsStdFunction());
|
||||
DeliverKeyFrame(kSsrc);
|
||||
@ -1717,8 +1716,7 @@ TEST_F(WebRtcVideoChannelEncodedFrameCallbackTest,
|
||||
testing::MockFunction<void(const webrtc::RecordableEncodedFrame&)>>
|
||||
callback;
|
||||
EXPECT_TRUE(
|
||||
channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(kSsrc + 1),
|
||||
/*is_default_stream=*/false));
|
||||
channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(kSsrc + 1)));
|
||||
EXPECT_TRUE(channel_->SetSink(kSsrc + 1, &renderer_));
|
||||
channel_->SetRecordableEncodedFrameCallback(kSsrc, callback.AsStdFunction());
|
||||
DeliverKeyFrame(kSsrc); // Expected to not cause function to fire.
|
||||
@ -1731,9 +1729,8 @@ TEST_F(WebRtcVideoChannelEncodedFrameCallbackTest,
|
||||
testing::StrictMock<
|
||||
testing::MockFunction<void(const webrtc::RecordableEncodedFrame&)>>
|
||||
callback;
|
||||
EXPECT_TRUE(
|
||||
channel_->AddRecvStream(cricket::StreamParams::CreateLegacy(kSsrc + 1),
|
||||
/*is_default_stream=*/true));
|
||||
EXPECT_TRUE(channel_->AddDefaultRecvStreamForTesting(
|
||||
cricket::StreamParams::CreateLegacy(kSsrc + 1)));
|
||||
EXPECT_TRUE(channel_->SetSink(kSsrc + 1, &renderer_));
|
||||
channel_->SetRecordableEncodedFrameCallback(kSsrc, callback.AsStdFunction());
|
||||
channel_->SetDefaultSink(&renderer_);
|
||||
@ -1745,8 +1742,8 @@ TEST_F(WebRtcVideoChannelEncodedFrameCallbackTest,
|
||||
TEST_F(WebRtcVideoChannelEncodedFrameCallbackTest, DoesNotDecodeWhenDisabled) {
|
||||
testing::MockFunction<void(const webrtc::RecordableEncodedFrame&)> callback;
|
||||
EXPECT_CALL(callback, Call);
|
||||
EXPECT_TRUE(channel_->AddRecvStream(
|
||||
cricket::StreamParams::CreateLegacy(kSsrc), /*is_default_stream=*/true));
|
||||
EXPECT_TRUE(channel_->AddDefaultRecvStreamForTesting(
|
||||
cricket::StreamParams::CreateLegacy(kSsrc)));
|
||||
channel_->SetRecordableEncodedFrameCallback(/*ssrc=*/0,
|
||||
callback.AsStdFunction());
|
||||
EXPECT_TRUE(channel_->SetSink(kSsrc, &renderer_));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user