diff options
author | emircan <emircan@chromium.org> | 2016-01-15 00:59:27 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-01-15 09:00:38 +0000 |
commit | 8428d41278c107c107736454dc4fdddbd14969bd (patch) | |
tree | ed8c911e772aecc90b7f610f65abf8f33e357d12 /media/video | |
parent | 4977dd61169929d41ac1ff5d50c3b194bce71e60 (diff) | |
download | chromium_src-8428d41278c107c107736454dc4fdddbd14969bd.zip chromium_src-8428d41278c107c107736454dc4fdddbd14969bd.tar.gz chromium_src-8428d41278c107c107736454dc4fdddbd14969bd.tar.bz2 |
Verify returned frames from media::VideoFrame::Wrap*() methods
BUG=552112
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
Review URL: https://codereview.chromium.org/1476523005
Cr-Commit-Position: refs/heads/master@{#369705}
Diffstat (limited to 'media/video')
-rw-r--r-- | media/video/gpu_memory_buffer_video_frame_pool.cc | 12 | ||||
-rw-r--r-- | media/video/gpu_memory_buffer_video_frame_pool_unittest.cc | 27 |
2 files changed, 25 insertions, 14 deletions
diff --git a/media/video/gpu_memory_buffer_video_frame_pool.cc b/media/video/gpu_memory_buffer_video_frame_pool.cc index 14910ad..d5d6836 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)) { diff --git a/media/video/gpu_memory_buffer_video_frame_pool_unittest.cc b/media/video/gpu_memory_buffer_video_frame_pool_unittest.cc index 0e6f3ef..55dc969 100644 --- a/media/video/gpu_memory_buffer_video_frame_pool_unittest.cc +++ b/media/video/gpu_memory_buffer_video_frame_pool_unittest.cc @@ -101,18 +101,21 @@ class GpuMemoryBufferVideoFramePoolTest : public ::testing::Test { DCHECK_LE(dimension, kDimension); gfx::Size size(dimension, dimension); - return media::VideoFrame::WrapExternalYuvData( - media::PIXEL_FORMAT_YV12, // format - size, // coded_size - gfx::Rect(size), // visible_rect - size, // natural_size - size.width(), // y_stride - size.width() / 2, // u_stride - size.width() / 2, // v_stride - y_data, // y_data - u_data, // u_data - v_data, // v_data - base::TimeDelta()); // timestamp + scoped_refptr<VideoFrame> video_frame = + media::VideoFrame::WrapExternalYuvData( + media::PIXEL_FORMAT_YV12, // format + size, // coded_size + gfx::Rect(size), // visible_rect + size, // natural_size + size.width(), // y_stride + size.width() / 2, // u_stride + size.width() / 2, // v_stride + y_data, // y_data + u_data, // u_data + v_data, // v_data + base::TimeDelta()); // timestamp + EXPECT_TRUE(video_frame); + return video_frame; } protected: |