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.
5 #ifndef MEDIA_CAST_TRANSPORT_CAST_TRANSPORT_IMPL_H_
6 #define MEDIA_CAST_TRANSPORT_CAST_TRANSPORT_IMPL_H_
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"
24 class CastTransportSenderImpl : public CastTransportSender {
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);
36 virtual ~CastTransportSenderImpl();
38 // CastTransportSender implementation.
39 virtual void SetPacketReceiver(const PacketReceiverCallback& packet_receiver)
42 virtual void InsertCodedAudioFrame(const EncodedAudioFrame* audio_frame,
43 const base::TimeTicks& recorded_time)
46 virtual void InsertCodedVideoFrame(const EncodedVideoFrame* video_frame,
47 const base::TimeTicks& capture_time)
50 virtual void SendRtcpFromRtpSender(uint32 packet_type_flags,
51 const RtcpSenderInfo& sender_info,
52 const RtcpDlrrReportBlock& dlrr,
53 const RtcpSenderLogMessage& sender_log,
55 const std::string& c_name) OVERRIDE;
57 virtual void ResendPackets(bool is_audio,
58 const MissingFramesAndPacketsMap& missing_packets)
61 virtual void SubscribeAudioRtpStatsCallback(
62 const CastTransportRtpStatistics& callback) OVERRIDE;
64 virtual void SubscribeVideoRtpStatsCallback(
65 const CastTransportRtpStatistics& callback) OVERRIDE;
68 scoped_ptr<UdpTransport> transport_;
70 RtcpBuilder rtcp_builder_;
71 TransportAudioSender audio_sender_;
72 TransportVideoSender video_sender_;
74 DISALLOW_COPY_AND_ASSIGN(CastTransportSenderImpl);
77 } // namespace transport
81 #endif // MEDIA_CAST_TRANSPORT_CAST_TRANSPORT_IMPL_H_