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

Side by Side Diff: media/cast/audio_receiver/audio_receiver.cc

Issue 74133002: Cast: Removed unnecessary ref counters. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Merge TOT Created 7 years 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
« no previous file with comments | « media/cast/audio_receiver/audio_receiver.h ('k') | media/cast/video_sender/video_encoder.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/audio_receiver/audio_receiver.h" 5 #include "media/cast/audio_receiver/audio_receiver.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "crypto/encryptor.h" 10 #include "crypto/encryptor.h"
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 base::TimeDelta::FromMilliseconds(audio_config.rtp_max_delay_ms); 90 base::TimeDelta::FromMilliseconds(audio_config.rtp_max_delay_ms);
91 incoming_payload_callback_.reset(new LocalRtpAudioData(this)); 91 incoming_payload_callback_.reset(new LocalRtpAudioData(this));
92 incoming_payload_feedback_.reset(new LocalRtpAudioFeedback(this)); 92 incoming_payload_feedback_.reset(new LocalRtpAudioFeedback(this));
93 if (audio_config.use_external_decoder) { 93 if (audio_config.use_external_decoder) {
94 audio_buffer_.reset(new Framer(cast_environment->Clock(), 94 audio_buffer_.reset(new Framer(cast_environment->Clock(),
95 incoming_payload_feedback_.get(), 95 incoming_payload_feedback_.get(),
96 audio_config.incoming_ssrc, 96 audio_config.incoming_ssrc,
97 true, 97 true,
98 0)); 98 0));
99 } else { 99 } else {
100 audio_decoder_ = new AudioDecoder(audio_config); 100 audio_decoder_.reset(new AudioDecoder(audio_config));
101 } 101 }
102 if (audio_config.aes_iv_mask.size() == kAesKeySize && 102 if (audio_config.aes_iv_mask.size() == kAesKeySize &&
103 audio_config.aes_key.size() == kAesKeySize) { 103 audio_config.aes_key.size() == kAesKeySize) {
104 iv_mask_ = audio_config.aes_iv_mask; 104 iv_mask_ = audio_config.aes_iv_mask;
105 crypto::SymmetricKey* key = crypto::SymmetricKey::Import( 105 crypto::SymmetricKey* key = crypto::SymmetricKey::Import(
106 crypto::SymmetricKey::AES, audio_config.aes_key); 106 crypto::SymmetricKey::AES, audio_config.aes_key);
107 decryptor_.reset(new crypto::Encryptor()); 107 decryptor_.reset(new crypto::Encryptor());
108 decryptor_->Init(key, crypto::Encryptor::CTR, std::string()); 108 decryptor_->Init(key, crypto::Encryptor::CTR, std::string());
109 } else if (audio_config.aes_iv_mask.size() != 0 || 109 } else if (audio_config.aes_iv_mask.size() != 0 ||
110 audio_config.aes_key.size() != 0) { 110 audio_config.aes_key.size() != 0) {
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 cast_environment_->PostTask(CastEnvironment::MAIN, FROM_HERE, 188 cast_environment_->PostTask(CastEnvironment::MAIN, FROM_HERE,
189 base::Bind(&AudioReceiver::GetEncodedAudioFrame, 189 base::Bind(&AudioReceiver::GetEncodedAudioFrame,
190 weak_factory_.GetWeakPtr(), callback)); 190 weak_factory_.GetWeakPtr(), callback));
191 } 191 }
192 192
193 void AudioReceiver::GetRawAudioFrame(int number_of_10ms_blocks, 193 void AudioReceiver::GetRawAudioFrame(int number_of_10ms_blocks,
194 int desired_frequency, const AudioFrameDecodedCallback& callback) { 194 int desired_frequency, const AudioFrameDecodedCallback& callback) {
195 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); 195 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
196 DCHECK(audio_decoder_) << "Invalid function call in this configuration"; 196 DCHECK(audio_decoder_) << "Invalid function call in this configuration";
197 197
198 // TODO(pwestin): we can skip this function by posting direct to the decoder.
198 cast_environment_->PostTask(CastEnvironment::AUDIO_DECODER, FROM_HERE, 199 cast_environment_->PostTask(CastEnvironment::AUDIO_DECODER, FROM_HERE,
199 base::Bind(&AudioReceiver::DecodeAudioFrameThread, 200 base::Bind(&AudioReceiver::DecodeAudioFrameThread,
200 base::Unretained(this), 201 base::Unretained(this),
201 number_of_10ms_blocks, 202 number_of_10ms_blocks,
202 desired_frequency, 203 desired_frequency,
203 callback)); 204 callback));
204 } 205 }
205 206
206 void AudioReceiver::DecodeAudioFrameThread( 207 void AudioReceiver::DecodeAudioFrameThread(
207 int number_of_10ms_blocks, 208 int number_of_10ms_blocks,
208 int desired_frequency, 209 int desired_frequency,
209 const AudioFrameDecodedCallback callback) { 210 const AudioFrameDecodedCallback callback) {
210 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::AUDIO_DECODER)); 211 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::AUDIO_DECODER));
211 // TODO(mikhal): Allow the application to allocate this memory. 212 // TODO(mikhal): Allow the application to allocate this memory.
212 scoped_ptr<PcmAudioFrame> audio_frame(new PcmAudioFrame()); 213 scoped_ptr<PcmAudioFrame> audio_frame(new PcmAudioFrame());
213 214
214 uint32 rtp_timestamp = 0; 215 uint32 rtp_timestamp = 0;
215 if (!audio_decoder_->GetRawAudioFrame(number_of_10ms_blocks, 216 if (!audio_decoder_->GetRawAudioFrame(number_of_10ms_blocks,
216 desired_frequency, 217 desired_frequency,
217 audio_frame.get(), 218 audio_frame.get(),
218 &rtp_timestamp)) { 219 &rtp_timestamp)) {
220 // TODO(pwestin): This looks wrong, we would loose the pending call to
221 // the application provided callback.
219 return; 222 return;
220 } 223 }
221 base::TimeTicks now = cast_environment_->Clock()->NowTicks(); 224 base::TimeTicks now = cast_environment_->Clock()->NowTicks();
222 base::TimeTicks playout_time; 225 base::TimeTicks playout_time;
223 playout_time = GetPlayoutTime(now, rtp_timestamp); 226 playout_time = GetPlayoutTime(now, rtp_timestamp);
224 base::TimeDelta diff = playout_time - now; 227 base::TimeDelta diff = playout_time - now;
225 228
226 cast_environment_->Logging()->InsertFrameEvent(kAudioPlayoutDelay, 229 cast_environment_->Logging()->InsertFrameEvent(kAudioPlayoutDelay,
227 rtp_timestamp, diff.InMilliseconds()); 230 rtp_timestamp, diff.InMilliseconds());
228 231
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 437
435 void AudioReceiver::SendNextCastMessage() { 438 void AudioReceiver::SendNextCastMessage() {
436 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); 439 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
437 DCHECK(audio_buffer_) << "Invalid function call in this configuration"; 440 DCHECK(audio_buffer_) << "Invalid function call in this configuration";
438 audio_buffer_->SendCastMessage(); // Will only send a message if it is time. 441 audio_buffer_->SendCastMessage(); // Will only send a message if it is time.
439 ScheduleNextCastMessage(); 442 ScheduleNextCastMessage();
440 } 443 }
441 444
442 } // namespace cast 445 } // namespace cast
443 } // namespace media 446 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/audio_receiver/audio_receiver.h ('k') | media/cast/video_sender/video_encoder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698