OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "media/cast/transport/cast_transport_sender_impl.h" | 5 #include "media/cast/transport/cast_transport_sender_impl.h" |
6 | 6 |
7 #include "base/task_runner.h" | 7 #include "base/task_runner.h" |
8 #include "media/cast/transport/cast_transport_config.h" | 8 #include "media/cast/transport/cast_transport_config.h" |
9 #include "media/cast/transport/cast_transport_defines.h" | 9 #include "media/cast/transport/cast_transport_defines.h" |
10 | 10 |
11 namespace media { | 11 namespace media { |
12 namespace cast { | 12 namespace cast { |
13 namespace transport { | 13 namespace transport { |
14 | 14 |
15 CastTransportSender* CastTransportSender::CreateCastTransportSender( | 15 CastTransportSender* CastTransportSender::CreateCastTransportSender( |
16 base::TickClock* clock, | 16 base::TickClock* clock, |
17 const CastTransportConfig& config, | 17 const CastTransportConfig& config, |
18 const CastTransportStatusCallback& status_callback, | 18 const CastTransportStatusCallback& status_callback, |
19 const scoped_refptr<base::TaskRunner>& transport_task_runner) { | 19 const scoped_refptr<base::TaskRunner>& transport_task_runner) { |
20 return new CastTransportSenderImpl(clock, config, status_callback, | 20 return new CastTransportSenderImpl(clock, |
21 transport_task_runner.get()); | 21 config, |
| 22 status_callback, |
| 23 transport_task_runner.get(), |
| 24 NULL); |
22 } | 25 } |
23 | 26 |
24 CastTransportSenderImpl::CastTransportSenderImpl( | 27 CastTransportSenderImpl::CastTransportSenderImpl( |
25 base::TickClock* clock, | 28 base::TickClock* clock, |
26 const CastTransportConfig& config, | 29 const CastTransportConfig& config, |
27 const CastTransportStatusCallback& status_callback, | 30 const CastTransportStatusCallback& status_callback, |
28 const scoped_refptr<base::TaskRunner>& transport_task_runner) | 31 const scoped_refptr<base::TaskRunner>& transport_task_runner, |
29 : pacer_(clock, &config, NULL, transport_task_runner, status_callback), | 32 PacketSender* external_transport) |
| 33 : transport_(external_transport ? NULL : |
| 34 new UdpTransport(transport_task_runner, |
| 35 config.local_endpoint, |
| 36 config.receiver_endpoint, |
| 37 status_callback)), |
| 38 pacer_(clock, |
| 39 external_transport ? external_transport : transport_.get(), |
| 40 transport_task_runner), |
30 rtcp_builder_(&pacer_), | 41 rtcp_builder_(&pacer_), |
31 audio_sender_(config, clock, &pacer_), | 42 audio_sender_(config, clock, &pacer_), |
32 video_sender_(config, clock, &pacer_) { | 43 video_sender_(config, clock, &pacer_) { |
33 if (audio_sender_.initialized() && video_sender_.initialized()) { | 44 if (audio_sender_.initialized() && video_sender_.initialized()) { |
34 status_callback.Run(TRANSPORT_INITIALIZED); | 45 status_callback.Run(TRANSPORT_INITIALIZED); |
35 } else { | 46 } else { |
36 status_callback.Run(TRANSPORT_UNINITIALIZED); | 47 status_callback.Run(TRANSPORT_UNINITIALIZED); |
37 } | 48 } |
38 } | 49 } |
39 | 50 |
40 CastTransportSenderImpl::~CastTransportSenderImpl() { | 51 CastTransportSenderImpl::~CastTransportSenderImpl() { |
41 } | 52 } |
42 | 53 |
43 void CastTransportSenderImpl::SetPacketReceiver( | 54 void CastTransportSenderImpl::SetPacketReceiver( |
44 const PacketReceiverCallback& packet_receiver) { | 55 const PacketReceiverCallback& packet_receiver) { |
45 pacer_.SetPacketReceiver(packet_receiver); | 56 transport_->StartReceiving(packet_receiver); |
46 } | 57 } |
47 | 58 |
48 void CastTransportSenderImpl::InsertCodedAudioFrame( | 59 void CastTransportSenderImpl::InsertCodedAudioFrame( |
49 const EncodedAudioFrame* audio_frame, | 60 const EncodedAudioFrame* audio_frame, |
50 const base::TimeTicks& recorded_time) { | 61 const base::TimeTicks& recorded_time) { |
51 audio_sender_.InsertCodedAudioFrame(audio_frame, recorded_time); | 62 audio_sender_.InsertCodedAudioFrame(audio_frame, recorded_time); |
52 } | 63 } |
53 | 64 |
54 void CastTransportSenderImpl::InsertCodedVideoFrame( | 65 void CastTransportSenderImpl::InsertCodedVideoFrame( |
55 const EncodedVideoFrame* video_frame, | 66 const EncodedVideoFrame* video_frame, |
(...skipping 30 matching lines...) Expand all Loading... |
86 RtcpSenderInfo* sender_info) { | 97 RtcpSenderInfo* sender_info) { |
87 audio_sender_.GetStatistics(now, sender_info); | 98 audio_sender_.GetStatistics(now, sender_info); |
88 } | 99 } |
89 | 100 |
90 void CastTransportSenderImpl::RtpVideoStatistics( | 101 void CastTransportSenderImpl::RtpVideoStatistics( |
91 const base::TimeTicks& now, | 102 const base::TimeTicks& now, |
92 RtcpSenderInfo* sender_info) { | 103 RtcpSenderInfo* sender_info) { |
93 video_sender_.GetStatistics(now, sender_info); | 104 video_sender_.GetStatistics(now, sender_info); |
94 } | 105 } |
95 | 106 |
96 void CastTransportSenderImpl::InsertFakeTransportForTesting( | |
97 PacketSender* fake_transport) { | |
98 pacer_.InsertFakeTransportForTesting(fake_transport); | |
99 } | |
100 | |
101 } // namespace transport | 107 } // namespace transport |
102 } // namespace cast | 108 } // namespace cast |
103 } // namespace media | 109 } // namespace media |
OLD | NEW |