Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(974)

Side by Side Diff: media/cast/transport/cast_transport_sender_impl.cc

Issue 314593002: [Cast] Cleanup: Remove TransportXXXXXSender, an unnecessary layer of indirection. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix CastTransportHostFilterTest.SimpleMessages. Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/single_thread_task_runner.h" 7 #include "base/single_thread_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
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 net::IPEndPoint(), 49 net::IPEndPoint(),
50 remote_end_point, 50 remote_end_point,
51 status_callback)), 51 status_callback)),
52 logging_(), 52 logging_(),
53 pacer_(clock, 53 pacer_(clock,
54 &logging_, 54 &logging_,
55 external_transport ? external_transport : transport_.get(), 55 external_transport ? external_transport : transport_.get(),
56 transport_task_runner), 56 transport_task_runner),
57 rtcp_builder_(&pacer_), 57 rtcp_builder_(&pacer_),
58 raw_events_callback_(raw_events_callback) { 58 raw_events_callback_(raw_events_callback) {
59 DCHECK(clock_);
59 if (!raw_events_callback_.is_null()) { 60 if (!raw_events_callback_.is_null()) {
60 DCHECK(raw_events_callback_interval > base::TimeDelta()); 61 DCHECK(raw_events_callback_interval > base::TimeDelta());
61 event_subscriber_.reset(new SimpleEventSubscriber); 62 event_subscriber_.reset(new SimpleEventSubscriber);
62 logging_.AddRawEventSubscriber(event_subscriber_.get()); 63 logging_.AddRawEventSubscriber(event_subscriber_.get());
63 raw_events_timer_.Start(FROM_HERE, 64 raw_events_timer_.Start(FROM_HERE,
64 raw_events_callback_interval, 65 raw_events_callback_interval,
65 this, 66 this,
66 &CastTransportSenderImpl::SendRawEvents); 67 &CastTransportSenderImpl::SendRawEvents);
67 } 68 }
68 } 69 }
69 70
70 CastTransportSenderImpl::~CastTransportSenderImpl() { 71 CastTransportSenderImpl::~CastTransportSenderImpl() {
71 if (event_subscriber_.get()) 72 if (event_subscriber_.get())
72 logging_.RemoveRawEventSubscriber(event_subscriber_.get()); 73 logging_.RemoveRawEventSubscriber(event_subscriber_.get());
73 } 74 }
74 75
75 void CastTransportSenderImpl::InitializeAudio( 76 void CastTransportSenderImpl::InitializeAudio(
76 const CastTransportAudioConfig& config) { 77 const CastTransportAudioConfig& config) {
77 pacer_.RegisterAudioSsrc(config.rtp.config.ssrc); 78 LOG_IF(WARNING, config.rtp.config.aes_key.empty() ||
78 audio_sender_.reset(new TransportAudioSender( 79 config.rtp.config.aes_iv_mask.empty())
79 config, clock_, transport_task_runner_, &pacer_)); 80 << "Unsafe to send audio with encryption DISABLED.";
80 if (audio_sender_->initialized()) 81 if (!audio_encryptor_.Initialize(config.rtp.config.aes_key,
82 config.rtp.config.aes_iv_mask)) {
83 status_callback_.Run(TRANSPORT_AUDIO_UNINITIALIZED);
84 return;
85 }
86 audio_sender_.reset(new RtpSender(clock_, transport_task_runner_, &pacer_));
87 if (audio_sender_->InitializeAudio(config)) {
88 pacer_.RegisterAudioSsrc(config.rtp.config.ssrc);
81 status_callback_.Run(TRANSPORT_AUDIO_INITIALIZED); 89 status_callback_.Run(TRANSPORT_AUDIO_INITIALIZED);
82 else 90 } else {
91 audio_sender_.reset();
83 status_callback_.Run(TRANSPORT_AUDIO_UNINITIALIZED); 92 status_callback_.Run(TRANSPORT_AUDIO_UNINITIALIZED);
93 }
84 } 94 }
85 95
86 void CastTransportSenderImpl::InitializeVideo( 96 void CastTransportSenderImpl::InitializeVideo(
87 const CastTransportVideoConfig& config) { 97 const CastTransportVideoConfig& config) {
88 pacer_.RegisterVideoSsrc(config.rtp.config.ssrc); 98 LOG_IF(WARNING, config.rtp.config.aes_key.empty() ||
89 video_sender_.reset(new TransportVideoSender( 99 config.rtp.config.aes_iv_mask.empty())
90 config, clock_, transport_task_runner_, &pacer_)); 100 << "Unsafe to send video with encryption DISABLED.";
91 if (video_sender_->initialized()) 101 if (!video_encryptor_.Initialize(config.rtp.config.aes_key,
102 config.rtp.config.aes_iv_mask)) {
103 status_callback_.Run(TRANSPORT_VIDEO_UNINITIALIZED);
104 return;
105 }
106 video_sender_.reset(new RtpSender(clock_, transport_task_runner_, &pacer_));
107 if (video_sender_->InitializeVideo(config)) {
108 pacer_.RegisterVideoSsrc(config.rtp.config.ssrc);
92 status_callback_.Run(TRANSPORT_VIDEO_INITIALIZED); 109 status_callback_.Run(TRANSPORT_VIDEO_INITIALIZED);
93 else 110 } else {
111 video_sender_.reset();
94 status_callback_.Run(TRANSPORT_VIDEO_UNINITIALIZED); 112 status_callback_.Run(TRANSPORT_VIDEO_UNINITIALIZED);
113 }
95 } 114 }
96 115
97 void CastTransportSenderImpl::SetPacketReceiver( 116 void CastTransportSenderImpl::SetPacketReceiver(
98 const PacketReceiverCallback& packet_receiver) { 117 const PacketReceiverCallback& packet_receiver) {
99 transport_->StartReceiving(packet_receiver); 118 transport_->StartReceiving(packet_receiver);
100 } 119 }
101 120
121 namespace {
122 void EncryptAndSendFrame(const EncodedFrame& frame,
123 TransportEncryptionHandler* encryptor,
124 RtpSender* sender) {
125 if (encryptor->initialized()) {
126 EncodedFrame encrypted_frame;
127 frame.CopyMetadataTo(&encrypted_frame);
128 if (encryptor->Encrypt(frame.frame_id, frame.data, &encrypted_frame.data)) {
129 sender->SendFrame(encrypted_frame);
130 } else {
131 LOG(ERROR) << "Encryption failed. Not sending frame with ID "
132 << frame.frame_id;
133 }
134 } else {
135 sender->SendFrame(frame);
136 }
137 }
138 } // namespace
139
102 void CastTransportSenderImpl::InsertCodedAudioFrame( 140 void CastTransportSenderImpl::InsertCodedAudioFrame(
103 const EncodedFrame& audio_frame) { 141 const EncodedFrame& audio_frame) {
104 DCHECK(audio_sender_) << "Audio sender uninitialized"; 142 DCHECK(audio_sender_) << "Audio sender uninitialized";
105 audio_sender_->SendFrame(audio_frame); 143 EncryptAndSendFrame(audio_frame, &audio_encryptor_, audio_sender_.get());
106 } 144 }
107 145
108 void CastTransportSenderImpl::InsertCodedVideoFrame( 146 void CastTransportSenderImpl::InsertCodedVideoFrame(
109 const EncodedFrame& video_frame) { 147 const EncodedFrame& video_frame) {
110 DCHECK(video_sender_) << "Video sender uninitialized"; 148 DCHECK(video_sender_) << "Video sender uninitialized";
111 video_sender_->SendFrame(video_frame); 149 EncryptAndSendFrame(video_frame, &video_encryptor_, video_sender_.get());
112 } 150 }
113 151
114 void CastTransportSenderImpl::SendRtcpFromRtpSender( 152 void CastTransportSenderImpl::SendRtcpFromRtpSender(
115 uint32 packet_type_flags, 153 uint32 packet_type_flags,
116 uint32 ntp_seconds, 154 uint32 ntp_seconds,
117 uint32 ntp_fraction, 155 uint32 ntp_fraction,
118 uint32 rtp_timestamp, 156 uint32 rtp_timestamp,
119 const RtcpDlrrReportBlock& dlrr, 157 const RtcpDlrrReportBlock& dlrr,
120 uint32 sending_ssrc, 158 uint32 sending_ssrc,
121 const std::string& c_name) { 159 const std::string& c_name) {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 DCHECK(event_subscriber_.get()); 191 DCHECK(event_subscriber_.get());
154 DCHECK(!raw_events_callback_.is_null()); 192 DCHECK(!raw_events_callback_.is_null());
155 std::vector<PacketEvent> packet_events; 193 std::vector<PacketEvent> packet_events;
156 event_subscriber_->GetPacketEventsAndReset(&packet_events); 194 event_subscriber_->GetPacketEventsAndReset(&packet_events);
157 raw_events_callback_.Run(packet_events); 195 raw_events_callback_.Run(packet_events);
158 } 196 }
159 197
160 } // namespace transport 198 } // namespace transport
161 } // namespace cast 199 } // namespace cast
162 } // namespace media 200 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/transport/cast_transport_sender_impl.h ('k') | media/cast/transport/transport_audio_sender.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698