Index: media/video/gpu_memory_buffer_video_frame_pool.cc |
diff --git a/media/video/gpu_memory_buffer_video_frame_pool.cc b/media/video/gpu_memory_buffer_video_frame_pool.cc |
index 14910adcc1f22d2584625a68bd6af0714d597bb2..d5d683694490cf3816578739885e591a7b5318a4 100644 |
--- a/media/video/gpu_memory_buffer_video_frame_pool.cc |
+++ b/media/video/gpu_memory_buffer_video_frame_pool.cc |
@@ -602,7 +602,8 @@ void GpuMemoryBufferVideoFramePool::PoolImpl:: |
mailbox_holders[VideoFrame::kVPlane], release_mailbox_callback, |
coded_size, gfx::Rect(visible_size), video_frame->natural_size(), |
video_frame->timestamp()); |
- if (video_frame->metadata()->IsTrue(VideoFrameMetadata::ALLOW_OVERLAY)) |
+ if (frame && |
+ video_frame->metadata()->IsTrue(VideoFrameMetadata::ALLOW_OVERLAY)) |
frame->metadata()->SetBoolean(VideoFrameMetadata::ALLOW_OVERLAY, true); |
break; |
case PIXEL_FORMAT_NV12: |
@@ -611,12 +612,19 @@ void GpuMemoryBufferVideoFramePool::PoolImpl:: |
output_format_, mailbox_holders[VideoFrame::kYPlane], |
release_mailbox_callback, coded_size, gfx::Rect(visible_size), |
video_frame->natural_size(), video_frame->timestamp()); |
- frame->metadata()->SetBoolean(VideoFrameMetadata::ALLOW_OVERLAY, true); |
+ if (frame) |
+ frame->metadata()->SetBoolean(VideoFrameMetadata::ALLOW_OVERLAY, true); |
break; |
default: |
NOTREACHED(); |
} |
+ if (!frame) { |
+ release_mailbox_callback.Run(gpu::SyncToken()); |
+ frame_ready_cb.Run(video_frame); |
+ return; |
+ } |
+ |
base::TimeTicks render_time; |
if (video_frame->metadata()->GetTimeTicks(VideoFrameMetadata::REFERENCE_TIME, |
&render_time)) { |