Chromium Code Reviews| Index: content/common/gpu/media/video_decode_accelerator_unittest.cc |
| diff --git a/content/common/gpu/media/video_decode_accelerator_unittest.cc b/content/common/gpu/media/video_decode_accelerator_unittest.cc |
| index 0c64f37f3bb5e7a9c014d730dcb2dcd1636cfa2a..ee04bc13ea723ff3e08328262d1ff60c0d2d1ba1 100644 |
| --- a/content/common/gpu/media/video_decode_accelerator_unittest.cc |
| +++ b/content/common/gpu/media/video_decode_accelerator_unittest.cc |
| @@ -729,8 +729,15 @@ void GLRenderingVDAClient::NotifyEndOfBitstreamBuffer( |
| // VaapiVideoDecodeAccelerator::FinishReset()). |
| ++num_done_bitstream_buffers_; |
| --outstanding_decodes_; |
| - if (decode_calls_per_second_ == 0) |
| + |
| + // Flush decoder after all BitstreamBuffers are processed. |
| + if (encoded_data_next_pos_to_decode_ == encoded_data_.size() && |
| + outstanding_decodes_ == 0) { |
|
wuchengli
2015/09/04 03:26:06
No need to call DecodeNextFragment if reaching the
Pawel Osciak
2015/09/04 06:04:40
Do we need to check outstanding_decodes_? I think
Owen Lin
2015/09/04 07:15:43
Done.
Owen Lin
2015/09/04 07:15:44
This is what I thought. (So I issue the Flush once
|
| + decoder_->Flush(); |
| + SetState(CS_FLUSHING); |
| + } else if (decode_calls_per_second_ == 0) { |
| DecodeNextFragment(); |
| + } |
| } |
| void GLRenderingVDAClient::NotifyFlushDone() { |
| @@ -922,13 +929,8 @@ static bool FragmentHasConfigInfo(const uint8* data, size_t size, |
| void GLRenderingVDAClient::DecodeNextFragment() { |
| if (decoder_deleted()) |
| return; |
| - if (encoded_data_next_pos_to_decode_ == encoded_data_.size()) { |
| - if (outstanding_decodes_ == 0) { |
| - decoder_->Flush(); |
| - SetState(CS_FLUSHING); |
| - } |
| + if (encoded_data_next_pos_to_decode_ == encoded_data_.size()) |
| return; |
| - } |
| size_t end_pos; |
| std::string next_fragment_bytes; |
| if (encoded_data_next_pos_to_decode_ == 0) { |