Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / renderer / media / cast_transport_sender_ipc.h
index b86f6c9..284572b 100644 (file)
@@ -5,9 +5,12 @@
 #ifndef CHROME_RENDERER_MEDIA_CAST_TRANSPORT_SENDER_IPC_H_
 #define CHROME_RENDERER_MEDIA_CAST_TRANSPORT_SENDER_IPC_H_
 
+#include <map>
+
 #include "base/message_loop/message_loop_proxy.h"
 #include "ipc/ipc_channel_proxy.h"
-#include "media/cast/transport/cast_transport_sender.h"
+#include "media/cast/logging/logging_defines.h"
+#include "media/cast/net/cast_transport_sender.h"
 
 // This implementation of the CastTransportSender interface
 // communicates with the browser process over IPC and relays
 // The primary reason for this arrangement is to give the
 // renderer less direct control over the UDP sockets.
 class CastTransportSenderIPC
-    : public media::cast::transport::CastTransportSender {
+    : public media::cast::CastTransportSender {
  public:
   CastTransportSenderIPC(
-      const media::cast::transport::CastTransportConfig& config,
-      const media::cast::transport::CastTransportStatusCallback& status_cb);
+      const net::IPEndPoint& remote_end_point,
+      const media::cast::CastTransportStatusCallback& status_cb,
+      const media::cast::BulkRawEventsCallback& raw_events_cb);
 
   virtual ~CastTransportSenderIPC();
 
-  // media::cast::transport::CastTransportSender implementation.
-  virtual void SetPacketReceiver(
-      const media::cast::transport::PacketReceiverCallback& packet_callback)
-      OVERRIDE;
+  // media::cast::CastTransportSender implementation.
+  virtual void InitializeAudio(
+      const media::cast::CastTransportRtpConfig& config,
+      const media::cast::RtcpCastMessageCallback& cast_message_cb,
+      const media::cast::RtcpRttCallback& rtt_cb) OVERRIDE;
+  virtual void InitializeVideo(
+      const media::cast::CastTransportRtpConfig& config,
+      const media::cast::RtcpCastMessageCallback& cast_message_cb,
+      const media::cast::RtcpRttCallback& rtt_cb) OVERRIDE;
   virtual void InsertCodedAudioFrame(
-      const media::cast::transport::EncodedAudioFrame* audio_frame,
-      const base::TimeTicks& recorded_time) OVERRIDE;
+      const media::cast::EncodedFrame& audio_frame) OVERRIDE;
   virtual void InsertCodedVideoFrame(
-      const media::cast::transport::EncodedVideoFrame* video_frame,
-      const base::TimeTicks& capture_time) OVERRIDE;
-  virtual void SendRtcpFromRtpSender(
-      uint32 packet_type_flags,
-      const media::cast::transport::RtcpSenderInfo& sender_info,
-      const media::cast::transport::RtcpDlrrReportBlock& dlrr,
-      const media::cast::transport::RtcpSenderLogMessage& sender_log,
-      uint32 sending_ssrc,
-      const std::string& c_name) OVERRIDE;
+      const media::cast::EncodedFrame& video_frame) OVERRIDE;
+  virtual void SendSenderReport(
+      uint32 ssrc,
+      base::TimeTicks current_time,
+      uint32 current_time_as_rtp_timestamp) OVERRIDE;
   virtual void ResendPackets(
       bool is_audio,
-      const media::cast::transport::MissingFramesAndPacketsMap& missing_packets)
-      OVERRIDE;
-  virtual void SubscribeAudioRtpStatsCallback(
-      const media::cast::transport::CastTransportRtpStatistics& callback)
-      OVERRIDE;
-  virtual void SubscribeVideoRtpStatsCallback(
-      const media::cast::transport::CastTransportRtpStatistics& callback)
+      const media::cast::MissingFramesAndPacketsMap& missing_packets,
+      bool cancel_rtx_if_not_in_list,
+      base::TimeDelta dedupe_window)
       OVERRIDE;
 
-  void OnReceivedPacket(const media::cast::transport::Packet& packet);
   void OnNotifyStatusChange(
-      media::cast::transport::CastTransportStatus status);
-  void OnRtpStatistics(
-      bool audio,
-      const media::cast::transport::RtcpSenderInfo& sender_info,
-      base::TimeTicks time_sent,
-      uint32 rtp_timestamp);
+      media::cast::CastTransportStatus status);
+  void OnRawEvents(const std::vector<media::cast::PacketEvent>& packet_events,
+                   const std::vector<media::cast::FrameEvent>& frame_events);
+  void OnRtt(uint32 ssrc, const media::cast::RtcpRttReport& rtt_report);
+  void OnRtcpCastMessage(uint32 ssrc,
+                         const media::cast::RtcpCastMessage& cast_message);
 
  private:
+  struct ClientCallbacks {
+    ClientCallbacks();
+    ~ClientCallbacks();
+
+    media::cast::RtcpCastMessageCallback cast_message_cb;
+    media::cast::RtcpRttCallback rtt_cb;
+  };
+
   void Send(IPC::Message* message);
 
   int32 channel_id_;
-  media::cast::transport::PacketReceiverCallback packet_callback_;
-  media::cast::transport::CastTransportStatusCallback status_callback_;
-  media::cast::transport::CastTransportRtpStatistics audio_rtp_callback_;
-  media::cast::transport::CastTransportRtpStatistics video_rtp_callback_;
+  media::cast::PacketReceiverCallback packet_callback_;
+  media::cast::CastTransportStatusCallback status_callback_;
+  media::cast::BulkRawEventsCallback raw_events_callback_;
+  typedef std::map<uint32, ClientCallbacks> ClientMap;
+  ClientMap clients_;
+
   DISALLOW_COPY_AND_ASSIGN(CastTransportSenderIPC);
 };