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

Unified 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 side-by-side diff with in-line comments
Download patch
« 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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/cast/transport/cast_transport_sender_impl.cc
diff --git a/media/cast/transport/cast_transport_sender_impl.cc b/media/cast/transport/cast_transport_sender_impl.cc
index 8f07832d1c73851e4e9655397754a9fe82dbccab..06877b08ba5155c2f0d4794add8f4869959b1c32 100644
--- a/media/cast/transport/cast_transport_sender_impl.cc
+++ b/media/cast/transport/cast_transport_sender_impl.cc
@@ -56,6 +56,7 @@ CastTransportSenderImpl::CastTransportSenderImpl(
transport_task_runner),
rtcp_builder_(&pacer_),
raw_events_callback_(raw_events_callback) {
+ DCHECK(clock_);
if (!raw_events_callback_.is_null()) {
DCHECK(raw_events_callback_interval > base::TimeDelta());
event_subscriber_.reset(new SimpleEventSubscriber);
@@ -74,24 +75,42 @@ CastTransportSenderImpl::~CastTransportSenderImpl() {
void CastTransportSenderImpl::InitializeAudio(
const CastTransportAudioConfig& config) {
- pacer_.RegisterAudioSsrc(config.rtp.config.ssrc);
- audio_sender_.reset(new TransportAudioSender(
- config, clock_, transport_task_runner_, &pacer_));
- if (audio_sender_->initialized())
+ LOG_IF(WARNING, config.rtp.config.aes_key.empty() ||
+ config.rtp.config.aes_iv_mask.empty())
+ << "Unsafe to send audio with encryption DISABLED.";
+ if (!audio_encryptor_.Initialize(config.rtp.config.aes_key,
+ config.rtp.config.aes_iv_mask)) {
+ status_callback_.Run(TRANSPORT_AUDIO_UNINITIALIZED);
+ return;
+ }
+ audio_sender_.reset(new RtpSender(clock_, transport_task_runner_, &pacer_));
+ if (audio_sender_->InitializeAudio(config)) {
+ pacer_.RegisterAudioSsrc(config.rtp.config.ssrc);
status_callback_.Run(TRANSPORT_AUDIO_INITIALIZED);
- else
+ } else {
+ audio_sender_.reset();
status_callback_.Run(TRANSPORT_AUDIO_UNINITIALIZED);
+ }
}
void CastTransportSenderImpl::InitializeVideo(
const CastTransportVideoConfig& config) {
- pacer_.RegisterVideoSsrc(config.rtp.config.ssrc);
- video_sender_.reset(new TransportVideoSender(
- config, clock_, transport_task_runner_, &pacer_));
- if (video_sender_->initialized())
+ LOG_IF(WARNING, config.rtp.config.aes_key.empty() ||
+ config.rtp.config.aes_iv_mask.empty())
+ << "Unsafe to send video with encryption DISABLED.";
+ if (!video_encryptor_.Initialize(config.rtp.config.aes_key,
+ config.rtp.config.aes_iv_mask)) {
+ status_callback_.Run(TRANSPORT_VIDEO_UNINITIALIZED);
+ return;
+ }
+ video_sender_.reset(new RtpSender(clock_, transport_task_runner_, &pacer_));
+ if (video_sender_->InitializeVideo(config)) {
+ pacer_.RegisterVideoSsrc(config.rtp.config.ssrc);
status_callback_.Run(TRANSPORT_VIDEO_INITIALIZED);
- else
+ } else {
+ video_sender_.reset();
status_callback_.Run(TRANSPORT_VIDEO_UNINITIALIZED);
+ }
}
void CastTransportSenderImpl::SetPacketReceiver(
@@ -99,16 +118,35 @@ void CastTransportSenderImpl::SetPacketReceiver(
transport_->StartReceiving(packet_receiver);
}
+namespace {
+void EncryptAndSendFrame(const EncodedFrame& frame,
+ TransportEncryptionHandler* encryptor,
+ RtpSender* sender) {
+ if (encryptor->initialized()) {
+ EncodedFrame encrypted_frame;
+ frame.CopyMetadataTo(&encrypted_frame);
+ if (encryptor->Encrypt(frame.frame_id, frame.data, &encrypted_frame.data)) {
+ sender->SendFrame(encrypted_frame);
+ } else {
+ LOG(ERROR) << "Encryption failed. Not sending frame with ID "
+ << frame.frame_id;
+ }
+ } else {
+ sender->SendFrame(frame);
+ }
+}
+} // namespace
+
void CastTransportSenderImpl::InsertCodedAudioFrame(
const EncodedFrame& audio_frame) {
DCHECK(audio_sender_) << "Audio sender uninitialized";
- audio_sender_->SendFrame(audio_frame);
+ EncryptAndSendFrame(audio_frame, &audio_encryptor_, audio_sender_.get());
}
void CastTransportSenderImpl::InsertCodedVideoFrame(
const EncodedFrame& video_frame) {
DCHECK(video_sender_) << "Video sender uninitialized";
- video_sender_->SendFrame(video_frame);
+ EncryptAndSendFrame(video_frame, &video_encryptor_, video_sender_.get());
}
void CastTransportSenderImpl::SendRtcpFromRtpSender(
« 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