Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / media / cast / transport / cast_transport_sender_impl.h
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef MEDIA_CAST_TRANSPORT_CAST_TRANSPORT_IMPL_H_
6 #define MEDIA_CAST_TRANSPORT_CAST_TRANSPORT_IMPL_H_
7
8 #include "base/callback.h"
9 #include "base/memory/ref_counted.h"
10 #include "base/memory/scoped_ptr.h"
11 #include "base/time/tick_clock.h"
12 #include "base/time/time.h"
13 #include "media/cast/transport/cast_transport_config.h"
14 #include "media/cast/transport/cast_transport_sender.h"
15 #include "media/cast/transport/pacing/paced_sender.h"
16 #include "media/cast/transport/rtcp/rtcp_builder.h"
17 #include "media/cast/transport/transport_audio_sender.h"
18 #include "media/cast/transport/transport_video_sender.h"
19
20 namespace media {
21 namespace cast {
22 namespace transport {
23
24 class CastTransportSenderImpl : public CastTransportSender {
25  public:
26   // external_transport is only used for testing.
27   // Note that SetPacketReceiver does not work if an external
28   // transport is provided.
29   CastTransportSenderImpl(
30       base::TickClock* clock,
31       const CastTransportConfig& config,
32       const CastTransportStatusCallback& status_callback,
33       const scoped_refptr<base::SingleThreadTaskRunner>& transport_task_runner,
34       PacketSender* external_transport);
35
36   virtual ~CastTransportSenderImpl();
37
38   // CastTransportSender implementation.
39   virtual void SetPacketReceiver(const PacketReceiverCallback& packet_receiver)
40       OVERRIDE;
41
42   virtual void InsertCodedAudioFrame(const EncodedAudioFrame* audio_frame,
43                                      const base::TimeTicks& recorded_time)
44       OVERRIDE;
45
46   virtual void InsertCodedVideoFrame(const EncodedVideoFrame* video_frame,
47                                      const base::TimeTicks& capture_time)
48       OVERRIDE;
49
50   virtual void SendRtcpFromRtpSender(uint32 packet_type_flags,
51                                      const RtcpSenderInfo& sender_info,
52                                      const RtcpDlrrReportBlock& dlrr,
53                                      const RtcpSenderLogMessage& sender_log,
54                                      uint32 sending_ssrc,
55                                      const std::string& c_name) OVERRIDE;
56
57   virtual void ResendPackets(bool is_audio,
58                              const MissingFramesAndPacketsMap& missing_packets)
59       OVERRIDE;
60
61   virtual void SubscribeAudioRtpStatsCallback(
62       const CastTransportRtpStatistics& callback) OVERRIDE;
63
64   virtual void SubscribeVideoRtpStatsCallback(
65       const CastTransportRtpStatistics& callback) OVERRIDE;
66
67  private:
68   scoped_ptr<UdpTransport> transport_;
69   PacedSender pacer_;
70   RtcpBuilder rtcp_builder_;
71   TransportAudioSender audio_sender_;
72   TransportVideoSender video_sender_;
73
74   DISALLOW_COPY_AND_ASSIGN(CastTransportSenderImpl);
75 };
76
77 }  // namespace transport
78 }  // namespace cast
79 }  // namespace media
80
81 #endif  // MEDIA_CAST_TRANSPORT_CAST_TRANSPORT_IMPL_H_