Add a PacketOptions struct to webrtc::Transport.
This allows us to pass packet meta data, such as transport sequence
number, to libjingle and further down to the socket implementation. A
similar struct already exist in libjingle, see rtc::PacketOptions in asyncpacketsocket.h.
BUG=4173
Review URL: https://codereview.webrtc.org/1376673004
Cr-Commit-Position: refs/heads/master@{#10144}
diff --git a/webrtc/test/channel_transport/udp_transport_impl.cc b/webrtc/test/channel_transport/udp_transport_impl.cc
index f66f4ef..a530ec6 100644
--- a/webrtc/test/channel_transport/udp_transport_impl.cc
+++ b/webrtc/test/channel_transport/udp_transport_impl.cc
@@ -1931,7 +1931,9 @@
return -1;
}
-bool UdpTransportImpl::SendRtp(const uint8_t* data, size_t length) {
+bool UdpTransportImpl::SendRtp(const uint8_t* data,
+ size_t length,
+ const PacketOptions& packet_options) {
WEBRTC_TRACE(kTraceStream, kTraceTransport, _id, "%s", __FUNCTION__);
CriticalSectionScoped cs(_crit);
diff --git a/webrtc/test/channel_transport/udp_transport_impl.h b/webrtc/test/channel_transport/udp_transport_impl.h
index 80562f3..f80ee02 100644
--- a/webrtc/test/channel_transport/udp_transport_impl.h
+++ b/webrtc/test/channel_transport/udp_transport_impl.h
@@ -116,7 +116,9 @@
size_t length,
uint16_t rtcpPort) override;
// Transport functions
- bool SendRtp(const uint8_t* data, size_t length) override;
+ bool SendRtp(const uint8_t* data,
+ size_t length,
+ const PacketOptions& packet_options) override;
bool SendRtcp(const uint8_t* data, size_t length) override;
// UdpTransport functions continue.
diff --git a/webrtc/test/direct_transport.cc b/webrtc/test/direct_transport.cc
index d0f797c..1f92e92 100644
--- a/webrtc/test/direct_transport.cc
+++ b/webrtc/test/direct_transport.cc
@@ -57,7 +57,9 @@
fake_network_.SetReceiver(receiver);
}
-bool DirectTransport::SendRtp(const uint8_t* data, size_t length) {
+bool DirectTransport::SendRtp(const uint8_t* data,
+ size_t length,
+ const PacketOptions& options) {
fake_network_.SendPacket(data, length);
packet_event_->Set();
return true;
diff --git a/webrtc/test/direct_transport.h b/webrtc/test/direct_transport.h
index a0aaecb..1c6f937 100644
--- a/webrtc/test/direct_transport.h
+++ b/webrtc/test/direct_transport.h
@@ -39,7 +39,9 @@
virtual void StopSending();
virtual void SetReceiver(PacketReceiver* receiver);
- bool SendRtp(const uint8_t* data, size_t length) override;
+ bool SendRtp(const uint8_t* data,
+ size_t length,
+ const PacketOptions& options) override;
bool SendRtcp(const uint8_t* data, size_t length) override;
private:
diff --git a/webrtc/test/layer_filtering_transport.cc b/webrtc/test/layer_filtering_transport.cc
index 5ad3f8c..d6f3591 100644
--- a/webrtc/test/layer_filtering_transport.cc
+++ b/webrtc/test/layer_filtering_transport.cc
@@ -33,10 +33,12 @@
current_seq_num_(10000) {
} // TODO(ivica): random seq num?
-bool LayerFilteringTransport::SendRtp(const uint8_t* packet, size_t length) {
+bool LayerFilteringTransport::SendRtp(const uint8_t* packet,
+ size_t length,
+ const PacketOptions& options) {
if (tl_discard_threshold_ == 0 && sl_discard_threshold_ == 0) {
// Nothing to change, forward the packet immediately.
- return test::DirectTransport::SendRtp(packet, length);
+ return test::DirectTransport::SendRtp(packet, length, options);
}
bool set_marker_bit = false;
@@ -93,7 +95,7 @@
++current_seq_num_; // Increase only if packet not discarded.
- return test::DirectTransport::SendRtp(temp_buffer, length);
+ return test::DirectTransport::SendRtp(temp_buffer, length, options);
}
} // namespace test
diff --git a/webrtc/test/layer_filtering_transport.h b/webrtc/test/layer_filtering_transport.h
index 96a2cba..68994ae 100644
--- a/webrtc/test/layer_filtering_transport.h
+++ b/webrtc/test/layer_filtering_transport.h
@@ -24,7 +24,9 @@
uint8_t vp9_video_payload_type,
uint8_t tl_discard_threshold,
uint8_t sl_discard_threshold);
- bool SendRtp(const uint8_t* data, size_t length) override;
+ bool SendRtp(const uint8_t* data,
+ size_t length,
+ const PacketOptions& options) override;
private:
// Used to distinguish between VP8 and VP9.
diff --git a/webrtc/test/mock_transport.h b/webrtc/test/mock_transport.h
index ca08809..4937134 100644
--- a/webrtc/test/mock_transport.h
+++ b/webrtc/test/mock_transport.h
@@ -18,7 +18,10 @@
class MockTransport : public Transport {
public:
- MOCK_METHOD2(SendRtp, bool(const uint8_t* data, size_t len));
+ MOCK_METHOD3(SendRtp,
+ bool(const uint8_t* data,
+ size_t len,
+ const PacketOptions& options));
MOCK_METHOD2(SendRtcp, bool(const uint8_t* data, size_t len));
};
} // namespace webrtc
diff --git a/webrtc/test/null_transport.cc b/webrtc/test/null_transport.cc
index 3cba638..7fa36d1 100644
--- a/webrtc/test/null_transport.cc
+++ b/webrtc/test/null_transport.cc
@@ -12,7 +12,9 @@
namespace webrtc {
namespace test {
-bool NullTransport::SendRtp(const uint8_t* packet, size_t length) {
+bool NullTransport::SendRtp(const uint8_t* packet,
+ size_t length,
+ const PacketOptions& options) {
return true;
}
diff --git a/webrtc/test/null_transport.h b/webrtc/test/null_transport.h
index a60d8cb..f4b7046 100644
--- a/webrtc/test/null_transport.h
+++ b/webrtc/test/null_transport.h
@@ -19,7 +19,9 @@
namespace test {
class NullTransport : public Transport {
public:
- bool SendRtp(const uint8_t* packet, size_t length) override;
+ bool SendRtp(const uint8_t* packet,
+ size_t length,
+ const PacketOptions& options) override;
bool SendRtcp(const uint8_t* packet, size_t length) override;
};
} // namespace test
diff --git a/webrtc/test/rtp_rtcp_observer.h b/webrtc/test/rtp_rtcp_observer.h
index 24f7256..97aa7b6 100644
--- a/webrtc/test/rtp_rtcp_observer.h
+++ b/webrtc/test/rtp_rtcp_observer.h
@@ -126,7 +126,9 @@
on_rtcp_(on_rtcp) {}
private:
- bool SendRtp(const uint8_t* packet, size_t length) override {
+ bool SendRtp(const uint8_t* packet,
+ size_t length,
+ const PacketOptions& options) override {
EXPECT_FALSE(RtpHeaderParser::IsRtcp(packet, length));
Action action;
{
@@ -138,7 +140,7 @@
// Drop packet silently.
return true;
case SEND_PACKET:
- return test::DirectTransport::SendRtp(packet, length);
+ return test::DirectTransport::SendRtp(packet, length, options);
}
return true; // Will never happen, makes compiler happy.
}