Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / media / cast / transport / cast_transport_sender_impl.cc
index b27e2e9..fd71399 100644 (file)
@@ -4,7 +4,7 @@
 
 #include "media/cast/transport/cast_transport_sender_impl.h"
 
-#include "base/task_runner.h"
+#include "base/single_thread_task_runner.h"
 #include "media/cast/transport/cast_transport_config.h"
 #include "media/cast/transport/cast_transport_defines.h"
 
@@ -16,20 +16,28 @@ CastTransportSender* CastTransportSender::CreateCastTransportSender(
     base::TickClock* clock,
     const CastTransportConfig& config,
     const CastTransportStatusCallback& status_callback,
-    const scoped_refptr<base::TaskRunner>& transport_task_runner) {
-  return new CastTransportSenderImpl(clock, config, status_callback,
-                                     transport_task_runner.get());
+    const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner) {
+  return new CastTransportSenderImpl(
+      clock, config, status_callback, transport_task_runner.get(), NULL);
 }
 
 CastTransportSenderImpl::CastTransportSenderImpl(
     base::TickClock* clock,
     const CastTransportConfig& config,
     const CastTransportStatusCallback& status_callback,
-    const scoped_refptr<base::TaskRunner>& transport_task_runner)
-    : pacer_(clock, &config, NULL, transport_task_runner, status_callback),
+    const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner,
+    PacketSender* external_transport)
+    : transport_(external_transport ? NULL
+                                    : new UdpTransport(transport_task_runner,
+                                                       config.local_endpoint,
+                                                       config.receiver_endpoint,
+                                                       status_callback)),
+      pacer_(clock,
+             external_transport ? external_transport : transport_.get(),
+             transport_task_runner),
       rtcp_builder_(&pacer_),
-      audio_sender_(config, clock, &pacer_),
-      video_sender_(config, clock, &pacer_) {
+      audio_sender_(config, clock, transport_task_runner, &pacer_),
+      video_sender_(config, clock, transport_task_runner, &pacer_) {
   if (audio_sender_.initialized() && video_sender_.initialized()) {
     status_callback.Run(TRANSPORT_INITIALIZED);
   } else {
@@ -37,12 +45,11 @@ CastTransportSenderImpl::CastTransportSenderImpl(
   }
 }
 
-CastTransportSenderImpl::~CastTransportSenderImpl() {
-}
+CastTransportSenderImpl::~CastTransportSenderImpl() {}
 
 void CastTransportSenderImpl::SetPacketReceiver(
-    scoped_refptr<PacketReceiver> packet_receiver) {
-  pacer_.SetPacketReceiver(packet_receiver);
+    const PacketReceiverCallback& packet_receiver) {
+  transport_->StartReceiving(packet_receiver);
 }
 
 void CastTransportSenderImpl::InsertCodedAudioFrame(
@@ -64,16 +71,13 @@ void CastTransportSenderImpl::SendRtcpFromRtpSender(
     const RtcpSenderLogMessage& sender_log,
     uint32 sending_ssrc,
     const std::string& c_name) {
-  rtcp_builder_.SendRtcpFromRtpSender(packet_type_flags,
-                                      sender_info,
-                                      dlrr,
-                                      sender_log,
-                                      sending_ssrc,
-                                      c_name);
+  rtcp_builder_.SendRtcpFromRtpSender(
+      packet_type_flags, sender_info, dlrr, sender_log, sending_ssrc, c_name);
 }
 
 void CastTransportSenderImpl::ResendPackets(
-    bool is_audio, const MissingFramesAndPacketsMap& missing_packets) {
+    bool is_audio,
+    const MissingFramesAndPacketsMap& missing_packets) {
   if (is_audio) {
     audio_sender_.ResendPackets(missing_packets);
   } else {
@@ -81,21 +85,14 @@ void CastTransportSenderImpl::ResendPackets(
   }
 }
 
-void CastTransportSenderImpl::RtpAudioStatistics(
-    const base::TimeTicks& now,
-    RtcpSenderInfo* sender_info) {
-  audio_sender_.GetStatistics(now, sender_info);
-}
-
-void CastTransportSenderImpl::RtpVideoStatistics(
-    const base::TimeTicks& now,
-    RtcpSenderInfo* sender_info) {
-  video_sender_.GetStatistics(now, sender_info);
+void CastTransportSenderImpl::SubscribeAudioRtpStatsCallback(
+    const CastTransportRtpStatistics& callback) {
+  audio_sender_.SubscribeAudioRtpStatsCallback(callback);
 }
 
-void CastTransportSenderImpl::InsertFakeTransportForTesting(
-    PacketSender* fake_transport) {
-  pacer_.InsertFakeTransportForTesting(fake_transport);
+void CastTransportSenderImpl::SubscribeVideoRtpStatsCallback(
+    const CastTransportRtpStatistics& callback) {
+  video_sender_.SubscribeVideoRtpStatsCallback(callback);
 }
 
 }  // namespace transport