Default streams: don't block media even if on different transceiver.
This fixes some edge cases where early media could cause default stream that block the actual signaled media from beind delivered. Bug: webrtc:11477 Change-Id: I8b26df63a690861bd19f083102d1395e882f8733 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/183120 Commit-Queue: Taylor <deadbeef@webrtc.org> Reviewed-by: Erik Språng <sprang@webrtc.org> Reviewed-by: Rasmus Brandt <brandtr@webrtc.org> Cr-Commit-Position: refs/heads/master@{#32030}
This commit is contained in:

committed by
Commit Bot

parent
0ade98316c
commit
c03a187391
@ -2028,6 +2028,11 @@ void WebRtcVoiceMediaChannel::ResetUnsignaledRecvStream() {
|
||||
RTC_DCHECK(worker_thread_checker_.IsCurrent());
|
||||
RTC_LOG(LS_INFO) << "ResetUnsignaledRecvStream.";
|
||||
unsignaled_stream_params_ = StreamParams();
|
||||
// Create a copy since RemoveRecvStream will modify |unsignaled_recv_ssrcs_|.
|
||||
std::vector<uint32_t> to_remove = unsignaled_recv_ssrcs_;
|
||||
for (uint32_t ssrc : to_remove) {
|
||||
RemoveRecvStream(ssrc);
|
||||
}
|
||||
}
|
||||
|
||||
bool WebRtcVoiceMediaChannel::SetLocalSource(uint32_t ssrc,
|
||||
|
@ -2722,6 +2722,30 @@ TEST_P(WebRtcVoiceEngineTestFake, RecvUnsignaledSsrcWithSignaledStreamId) {
|
||||
EXPECT_TRUE(GetRecvStream(kSsrc1).GetConfig().sync_group.empty());
|
||||
}
|
||||
|
||||
TEST_P(WebRtcVoiceEngineTestFake,
|
||||
ResetUnsignaledRecvStreamDeletesAllDefaultStreams) {
|
||||
ASSERT_TRUE(SetupChannel());
|
||||
// No receive streams to start with.
|
||||
ASSERT_TRUE(call_.GetAudioReceiveStreams().empty());
|
||||
|
||||
// Deliver a couple packets with unsignaled SSRCs.
|
||||
unsigned char packet[sizeof(kPcmuFrame)];
|
||||
memcpy(packet, kPcmuFrame, sizeof(kPcmuFrame));
|
||||
rtc::SetBE32(&packet[8], 0x1234);
|
||||
DeliverPacket(packet, sizeof(packet));
|
||||
rtc::SetBE32(&packet[8], 0x5678);
|
||||
DeliverPacket(packet, sizeof(packet));
|
||||
|
||||
// Verify that the receive streams were created.
|
||||
const auto& receivers1 = call_.GetAudioReceiveStreams();
|
||||
ASSERT_EQ(receivers1.size(), 2u);
|
||||
|
||||
// Should remove all default streams.
|
||||
channel_->ResetUnsignaledRecvStream();
|
||||
const auto& receivers2 = call_.GetAudioReceiveStreams();
|
||||
EXPECT_EQ(0u, receivers2.size());
|
||||
}
|
||||
|
||||
// Test that receiving N unsignaled stream works (streams will be created), and
|
||||
// that packets are forwarded to them all.
|
||||
TEST_P(WebRtcVoiceEngineTestFake, RecvMultipleUnsignaled) {
|
||||
|
Reference in New Issue
Block a user