| 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 |