Index: webrtc/test/channel_transport/channel_transport.cc |
diff --git a/webrtc/test/channel_transport/channel_transport.cc b/webrtc/test/channel_transport/channel_transport.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..38eefe54a2b8b8a3c9a9af50ed6f9cb7cd694388 |
--- /dev/null |
+++ b/webrtc/test/channel_transport/channel_transport.cc |
@@ -0,0 +1,83 @@ |
+/* |
+ * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. |
+ * |
+ * Use of this source code is governed by a BSD-style license |
+ * that can be found in the LICENSE file in the root of the source |
+ * tree. An additional intellectual property rights grant can be found |
+ * in the file PATENTS. All contributing project authors may |
+ * be found in the AUTHORS file in the root of the source tree. |
+ */ |
+ |
+#include "webrtc/test/channel_transport/channel_transport.h" |
+ |
+#include <stdio.h> |
+ |
+#if !defined(WEBRTC_ANDROID) && !defined(WEBRTC_IOS) |
+#include "testing/gtest/include/gtest/gtest.h" |
+#endif |
+#include "webrtc/test/channel_transport/udp_transport.h" |
+#include "webrtc/voice_engine/include/voe_network.h" |
+ |
+#if defined(WEBRTC_ANDROID) || defined(WEBRTC_IOS) |
+#undef NDEBUG |
+#include <assert.h> |
+#endif |
+ |
+namespace webrtc { |
+namespace test { |
+ |
+VoiceChannelTransport::VoiceChannelTransport(VoENetwork* voe_network, |
+ int channel) |
+ : channel_(channel), |
+ voe_network_(voe_network) { |
+ uint8_t socket_threads = 1; |
+ socket_transport_ = UdpTransport::Create(channel, socket_threads); |
+ int registered = voe_network_->RegisterExternalTransport(channel, |
+ *socket_transport_); |
+#if !defined(WEBRTC_ANDROID) && !defined(WEBRTC_IOS) |
+ EXPECT_EQ(0, registered); |
+#else |
+ assert(registered == 0); |
+#endif |
+} |
+ |
+VoiceChannelTransport::~VoiceChannelTransport() { |
+ voe_network_->DeRegisterExternalTransport(channel_); |
+ UdpTransport::Destroy(socket_transport_); |
+} |
+ |
+void VoiceChannelTransport::IncomingRTPPacket( |
+ const int8_t* incoming_rtp_packet, |
+ const size_t packet_length, |
+ const char* /*from_ip*/, |
+ const uint16_t /*from_port*/) { |
+ voe_network_->ReceivedRTPPacket( |
+ channel_, incoming_rtp_packet, packet_length, PacketTime()); |
+} |
+ |
+void VoiceChannelTransport::IncomingRTCPPacket( |
+ const int8_t* incoming_rtcp_packet, |
+ const size_t packet_length, |
+ const char* /*from_ip*/, |
+ const uint16_t /*from_port*/) { |
+ voe_network_->ReceivedRTCPPacket(channel_, incoming_rtcp_packet, |
+ packet_length); |
+} |
+ |
+int VoiceChannelTransport::SetLocalReceiver(uint16_t rtp_port) { |
+ static const int kNumReceiveSocketBuffers = 500; |
+ int return_value = socket_transport_->InitializeReceiveSockets(this, |
+ rtp_port); |
+ if (return_value == 0) { |
+ return socket_transport_->StartReceiving(kNumReceiveSocketBuffers); |
+ } |
+ return return_value; |
+} |
+ |
+int VoiceChannelTransport::SetSendDestination(const char* ip_address, |
+ uint16_t rtp_port) { |
+ return socket_transport_->InitializeSendSockets(ip_address, rtp_port); |
+} |
+ |
+} // namespace test |
+} // namespace webrtc |