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

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

Issue 167333004: Encrypted Media: No need to cancel NewKeyCB during tear down. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comments addressed Created 6 years, 10 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
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_video_decoder.h" 5 #include "media/filters/decrypting_video_decoder.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/debug/trace_event.h" 9 #include "base/debug/trace_event.h"
10 #include "base/location.h" 10 #include "base/location.h"
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 129
130 // Invalidate all weak pointers so that pending callbacks won't be fired into 130 // Invalidate all weak pointers so that pending callbacks won't be fired into
131 // this object. 131 // this object.
132 weak_factory_.InvalidateWeakPtrs(); 132 weak_factory_.InvalidateWeakPtrs();
133 133
134 // At this point the render thread is likely paused (in WebMediaPlayerImpl's 134 // At this point the render thread is likely paused (in WebMediaPlayerImpl's
135 // Destroy()), so running |closure| can't wait for anything that requires the 135 // Destroy()), so running |closure| can't wait for anything that requires the
136 // render thread to be processing messages to complete (such as PPAPI 136 // render thread to be processing messages to complete (such as PPAPI
137 // callbacks). 137 // callbacks).
138 if (decryptor_) { 138 if (decryptor_) {
139 decryptor_->RegisterNewKeyCB(Decryptor::kVideo, Decryptor::NewKeyCB());
140 decryptor_->DeinitializeDecoder(Decryptor::kVideo); 139 decryptor_->DeinitializeDecoder(Decryptor::kVideo);
141 decryptor_ = NULL; 140 decryptor_ = NULL;
142 } 141 }
143 if (!set_decryptor_ready_cb_.is_null()) 142 if (!set_decryptor_ready_cb_.is_null())
144 base::ResetAndReturn(&set_decryptor_ready_cb_).Run(DecryptorReadyCB()); 143 base::ResetAndReturn(&set_decryptor_ready_cb_).Run(DecryptorReadyCB());
145 pending_buffer_to_decode_ = NULL; 144 pending_buffer_to_decode_ = NULL;
146 if (!init_cb_.is_null()) 145 if (!init_cb_.is_null())
147 base::ResetAndReturn(&init_cb_).Run(DECODER_ERROR_NOT_SUPPORTED); 146 base::ResetAndReturn(&init_cb_).Run(DECODER_ERROR_NOT_SUPPORTED);
148 if (!decode_cb_.is_null()) 147 if (!decode_cb_.is_null())
149 base::ResetAndReturn(&decode_cb_).Run(kAborted, NULL); 148 base::ResetAndReturn(&decode_cb_).Run(kAborted, NULL);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 DCHECK(!init_cb_.is_null()); 187 DCHECK(!init_cb_.is_null());
189 DCHECK(reset_cb_.is_null()); // No Reset() before initialization finished. 188 DCHECK(reset_cb_.is_null()); // No Reset() before initialization finished.
190 DCHECK(decode_cb_.is_null()); // No Decode() before initialization finished. 189 DCHECK(decode_cb_.is_null()); // No Decode() before initialization finished.
191 190
192 if (!success) { 191 if (!success) {
193 base::ResetAndReturn(&init_cb_).Run(DECODER_ERROR_NOT_SUPPORTED); 192 base::ResetAndReturn(&init_cb_).Run(DECODER_ERROR_NOT_SUPPORTED);
194 state_ = kStopped; 193 state_ = kStopped;
195 return; 194 return;
196 } 195 }
197 196
198 decryptor_->RegisterNewKeyCB(Decryptor::kVideo, BindToCurrentLoop( 197 decryptor_->RegisterNewKeyCB(
199 base::Bind(&DecryptingVideoDecoder::OnKeyAdded, weak_this_))); 198 Decryptor::kVideo,
199 BindToCurrentLoop(
200 base::Bind(&DecryptingVideoDecoder::OnKeyAdded, weak_this_)));
200 201
201 // Success! 202 // Success!
202 state_ = kIdle; 203 state_ = kIdle;
203 base::ResetAndReturn(&init_cb_).Run(PIPELINE_OK); 204 base::ResetAndReturn(&init_cb_).Run(PIPELINE_OK);
204 } 205 }
205 206
206 207
207 void DecryptingVideoDecoder::DecodePendingBuffer() { 208 void DecryptingVideoDecoder::DecodePendingBuffer() {
208 DCHECK(task_runner_->BelongsToCurrentThread()); 209 DCHECK(task_runner_->BelongsToCurrentThread());
209 DCHECK_EQ(state_, kPendingDecode) << state_; 210 DCHECK_EQ(state_, kPendingDecode) << state_;
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 } 309 }
309 310
310 void DecryptingVideoDecoder::DoReset() { 311 void DecryptingVideoDecoder::DoReset() {
311 DCHECK(init_cb_.is_null()); 312 DCHECK(init_cb_.is_null());
312 DCHECK(decode_cb_.is_null()); 313 DCHECK(decode_cb_.is_null());
313 state_ = kIdle; 314 state_ = kIdle;
314 base::ResetAndReturn(&reset_cb_).Run(); 315 base::ResetAndReturn(&reset_cb_).Run();
315 } 316 }
316 317
317 } // namespace media 318 } // namespace media
OLDNEW
« no previous file with comments | « media/filters/decrypting_demuxer_stream_unittest.cc ('k') | media/filters/decrypting_video_decoder_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698