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

Side by Side Diff: media/filters/decrypting_demuxer_stream.cc

Issue 66953005: Remove media::BindToLoop() in favour of media::BindToCurrentLoop(). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comma operator Created 6 years, 11 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
« no previous file with comments | « media/base/text_renderer.cc ('k') | media/filters/ffmpeg_demuxer.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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/filters/decrypting_demuxer_stream.h" 5 #include "media/filters/decrypting_demuxer_stream.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback_helpers.h" 8 #include "base/callback_helpers.h"
9 #include "base/location.h" 9 #include "base/location.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/single_thread_task_runner.h" 11 #include "base/single_thread_task_runner.h"
12 #include "media/base/audio_decoder_config.h" 12 #include "media/base/audio_decoder_config.h"
13 #include "media/base/video_decoder_config.h" 13 #include "media/base/video_decoder_config.h"
14 #include "media/base/bind_to_loop.h" 14 #include "media/base/bind_to_loop.h"
15 #include "media/base/decoder_buffer.h" 15 #include "media/base/decoder_buffer.h"
16 #include "media/base/decryptor.h" 16 #include "media/base/decryptor.h"
17 #include "media/base/demuxer_stream.h" 17 #include "media/base/demuxer_stream.h"
18 #include "media/base/pipeline.h" 18 #include "media/base/pipeline.h"
19 19
20 namespace media { 20 namespace media {
21 21
22 #define BIND_TO_LOOP(function) \
23 media::BindToLoop(task_runner_, base::Bind(function, weak_this_))
24
25 static bool IsStreamValidAndEncrypted(DemuxerStream* stream) { 22 static bool IsStreamValidAndEncrypted(DemuxerStream* stream) {
26 return ((stream->type() == DemuxerStream::AUDIO && 23 return ((stream->type() == DemuxerStream::AUDIO &&
27 stream->audio_decoder_config().IsValidConfig() && 24 stream->audio_decoder_config().IsValidConfig() &&
28 stream->audio_decoder_config().is_encrypted()) || 25 stream->audio_decoder_config().is_encrypted()) ||
29 (stream->type() == DemuxerStream::VIDEO && 26 (stream->type() == DemuxerStream::VIDEO &&
30 stream->video_decoder_config().IsValidConfig() && 27 stream->video_decoder_config().IsValidConfig() &&
31 stream->video_decoder_config().is_encrypted())); 28 stream->video_decoder_config().is_encrypted()));
32 } 29 }
33 30
34 DecryptingDemuxerStream::DecryptingDemuxerStream( 31 DecryptingDemuxerStream::DecryptingDemuxerStream(
(...skipping 15 matching lines...) Expand all
50 DCHECK_EQ(state_, kUninitialized) << state_; 47 DCHECK_EQ(state_, kUninitialized) << state_;
51 48
52 DCHECK(!demuxer_stream_); 49 DCHECK(!demuxer_stream_);
53 weak_this_ = weak_factory_.GetWeakPtr(); 50 weak_this_ = weak_factory_.GetWeakPtr();
54 demuxer_stream_ = stream; 51 demuxer_stream_ = stream;
55 init_cb_ = BindToCurrentLoop(status_cb); 52 init_cb_ = BindToCurrentLoop(status_cb);
56 53
57 InitializeDecoderConfig(); 54 InitializeDecoderConfig();
58 55
59 state_ = kDecryptorRequested; 56 state_ = kDecryptorRequested;
60 set_decryptor_ready_cb_.Run( 57 set_decryptor_ready_cb_.Run(BindToCurrentLoop(
61 BIND_TO_LOOP(&DecryptingDemuxerStream::SetDecryptor)); 58 base::Bind(&DecryptingDemuxerStream::SetDecryptor, weak_this_)));
62 } 59 }
63 60
64 void DecryptingDemuxerStream::Read(const ReadCB& read_cb) { 61 void DecryptingDemuxerStream::Read(const ReadCB& read_cb) {
65 DVLOG(3) << __FUNCTION__; 62 DVLOG(3) << __FUNCTION__;
66 DCHECK(task_runner_->BelongsToCurrentThread()); 63 DCHECK(task_runner_->BelongsToCurrentThread());
67 DCHECK_EQ(state_, kIdle) << state_; 64 DCHECK_EQ(state_, kIdle) << state_;
68 DCHECK(!read_cb.is_null()); 65 DCHECK(!read_cb.is_null());
69 CHECK(read_cb_.is_null()) << "Overlapping reads are not supported."; 66 CHECK(read_cb_.is_null()) << "Overlapping reads are not supported.";
70 67
71 read_cb_ = BindToCurrentLoop(read_cb); 68 read_cb_ = BindToCurrentLoop(read_cb);
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 if (!decryptor) { 145 if (!decryptor) {
149 state_ = kUninitialized; 146 state_ = kUninitialized;
150 base::ResetAndReturn(&init_cb_).Run(DECODER_ERROR_NOT_SUPPORTED); 147 base::ResetAndReturn(&init_cb_).Run(DECODER_ERROR_NOT_SUPPORTED);
151 return; 148 return;
152 } 149 }
153 150
154 decryptor_ = decryptor; 151 decryptor_ = decryptor;
155 152
156 decryptor_->RegisterNewKeyCB( 153 decryptor_->RegisterNewKeyCB(
157 GetDecryptorStreamType(), 154 GetDecryptorStreamType(),
158 BIND_TO_LOOP(&DecryptingDemuxerStream::OnKeyAdded)); 155 BindToCurrentLoop(
156 base::Bind(&DecryptingDemuxerStream::OnKeyAdded, weak_this_)));
159 157
160 state_ = kIdle; 158 state_ = kIdle;
161 base::ResetAndReturn(&init_cb_).Run(PIPELINE_OK); 159 base::ResetAndReturn(&init_cb_).Run(PIPELINE_OK);
162 } 160 }
163 161
164 void DecryptingDemuxerStream::DecryptBuffer( 162 void DecryptingDemuxerStream::DecryptBuffer(
165 DemuxerStream::Status status, 163 DemuxerStream::Status status,
166 const scoped_refptr<DecoderBuffer>& buffer) { 164 const scoped_refptr<DecoderBuffer>& buffer) {
167 DVLOG(3) << __FUNCTION__; 165 DVLOG(3) << __FUNCTION__;
168 DCHECK(task_runner_->BelongsToCurrentThread()); 166 DCHECK(task_runner_->BelongsToCurrentThread());
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 state_ = kPendingDecrypt; 222 state_ = kPendingDecrypt;
225 DecryptPendingBuffer(); 223 DecryptPendingBuffer();
226 } 224 }
227 225
228 void DecryptingDemuxerStream::DecryptPendingBuffer() { 226 void DecryptingDemuxerStream::DecryptPendingBuffer() {
229 DCHECK(task_runner_->BelongsToCurrentThread()); 227 DCHECK(task_runner_->BelongsToCurrentThread());
230 DCHECK_EQ(state_, kPendingDecrypt) << state_; 228 DCHECK_EQ(state_, kPendingDecrypt) << state_;
231 decryptor_->Decrypt( 229 decryptor_->Decrypt(
232 GetDecryptorStreamType(), 230 GetDecryptorStreamType(),
233 pending_buffer_to_decrypt_, 231 pending_buffer_to_decrypt_,
234 BIND_TO_LOOP(&DecryptingDemuxerStream::DeliverBuffer)); 232 BindToCurrentLoop(
233 base::Bind(&DecryptingDemuxerStream::DeliverBuffer, weak_this_)));
235 } 234 }
236 235
237 void DecryptingDemuxerStream::DeliverBuffer( 236 void DecryptingDemuxerStream::DeliverBuffer(
238 Decryptor::Status status, 237 Decryptor::Status status,
239 const scoped_refptr<DecoderBuffer>& decrypted_buffer) { 238 const scoped_refptr<DecoderBuffer>& decrypted_buffer) {
240 DVLOG(3) << __FUNCTION__ << " - status: " << status; 239 DVLOG(3) << __FUNCTION__ << " - status: " << status;
241 DCHECK(task_runner_->BelongsToCurrentThread()); 240 DCHECK(task_runner_->BelongsToCurrentThread());
242 DCHECK_EQ(state_, kPendingDecrypt) << state_; 241 DCHECK_EQ(state_, kPendingDecrypt) << state_;
243 DCHECK_NE(status, Decryptor::kNeedMoreData); 242 DCHECK_NE(status, Decryptor::kNeedMoreData);
244 DCHECK(!read_cb_.is_null()); 243 DCHECK(!read_cb_.is_null());
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 break; 354 break;
356 } 355 }
357 356
358 default: 357 default:
359 NOTREACHED(); 358 NOTREACHED();
360 return; 359 return;
361 } 360 }
362 } 361 }
363 362
364 } // namespace media 363 } // namespace media
OLDNEW
« no previous file with comments | « media/base/text_renderer.cc ('k') | media/filters/ffmpeg_demuxer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698