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

Side by Side Diff: media/filters/ffmpeg_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/ffmpeg_video_decoder.h" 5 #include "media/filters/ffmpeg_video_decoder.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 if (!message_loop_->BelongsToCurrentThread()) { 176 if (!message_loop_->BelongsToCurrentThread()) {
177 message_loop_->PostTask(FROM_HERE, base::Bind( 177 message_loop_->PostTask(FROM_HERE, base::Bind(
178 &FFmpegVideoDecoder::Reset, this, closure)); 178 &FFmpegVideoDecoder::Reset, this, closure));
179 return; 179 return;
180 } 180 }
181 181
182 DCHECK(reset_cb_.is_null()); 182 DCHECK(reset_cb_.is_null());
183 reset_cb_ = closure; 183 reset_cb_ = closure;
184 184
185 if (decryptor_) 185 if (decryptor_)
186 decryptor_->CancelDecrypt(); 186 decryptor_->CancelDecrypt(Decryptor::kVideo);
187 187
188 // Defer the reset if a read is pending. 188 // Defer the reset if a read is pending.
189 if (!read_cb_.is_null()) 189 if (!read_cb_.is_null())
190 return; 190 return;
191 191
192 DoReset(); 192 DoReset();
193 } 193 }
194 194
195 void FFmpegVideoDecoder::DoReset() { 195 void FFmpegVideoDecoder::DoReset() {
196 DCHECK(read_cb_.is_null()); 196 DCHECK(read_cb_.is_null());
(...skipping 10 matching lines...) Expand all
207 &FFmpegVideoDecoder::Stop, this, closure)); 207 &FFmpegVideoDecoder::Stop, this, closure));
208 return; 208 return;
209 } 209 }
210 210
211 if (state_ == kUninitialized) { 211 if (state_ == kUninitialized) {
212 closure.Run(); 212 closure.Run();
213 return; 213 return;
214 } 214 }
215 215
216 if (decryptor_) 216 if (decryptor_)
217 decryptor_->CancelDecrypt(); 217 decryptor_->CancelDecrypt(Decryptor::kVideo);
218 218
219 if (!read_cb_.is_null()) 219 if (!read_cb_.is_null())
220 base::ResetAndReturn(&read_cb_).Run(kOk, NULL); 220 base::ResetAndReturn(&read_cb_).Run(kOk, NULL);
221 221
222 ReleaseFFmpegResources(); 222 ReleaseFFmpegResources();
223 state_ = kUninitialized; 223 state_ = kUninitialized;
224 closure.Run(); 224 closure.Run();
225 } 225 }
226 226
227 FFmpegVideoDecoder::~FFmpegVideoDecoder() { 227 FFmpegVideoDecoder::~FFmpegVideoDecoder() {
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 return; 293 return;
294 } 294 }
295 295
296 ReadFromDemuxerStream(); 296 ReadFromDemuxerStream();
297 return; 297 return;
298 } 298 }
299 299
300 DCHECK_EQ(status, DemuxerStream::kOk); 300 DCHECK_EQ(status, DemuxerStream::kOk);
301 301
302 if (buffer->GetDecryptConfig() && buffer->GetDataSize()) { 302 if (buffer->GetDecryptConfig() && buffer->GetDataSize()) {
303 decryptor_->Decrypt(buffer, 303 decryptor_->Decrypt(Decryptor::kVideo,
304 buffer,
304 base::Bind(&FFmpegVideoDecoder::BufferDecrypted, this)); 305 base::Bind(&FFmpegVideoDecoder::BufferDecrypted, this));
305 return; 306 return;
306 } 307 }
307 308
308 DecodeBuffer(buffer); 309 DecodeBuffer(buffer);
309 } 310 }
310 311
311 void FFmpegVideoDecoder::BufferDecrypted( 312 void FFmpegVideoDecoder::BufferDecrypted(
312 Decryptor::Status decrypt_status, 313 Decryptor::Status decrypt_status,
313 const scoped_refptr<DecoderBuffer>& buffer) { 314 const scoped_refptr<DecoderBuffer>& buffer) {
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
526 if (!codec || avcodec_open2(codec_context_, codec, NULL) < 0) { 527 if (!codec || avcodec_open2(codec_context_, codec, NULL) < 0) {
527 ReleaseFFmpegResources(); 528 ReleaseFFmpegResources();
528 return false; 529 return false;
529 } 530 }
530 531
531 av_frame_ = avcodec_alloc_frame(); 532 av_frame_ = avcodec_alloc_frame();
532 return true; 533 return true;
533 } 534 }
534 535
535 } // namespace media 536 } // namespace media
OLDNEW
« no previous file with comments | « media/filters/decrypting_video_decoder_unittest.cc ('k') | media/filters/ffmpeg_video_decoder_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698