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

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

Issue 11144036: Update Decryptor interface to support audio decoding. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remove leftover unretained Created 8 years, 2 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/location.h" 9 #include "base/location.h"
10 #include "base/message_loop_proxy.h" 10 #include "base/message_loop_proxy.h"
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 DCHECK(state_ == kIdle || 60 DCHECK(state_ == kIdle ||
61 state_ == kPendingDemuxerRead || 61 state_ == kPendingDemuxerRead ||
62 state_ == kPendingDecode || 62 state_ == kPendingDecode ||
63 state_ == kWaitingForKey || 63 state_ == kWaitingForKey ||
64 state_ == kDecodeFinished) << state_; 64 state_ == kDecodeFinished) << state_;
65 DCHECK(init_cb_.is_null()); // No Reset() during pending initialization. 65 DCHECK(init_cb_.is_null()); // No Reset() during pending initialization.
66 DCHECK(reset_cb_.is_null()); 66 DCHECK(reset_cb_.is_null());
67 67
68 reset_cb_ = closure; 68 reset_cb_ = closure;
69 69
70 decryptor_->CancelDecryptAndDecodeVideo(); 70 decryptor_->ResetDecoder(Decryptor::kVideo);
71 71
72 // Reset() cannot complete if the read callback is still pending. 72 // Reset() cannot complete if the read callback is still pending.
73 // Defer the resetting process in this case. The |reset_cb_| will be fired 73 // Defer the resetting process in this case. The |reset_cb_| will be fired
74 // after the read callback is fired - see DoDecryptAndDecodeBuffer() and 74 // after the read callback is fired - see DoDecryptAndDecodeBuffer() and
75 // DoDeliverFrame(). 75 // DoDeliverFrame().
76 if (state_ == kPendingDemuxerRead || state_ == kPendingDecode) { 76 if (state_ == kPendingDemuxerRead || state_ == kPendingDecode) {
77 DCHECK(!read_cb_.is_null()); 77 DCHECK(!read_cb_.is_null());
78 return; 78 return;
79 } 79 }
80 80
(...skipping 14 matching lines...) Expand all
95 return; 95 return;
96 } 96 }
97 97
98 DVLOG(2) << "Stop() - state: " << state_; 98 DVLOG(2) << "Stop() - state: " << state_;
99 99
100 // At this point the render thread is likely paused (in WebMediaPlayerImpl's 100 // At this point the render thread is likely paused (in WebMediaPlayerImpl's
101 // Destroy()), so running |closure| can't wait for anything that requires the 101 // Destroy()), so running |closure| can't wait for anything that requires the
102 // render thread to be processing messages to complete (such as PPAPI 102 // render thread to be processing messages to complete (such as PPAPI
103 // callbacks). 103 // callbacks).
104 if (decryptor_) 104 if (decryptor_)
105 decryptor_->StopVideoDecoder(); 105 decryptor_->DeinitializeDecoder(Decryptor::kVideo);
106 if (!request_decryptor_notification_cb_.is_null()) { 106 if (!request_decryptor_notification_cb_.is_null()) {
107 base::ResetAndReturn(&request_decryptor_notification_cb_).Run( 107 base::ResetAndReturn(&request_decryptor_notification_cb_).Run(
108 DecryptorNotificationCB()); 108 DecryptorNotificationCB());
109 } 109 }
110 pending_buffer_to_decode_ = NULL; 110 pending_buffer_to_decode_ = NULL;
111 if (!init_cb_.is_null()) 111 if (!init_cb_.is_null())
112 base::ResetAndReturn(&init_cb_).Run(DECODER_ERROR_NOT_SUPPORTED); 112 base::ResetAndReturn(&init_cb_).Run(DECODER_ERROR_NOT_SUPPORTED);
113 if (!read_cb_.is_null()) 113 if (!read_cb_.is_null())
114 base::ResetAndReturn(&read_cb_).Run(kOk, NULL); 114 base::ResetAndReturn(&read_cb_).Run(kOk, NULL);
115 if (!reset_cb_.is_null()) 115 if (!reset_cb_.is_null())
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 } 384 }
385 385
386 void DecryptingVideoDecoder::DoReset() { 386 void DecryptingVideoDecoder::DoReset() {
387 DCHECK(init_cb_.is_null()); 387 DCHECK(init_cb_.is_null());
388 DCHECK(read_cb_.is_null()); 388 DCHECK(read_cb_.is_null());
389 state_ = kIdle; 389 state_ = kIdle;
390 base::ResetAndReturn(&reset_cb_).Run(); 390 base::ResetAndReturn(&reset_cb_).Run();
391 } 391 }
392 392
393 } // namespace media 393 } // namespace media
OLDNEW
« no previous file with comments | « media/crypto/aes_decryptor_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