Revert "Replace BundleFilter with RtpDemuxer in RtpTransport."
This reverts commit ea8b62a3e74fe91cd6bf66304839cd5677880a4e. Reason for revert: Broke chromium tests. Original change's description: > Replace BundleFilter with RtpDemuxer in RtpTransport. > > BundleFilter is replaced by RtpDemuxer in RtpTransport for payload > type-based demuxing. RtpTransport will support MID-based demuxing later. > > Each BaseChannel has its own RTP demuxing criteria and when connecting > to the RtpTransport, BaseChannel will register itself as a demuxer sink. > > The inheritance model is changed. New inheritance chain: > DtlsSrtpTransport->SrtpTransport->RtpTranpsort > > NOTE: > When RTCP packets are received, Call::DeliverRtcp will be called for > multiple times (webrtc:9035) which is an existing issue. With this CL, > it will become more of a problem and should be fixed. > > Bug: webrtc:8587 > Change-Id: I1d8a00443bd4bcbacc56e5e19b7294205cdc38f0 > Reviewed-on: https://webrtc-review.googlesource.com/61360 > Commit-Queue: Zhi Huang <zhihuang@webrtc.org> > Reviewed-by: Steve Anton <steveanton@webrtc.org> > Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#22613} TBR=steveanton@webrtc.org,deadbeef@webrtc.org,zhihuang@webrtc.org Change-Id: If245da9d1ce970ac8dab7f45015e9b268a5dbcbd No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: webrtc:8587 Reviewed-on: https://webrtc-review.googlesource.com/64860 Reviewed-by: Zhi Huang <zhihuang@webrtc.org> Commit-Queue: Zhi Huang <zhihuang@webrtc.org> Cr-Commit-Position: refs/heads/master@{#22614}
This commit is contained in:
@ -197,37 +197,49 @@ TEST(RtpTransportTest, SetRtcpTransportWithNetworkRouteChanged) {
|
||||
EXPECT_FALSE(observer.network_route());
|
||||
}
|
||||
|
||||
class SignalCounter : public sigslot::has_slots<> {
|
||||
public:
|
||||
explicit SignalCounter(RtpTransport* transport) {
|
||||
transport->SignalReadyToSend.connect(this, &SignalCounter::OnReadyToSend);
|
||||
}
|
||||
int count() const { return count_; }
|
||||
void OnReadyToSend(bool ready) { ++count_; }
|
||||
|
||||
private:
|
||||
int count_ = 0;
|
||||
};
|
||||
|
||||
TEST(RtpTransportTest, ChangingReadyToSendStateOnlySignalsWhenChanged) {
|
||||
RtpTransport transport(kMuxEnabled);
|
||||
TransportObserver observer(&transport);
|
||||
SignalCounter observer(&transport);
|
||||
rtc::FakePacketTransport fake_rtp("fake_rtp");
|
||||
fake_rtp.SetWritable(true);
|
||||
|
||||
// State changes, so we should signal.
|
||||
transport.SetRtpPacketTransport(&fake_rtp);
|
||||
EXPECT_EQ(observer.ready_to_send_signal_count(), 1);
|
||||
EXPECT_EQ(observer.count(), 1);
|
||||
|
||||
// State does not change, so we should not signal.
|
||||
transport.SetRtpPacketTransport(&fake_rtp);
|
||||
EXPECT_EQ(observer.ready_to_send_signal_count(), 1);
|
||||
EXPECT_EQ(observer.count(), 1);
|
||||
|
||||
// State does not change, so we should not signal.
|
||||
transport.SetRtcpMuxEnabled(true);
|
||||
EXPECT_EQ(observer.ready_to_send_signal_count(), 1);
|
||||
EXPECT_EQ(observer.count(), 1);
|
||||
|
||||
// State changes, so we should signal.
|
||||
transport.SetRtcpMuxEnabled(false);
|
||||
EXPECT_EQ(observer.ready_to_send_signal_count(), 2);
|
||||
EXPECT_EQ(observer.count(), 2);
|
||||
}
|
||||
|
||||
// Test that SignalPacketReceived fires with rtcp=true when a RTCP packet is
|
||||
// received.
|
||||
TEST(RtpTransportTest, SignalDemuxedRtcp) {
|
||||
RtpTransport transport(kMuxDisabled);
|
||||
SignalPacketReceivedCounter observer(&transport);
|
||||
rtc::FakePacketTransport fake_rtp("fake_rtp");
|
||||
fake_rtp.SetDestination(&fake_rtp, true);
|
||||
transport.SetRtpPacketTransport(&fake_rtp);
|
||||
TransportObserver observer(&transport);
|
||||
|
||||
// An rtcp packet.
|
||||
const char data[] = {0, 73, 0, 0};
|
||||
@ -247,15 +259,11 @@ static const int kRtpLen = 12;
|
||||
// handled payload type is received.
|
||||
TEST(RtpTransportTest, SignalHandledRtpPayloadType) {
|
||||
RtpTransport transport(kMuxDisabled);
|
||||
SignalPacketReceivedCounter observer(&transport);
|
||||
rtc::FakePacketTransport fake_rtp("fake_rtp");
|
||||
fake_rtp.SetDestination(&fake_rtp, true);
|
||||
// Disable the encryption to allow raw RTP data.
|
||||
transport.SetRtpPacketTransport(&fake_rtp);
|
||||
TransportObserver observer(&transport);
|
||||
RtpDemuxerCriteria demuxer_criteria;
|
||||
// Add a handled payload type.
|
||||
demuxer_criteria.payload_types = {0x11};
|
||||
transport.RegisterRtpDemuxerSink(demuxer_criteria, &observer);
|
||||
transport.AddHandledPayloadType(0x11);
|
||||
|
||||
// An rtp packet.
|
||||
const rtc::PacketOptions options;
|
||||
@ -264,22 +272,16 @@ TEST(RtpTransportTest, SignalHandledRtpPayloadType) {
|
||||
fake_rtp.SendPacket(rtp_data.data<char>(), kRtpLen, options, flags);
|
||||
EXPECT_EQ(1, observer.rtp_count());
|
||||
EXPECT_EQ(0, observer.rtcp_count());
|
||||
// Remove the sink before destroying the transport.
|
||||
transport.UnregisterRtpDemuxerSink(&observer);
|
||||
}
|
||||
|
||||
// Test that SignalPacketReceived does not fire when a RTP packet with an
|
||||
// unhandled payload type is received.
|
||||
TEST(RtpTransportTest, DontSignalUnhandledRtpPayloadType) {
|
||||
RtpTransport transport(kMuxDisabled);
|
||||
SignalPacketReceivedCounter observer(&transport);
|
||||
rtc::FakePacketTransport fake_rtp("fake_rtp");
|
||||
fake_rtp.SetDestination(&fake_rtp, true);
|
||||
transport.SetRtpPacketTransport(&fake_rtp);
|
||||
TransportObserver observer(&transport);
|
||||
RtpDemuxerCriteria demuxer_criteria;
|
||||
// Add an unhandled payload type.
|
||||
demuxer_criteria.payload_types = {0x12};
|
||||
transport.RegisterRtpDemuxerSink(demuxer_criteria, &observer);
|
||||
|
||||
const rtc::PacketOptions options;
|
||||
const int flags = 0;
|
||||
@ -287,8 +289,6 @@ TEST(RtpTransportTest, DontSignalUnhandledRtpPayloadType) {
|
||||
fake_rtp.SendPacket(rtp_data.data<char>(), kRtpLen, options, flags);
|
||||
EXPECT_EQ(0, observer.rtp_count());
|
||||
EXPECT_EQ(0, observer.rtcp_count());
|
||||
// Remove the sink before destroying the transport.
|
||||
transport.UnregisterRtpDemuxerSink(&observer);
|
||||
}
|
||||
|
||||
} // namespace webrtc
|
||||
|
||||
Reference in New Issue
Block a user