Index: content/renderer/media/video_capture_impl.cc |
diff --git a/content/renderer/media/video_capture_impl.cc b/content/renderer/media/video_capture_impl.cc |
index 1ccd6c63fce441a6407db674e1a7754a12014ffb..2469441f46ca4f2836a76540177d8c735e6d7b7b 100644 |
--- a/content/renderer/media/video_capture_impl.cc |
+++ b/content/renderer/media/video_capture_impl.cc |
@@ -310,13 +310,20 @@ void VideoCaptureImpl::OnBufferReceived( |
const gfx::Size& coded_size, |
const gfx::Rect& visible_rect) { |
DCHECK(io_task_runner_->BelongsToCurrentThread()); |
+ // TODO(astojilj) Check STORAGE_GPU_MEMORY_BUFFERS support for Y8/Y16. |
if (state_ != VIDEO_CAPTURE_STATE_STARTED || suspended_ || |
- pixel_format != media::PIXEL_FORMAT_I420 || |
+ (pixel_format != media::PIXEL_FORMAT_I420 && |
+ ((pixel_format != media::PIXEL_FORMAT_Y8 && |
+ pixel_format != media::PIXEL_FORMAT_Y16) || |
+ storage_type != media::VideoFrame::STORAGE_SHMEM)) || |
(storage_type != media::VideoFrame::STORAGE_SHMEM && |
storage_type != media::VideoFrame::STORAGE_GPU_MEMORY_BUFFERS)) { |
// Crash in debug builds since the host should not have provided a buffer |
// with an unsupported pixel format or storage type. |
- DCHECK_EQ(media::PIXEL_FORMAT_I420, pixel_format); |
+ DCHECK(media::PIXEL_FORMAT_I420 == pixel_format || |
+ ((media::PIXEL_FORMAT_Y8 == pixel_format || |
+ media::PIXEL_FORMAT_Y16 == pixel_format) && |
+ storage_type == media::VideoFrame::STORAGE_SHMEM)); |
DCHECK(storage_type == media::VideoFrame::STORAGE_SHMEM || |
storage_type == media::VideoFrame::STORAGE_GPU_MEMORY_BUFFERS); |
Send(new VideoCaptureHostMsg_BufferReady(device_id_, buffer_id, |