Chromium Code Reviews| Index: media/gpu/android_video_encode_accelerator.cc |
| diff --git a/media/gpu/android_video_encode_accelerator.cc b/media/gpu/android_video_encode_accelerator.cc |
| index b16f933222866fe2bb9bcae46c1883d6a9eeecb7..0dfebf8740638529f189c1cdf15b7de0cbbc8b93 100644 |
| --- a/media/gpu/android_video_encode_accelerator.cc |
| +++ b/media/gpu/android_video_encode_accelerator.cc |
| @@ -49,8 +49,8 @@ enum PixelFormat { |
| DLOG(ERROR) << log; \ |
| if (client_ptr_factory_->GetWeakPtr()) { \ |
|
watk
2016/12/28 01:01:51
It's not possible for this to be null AFAICT. Shou
braveyao
2016/12/28 01:28:18
Done.
|
| client_ptr_factory_->GetWeakPtr()->NotifyError(error); \ |
| - client_ptr_factory_.reset(); \ |
| } \ |
| + error_occurred_ = true; \ |
| return; \ |
| } \ |
| } while (0) |
| @@ -94,7 +94,7 @@ static bool GetSupportedColorFormatForMime(const std::string& mime, |
| } |
| AndroidVideoEncodeAccelerator::AndroidVideoEncodeAccelerator() |
| - : num_buffers_at_codec_(0), last_set_bitrate_(0) {} |
| + : num_buffers_at_codec_(0), last_set_bitrate_(0), error_occurred_(false) {} |
| AndroidVideoEncodeAccelerator::~AndroidVideoEncodeAccelerator() { |
| DCHECK(thread_checker_.CalledOnValidThread()); |
| @@ -152,6 +152,7 @@ bool AndroidVideoEncodeAccelerator::Initialize( |
| DCHECK(thread_checker_.CalledOnValidThread()); |
| client_ptr_factory_.reset(new base::WeakPtrFactory<Client>(client)); |
|
watk
2016/12/28 01:01:51
I'd suggest adding a DCHECK(client) or if (!client
braveyao
2016/12/28 01:28:18
Done.
|
| + error_occurred_ = false; |
|
watk
2016/12/28 01:01:51
Initialize() cannot be called more than once so th
braveyao
2016/12/28 01:28:18
Done.
|
| if (!(MediaCodecUtil::SupportsSetParameters() && |
| format == PIXEL_FORMAT_I420)) { |
| @@ -285,6 +286,7 @@ void AndroidVideoEncodeAccelerator::Destroy() { |
| DVLOG(3) << __PRETTY_FUNCTION__; |
| DCHECK(thread_checker_.CalledOnValidThread()); |
| client_ptr_factory_.reset(); |
| + error_occurred_ = false; |
|
watk
2016/12/28 01:01:51
No need to reset this, we're deleting below. (The
braveyao
2016/12/28 01:28:18
Done.
|
| if (media_codec_) { |
| if (io_timer_.IsRunning()) |
| io_timer_.Stop(); |
| @@ -301,7 +303,7 @@ void AndroidVideoEncodeAccelerator::DoIOTask() { |
| } |
| void AndroidVideoEncodeAccelerator::QueueInput() { |
| - if (!client_ptr_factory_->GetWeakPtr() || pending_frames_.empty()) |
| + if (error_occurred_ || pending_frames_.empty()) |
| return; |
| int input_buf_index = 0; |
| @@ -368,8 +370,8 @@ void AndroidVideoEncodeAccelerator::QueueInput() { |
| } |
| void AndroidVideoEncodeAccelerator::DequeueOutput() { |
| - if (!client_ptr_factory_->GetWeakPtr() || |
| - available_bitstream_buffers_.empty() || num_buffers_at_codec_ == 0) { |
| + if (error_occurred_ || available_bitstream_buffers_.empty() || |
| + num_buffers_at_codec_ == 0) { |
| return; |
| } |