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 dcb9e5aa7df55826a8d2317e2087be3f0eae4a96..04d0ec4ec58fa108a9db396e6ad3071e2a1be8e8 100644 |
--- a/media/video/gpu_memory_buffer_video_frame_pool.cc |
+++ b/media/video/gpu_memory_buffer_video_frame_pool.cc |
@@ -598,7 +598,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: |
@@ -607,12 +608,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)) { |