summaryrefslogtreecommitdiffstats
path: root/media/video
diff options
context:
space:
mode:
authoremircan <emircan@chromium.org>2016-01-15 00:59:27 -0800
committerCommit bot <commit-bot@chromium.org>2016-01-15 09:00:38 +0000
commit8428d41278c107c107736454dc4fdddbd14969bd (patch)
treeed8c911e772aecc90b7f610f65abf8f33e357d12 /media/video
parent4977dd61169929d41ac1ff5d50c3b194bce71e60 (diff)
downloadchromium_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.cc12
-rw-r--r--media/video/gpu_memory_buffer_video_frame_pool_unittest.cc27
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: