diff options
author | mikhal@google.com <mikhal@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-26 09:53:38 +0000 |
---|---|---|
committer | mikhal@google.com <mikhal@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-26 09:53:38 +0000 |
commit | 97f1994d4db7540975eb6900189dcbc0f5357687 (patch) | |
tree | e304fa4d606aed7506f1eace667d077d7b12bc83 /media | |
parent | 0a09791606cb88ac245f5548b99582cebc2cd4f9 (diff) | |
download | chromium_src-97f1994d4db7540975eb6900189dcbc0f5357687.zip chromium_src-97f1994d4db7540975eb6900189dcbc0f5357687.tar.gz chromium_src-97f1994d4db7540975eb6900189dcbc0f5357687.tar.bz2 |
Adding thread checks : make sure that we are operating on the correct thread.
Review URL: https://codereview.chromium.org/24455003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@225427 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media')
-rw-r--r-- | media/cast/audio_receiver/audio_decoder.cc | 1 | ||||
-rw-r--r-- | media/cast/audio_receiver/audio_decoder_unittest.cc | 2 | ||||
-rw-r--r-- | media/cast/audio_receiver/audio_receiver.cc | 1 | ||||
-rw-r--r-- | media/cast/audio_receiver/audio_receiver_unittest.cc | 2 | ||||
-rw-r--r-- | media/cast/audio_sender/audio_encoder.cc | 2 | ||||
-rw-r--r-- | media/cast/audio_sender/audio_sender.cc | 3 | ||||
-rw-r--r-- | media/cast/cast_thread.cc | 17 | ||||
-rw-r--r-- | media/cast/cast_thread.h | 2 | ||||
-rw-r--r-- | media/cast/video_receiver/video_decoder.cc | 2 | ||||
-rw-r--r-- | media/cast/video_receiver/video_decoder_unittest.cc | 4 | ||||
-rw-r--r-- | media/cast/video_receiver/video_receiver.cc | 1 | ||||
-rw-r--r-- | media/cast/video_receiver/video_receiver.h | 1 | ||||
-rw-r--r-- | media/cast/video_receiver/video_receiver_unittest.cc | 2 |
13 files changed, 31 insertions, 9 deletions
diff --git a/media/cast/audio_receiver/audio_decoder.cc b/media/cast/audio_receiver/audio_decoder.cc index 266c04e..7adeb2d 100644 --- a/media/cast/audio_receiver/audio_decoder.cc +++ b/media/cast/audio_receiver/audio_decoder.cc @@ -56,6 +56,7 @@ bool AudioDecoder::GetRawAudioFrame(int number_of_10ms_blocks, int desired_frequency, PcmAudioFrame* audio_frame, uint32* rtp_timestamp) { + DCHECK(cast_thread_->CurrentlyOn(CastThread::AUDIO_DECODER)); if (!have_received_packets_) return false; for (int i = 0; i < number_of_10ms_blocks; ++i) { diff --git a/media/cast/audio_receiver/audio_decoder_unittest.cc b/media/cast/audio_receiver/audio_decoder_unittest.cc index dbe3e32..09aa39a 100644 --- a/media/cast/audio_receiver/audio_decoder_unittest.cc +++ b/media/cast/audio_receiver/audio_decoder_unittest.cc @@ -24,7 +24,7 @@ class AudioDecoderTest : public ::testing::Test { virtual void SetUp() { task_runner_ = new test::FakeTaskRunner(&testing_clock_); cast_thread_ = new CastThread(task_runner_, task_runner_, task_runner_, - task_runner_, task_runner_); + NULL, NULL); } void Configure(const AudioReceiverConfig& audio_config) { audio_decoder_ = new AudioDecoder(cast_thread_, audio_config); diff --git a/media/cast/audio_receiver/audio_receiver.cc b/media/cast/audio_receiver/audio_receiver.cc index cf8a8b8..ace8ffc 100644 --- a/media/cast/audio_receiver/audio_receiver.cc +++ b/media/cast/audio_receiver/audio_receiver.cc @@ -176,6 +176,7 @@ void AudioReceiver::DecodeAudioFrameThread( int number_of_10ms_blocks, int desired_frequency, const AudioFrameDecodedCallback callback) { + DCHECK(cast_thread_->CurrentlyOn(CastThread::AUDIO_DECODER)); // TODO(mikhal): Allow the application to allocate this memory. scoped_ptr<PcmAudioFrame> audio_frame(new PcmAudioFrame()); diff --git a/media/cast/audio_receiver/audio_receiver_unittest.cc b/media/cast/audio_receiver/audio_receiver_unittest.cc index 0cb564b..aa1295a 100644 --- a/media/cast/audio_receiver/audio_receiver_unittest.cc +++ b/media/cast/audio_receiver/audio_receiver_unittest.cc @@ -42,7 +42,7 @@ class AudioReceiverTest : public ::testing::Test { base::TimeDelta::FromMilliseconds(kStartMillisecond)); task_runner_ = new test::FakeTaskRunner(&testing_clock_); cast_thread_ = new CastThread(task_runner_, task_runner_, task_runner_, - task_runner_, task_runner_); + NULL, NULL); } void Configure(bool use_external_decoder) { diff --git a/media/cast/audio_sender/audio_encoder.cc b/media/cast/audio_sender/audio_encoder.cc index 175f82b..15517fa 100644 --- a/media/cast/audio_sender/audio_encoder.cc +++ b/media/cast/audio_sender/audio_encoder.cc @@ -75,7 +75,6 @@ AudioEncoder::AudioEncoder(scoped_refptr<CastThread> cast_thread, new WebrtEncodedDataCallback(cast_thread, audio_config.codec, audio_config.frequency)), timestamp_(0) { // Must start at 0; used above. - if (audio_encoder_->InitializeSender() != 0) { DCHECK(false) << "Invalid webrtc return value"; } @@ -131,6 +130,7 @@ void AudioEncoder::EncodeAudioFrameThread( const base::TimeTicks& recorded_time, const FrameEncodedCallback& frame_encoded_callback, const base::Closure release_callback) { + DCHECK(cast_thread_->CurrentlyOn(CastThread::AUDIO_ENCODER)); int samples_per_10ms = audio_frame->frequency / 100; int number_of_10ms_blocks = audio_frame->samples.size() / (samples_per_10ms * audio_frame->channels); diff --git a/media/cast/audio_sender/audio_sender.cc b/media/cast/audio_sender/audio_sender.cc index 39fccda..c48edb7 100644 --- a/media/cast/audio_sender/audio_sender.cc +++ b/media/cast/audio_sender/audio_sender.cc @@ -98,7 +98,6 @@ AudioSender::AudioSender(scoped_refptr<CastThread> cast_thread, audio_config.rtcp_c_name), clock_(&default_tick_clock_), weak_factory_(this) { - rtcp_.SetRemoteSSRC(audio_config.incoming_feedback_ssrc); if (!audio_config.use_external_encoder) { @@ -137,7 +136,7 @@ void AudioSender::SendEncodedAudioFrame( } void AudioSender::ResendPackets( - const MissingFramesAndPacketsMap& missing_frames_and_packets) { + const MissingFramesAndPacketsMap& missing_frames_and_packets) { rtp_sender_.ResendPackets(missing_frames_and_packets); } diff --git a/media/cast/cast_thread.cc b/media/cast/cast_thread.cc index 4d294c4..e474468 100644 --- a/media/cast/cast_thread.cc +++ b/media/cast/cast_thread.cc @@ -60,5 +60,22 @@ scoped_refptr<TaskRunner> CastThread::GetMessageTaskRunnerForThread( } } +bool CastThread::CurrentlyOn(ThreadId identifier) { + switch (identifier) { + case CastThread::MAIN: + return main_thread_proxy_->RunsTasksOnCurrentThread(); + case CastThread::AUDIO_ENCODER: + return audio_encode_thread_proxy_->RunsTasksOnCurrentThread(); + case CastThread::AUDIO_DECODER: + return audio_decode_thread_proxy_->RunsTasksOnCurrentThread(); + case CastThread::VIDEO_ENCODER: + return video_encode_thread_proxy_->RunsTasksOnCurrentThread(); + case CastThread::VIDEO_DECODER: + return video_decode_thread_proxy_->RunsTasksOnCurrentThread(); + default: + DCHECK(false) << "Wrong thread identifier"; + } +} + } // namespace cast } // namespace media diff --git a/media/cast/cast_thread.h b/media/cast/cast_thread.h index b004157..323f03d 100644 --- a/media/cast/cast_thread.h +++ b/media/cast/cast_thread.h @@ -52,6 +52,8 @@ class CastThread : public base::RefCountedThreadSafe<CastThread> { const base::Closure& task, base::TimeDelta delay); + bool CurrentlyOn(ThreadId identifier); + private: scoped_refptr<base::TaskRunner> GetMessageTaskRunnerForThread( ThreadId identifier); diff --git a/media/cast/video_receiver/video_decoder.cc b/media/cast/video_receiver/video_decoder.cc index 238d6db..9e65b4d 100644 --- a/media/cast/video_receiver/video_decoder.cc +++ b/media/cast/video_receiver/video_decoder.cc @@ -47,7 +47,9 @@ void VideoDecoder::DecodeFrame( const EncodedVideoFrame* encoded_frame, const base::TimeTicks render_time, const VideoFrameDecodedCallback& frame_decoded_callback) { + DCHECK(cast_thread_->CurrentlyOn(CastThread::VIDEO_DECODER)); DCHECK(encoded_frame->codec == codec_) << "Invalid codec"; + // TODO(mikhal): Allow the application to allocate this memory. scoped_ptr<I420VideoFrame> video_frame(new I420VideoFrame()); diff --git a/media/cast/video_receiver/video_decoder_unittest.cc b/media/cast/video_receiver/video_decoder_unittest.cc index 0b95d12..c511681 100644 --- a/media/cast/video_receiver/video_decoder_unittest.cc +++ b/media/cast/video_receiver/video_decoder_unittest.cc @@ -52,8 +52,8 @@ class VideoDecoderTest : public ::testing::Test { ~VideoDecoderTest() {} virtual void SetUp() { task_runner_ = new test::FakeTaskRunner(&testing_clock_); - cast_thread_ = new CastThread(task_runner_, task_runner_, task_runner_, - task_runner_, task_runner_); + cast_thread_ = new CastThread(task_runner_, NULL, NULL, + NULL, task_runner_); decoder_ = new VideoDecoder(cast_thread_, config_); } diff --git a/media/cast/video_receiver/video_receiver.cc b/media/cast/video_receiver/video_receiver.cc index 4d0421c..c9c7590 100644 --- a/media/cast/video_receiver/video_receiver.cc +++ b/media/cast/video_receiver/video_receiver.cc @@ -176,6 +176,7 @@ void VideoReceiver::DecodeVideoFrameThread( const base::TimeTicks render_time, const VideoFrameDecodedCallback& frame_decoded_callback, base::Closure frame_release_callback) { + DCHECK(cast_thread_->CurrentlyOn(CastThread::VIDEO_DECODER)); video_decoder_->DecodeVideoFrame(encoded_frame, render_time, frame_decoded_callback, frame_release_callback); // Release memory. diff --git a/media/cast/video_receiver/video_receiver.h b/media/cast/video_receiver/video_receiver.h index 40d0b03..fc358b6 100644 --- a/media/cast/video_receiver/video_receiver.h +++ b/media/cast/video_receiver/video_receiver.h @@ -38,7 +38,6 @@ class VideoDecoder; class VideoReceiver : public base::NonThreadSafe, public base::SupportsWeakPtr<VideoReceiver> { public: - VideoReceiver(scoped_refptr<CastThread> cast_thread, const VideoReceiverConfig& video_config, PacedPacketSender* const packet_sender); diff --git a/media/cast/video_receiver/video_receiver_unittest.cc b/media/cast/video_receiver/video_receiver_unittest.cc index b1b1c0b..00fc9bd 100644 --- a/media/cast/video_receiver/video_receiver_unittest.cc +++ b/media/cast/video_receiver/video_receiver_unittest.cc @@ -55,7 +55,7 @@ class VideoReceiverTest : public ::testing::Test { config_.codec = kVp8; config_.use_external_decoder = false; task_runner_ = new test::FakeTaskRunner(&testing_clock_); - cast_thread_ = new CastThread(task_runner_, task_runner_, task_runner_, + cast_thread_ = new CastThread(task_runner_, NULL, NULL, task_runner_, task_runner_); receiver_.reset(new PeerVideoReceiver(cast_thread_, config_, &mock_transport_)); |