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

Unified Diff: media/cast/audio_sender/audio_sender.cc

Issue 314593002: [Cast] Cleanup: Remove TransportXXXXXSender, an unnecessary layer of indirection. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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
Index: media/cast/audio_sender/audio_sender.cc
diff --git a/media/cast/audio_sender/audio_sender.cc b/media/cast/audio_sender/audio_sender.cc
index 33623e9daf0570015c2c149ed049e52487c10545..72bb32b9fcb161896e08f432181668992443e08f 100644
--- a/media/cast/audio_sender/audio_sender.cc
+++ b/media/cast/audio_sender/audio_sender.cc
@@ -35,16 +35,27 @@ AudioSender::AudioSender(scoped_refptr<CastEnvironment> cast_environment,
audio_config.rtcp_c_name,
true),
num_aggressive_rtcp_reports_sent_(0),
- cast_initialization_cb_(STATUS_AUDIO_UNINITIALIZED),
+ cast_initialization_status_(STATUS_AUDIO_UNINITIALIZED),
weak_factory_(this) {
rtcp_.SetCastReceiverEventHistorySize(kReceiverRtcpEventHistorySize);
+ if (!encryptor_.Initialize(audio_config.rtp_config.aes_key,
+ audio_config.rtp_config.aes_iv_mask)) {
+ // Leave cast_initialization_status_ set to UNINITIALIZED to indicate
+ // failure.
+ return;
+ }
+ DVLOG(1) << (audio_config.rtp_config.aes_key.empty() ? "Not using" : "Using")
+ << " audio frame data encryption.";
if (!audio_config.use_external_encoder) {
audio_encoder_.reset(
new AudioEncoder(cast_environment,
audio_config,
base::Bind(&AudioSender::SendEncodedAudioFrame,
weak_factory_.GetWeakPtr())));
- cast_initialization_cb_ = audio_encoder_->InitializationResult();
+ cast_initialization_status_ = audio_encoder_->InitializationResult();
+ } else {
+ NOTREACHED(); // No support for external audio encoding.
+ cast_initialization_status_ = STATUS_AUDIO_INITIALIZED;
}
media::cast::transport::CastTransportAudioConfig transport_config;
@@ -64,6 +75,10 @@ AudioSender::~AudioSender() {}
void AudioSender::InsertAudio(scoped_ptr<AudioBus> audio_bus,
const base::TimeTicks& recorded_time) {
DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
+ if (cast_initialization_status_ != STATUS_AUDIO_INITIALIZED) {
+ NOTREACHED();
+ return;
+ }
DCHECK(audio_encoder_.get()) << "Invalid internal state";
audio_encoder_->InsertAudio(audio_bus.Pass(), recorded_time);
}
@@ -71,6 +86,20 @@ void AudioSender::InsertAudio(scoped_ptr<AudioBus> audio_bus,
void AudioSender::SendEncodedAudioFrame(
scoped_ptr<transport::EncodedFrame> audio_frame) {
DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
+
+ // If using encryption, encrypt the frame data now.
+ if (encryptor_.initialized()) {
+ std::string encrypted_data;
+ if (!encryptor_.Encrypt(audio_frame->frame_id,
+ audio_frame->data,
+ &encrypted_data)) {
+ LOG(ERROR) << "Encryption failed. Not sending frame with ID "
+ << audio_frame->frame_id;
+ return;
+ }
+ audio_frame->data.swap(encrypted_data);
+ }
+
DCHECK(!audio_frame->reference_time.is_null());
rtp_timestamp_helper_.StoreLatestTime(audio_frame->reference_time,
audio_frame->rtp_timestamp);

Powered by Google App Engine
This is Rietveld 408576698