Chromium Code Reviews| Index: media/filters/gpu_video_decoder.cc |
| diff --git a/media/filters/gpu_video_decoder.cc b/media/filters/gpu_video_decoder.cc |
| index 9627a4b156523c5ab3eaa72a881cf893d566d097..54c4257ed387f3c20a0acb2c8dd142d09d4c1053 100644 |
| --- a/media/filters/gpu_video_decoder.cc |
| +++ b/media/filters/gpu_video_decoder.cc |
| @@ -85,6 +85,7 @@ GpuVideoDecoder::GpuVideoDecoder(GpuVideoAcceleratorFactories* factories, |
| available_pictures_(0), |
| needs_all_picture_buffers_to_decode_(false), |
| supports_deferred_initialization_(false), |
| + requires_texture_copy_(false), |
| weak_factory_(this) { |
| DCHECK(factories_); |
| } |
| @@ -201,6 +202,9 @@ void GpuVideoDecoder::Initialize(const VideoDecoderConfig& config, |
| capabilities.flags & |
| VideoDecodeAccelerator::Capabilities::NEEDS_ALL_PICTURE_BUFFERS_TO_DECODE; |
| needs_bitstream_conversion_ = (config.codec() == kCodecH264); |
| + requires_texture_copy_ = |
|
Tima Vaisburd
2016/06/09 22:51:26
Bo Liu> do this:
Bo Liu> https://cs.chromium.org/c
boliu
2016/06/10 00:41:03
You are not actually using the command line here t
Tima Vaisburd
2016/06/10 00:49:41
VideoDecodeAccelerator::Capabilities extracts the
boliu
2016/06/10 00:53:33
which is fine
|
| + capabilities.flags & |
| + VideoDecodeAccelerator::Capabilities::REQUIRES_TEXTURE_COPY; |
| supports_deferred_initialization_ = !!( |
| capabilities.flags & |
| VideoDecodeAccelerator::Capabilities::SUPPORTS_DEFERRED_INITIALIZATION); |
| @@ -588,6 +592,12 @@ void GpuVideoDecoder::PictureReady(const media::Picture& picture) { |
| #if defined(OS_MACOSX) || defined(OS_WIN) |
| frame->metadata()->SetBoolean(VideoFrameMetadata::DECODER_OWNS_FRAME, true); |
| #endif |
| + |
| + // We keep deferred rendering strategy for Android WebView, that can only work |
| + // with COPY_REQUIRED. See http://crbug.com/582170. |
| + if (requires_texture_copy_) |
| + frame->metadata()->SetBoolean(VideoFrameMetadata::COPY_REQUIRED, true); |
| + |
| CHECK_GT(available_pictures_, 0); |
| --available_pictures_; |