Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(538)

Side by Side Diff: content/renderer/media/video_capture_impl.cc

Issue 2121043002: 16 bpp video stream capture, render and WebGL usage - Realsense R200 & SR300 support. Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: WebGL video to texture support and readPixels from R16UI for CPU access Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 // 4 //
5 // Notes about usage of this object by VideoCaptureImplManager. 5 // Notes about usage of this object by VideoCaptureImplManager.
6 // 6 //
7 // VideoCaptureImplManager access this object by using a Unretained() 7 // VideoCaptureImplManager access this object by using a Unretained()
8 // binding and tasks on the IO thread. It is then important that 8 // binding and tasks on the IO thread. It is then important that
9 // VideoCaptureImpl never post task to itself. All operations must be 9 // VideoCaptureImpl never post task to itself. All operations must be
10 // synchronous. 10 // synchronous.
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 303
304 void VideoCaptureImpl::OnBufferReceived( 304 void VideoCaptureImpl::OnBufferReceived(
305 int buffer_id, 305 int buffer_id,
306 base::TimeDelta timestamp, 306 base::TimeDelta timestamp,
307 const base::DictionaryValue& metadata, 307 const base::DictionaryValue& metadata,
308 media::VideoPixelFormat pixel_format, 308 media::VideoPixelFormat pixel_format,
309 media::VideoFrame::StorageType storage_type, 309 media::VideoFrame::StorageType storage_type,
310 const gfx::Size& coded_size, 310 const gfx::Size& coded_size,
311 const gfx::Rect& visible_rect) { 311 const gfx::Rect& visible_rect) {
312 DCHECK(io_task_runner_->BelongsToCurrentThread()); 312 DCHECK(io_task_runner_->BelongsToCurrentThread());
313 // TODO(astojilj) Check STORAGE_GPU_MEMORY_BUFFERS support for Y8/Y16.
313 if (state_ != VIDEO_CAPTURE_STATE_STARTED || suspended_ || 314 if (state_ != VIDEO_CAPTURE_STATE_STARTED || suspended_ ||
314 pixel_format != media::PIXEL_FORMAT_I420 || 315 (pixel_format != media::PIXEL_FORMAT_I420 &&
316 ((pixel_format != media::PIXEL_FORMAT_Y8 &&
317 pixel_format != media::PIXEL_FORMAT_Y16) ||
318 storage_type != media::VideoFrame::STORAGE_SHMEM)) ||
315 (storage_type != media::VideoFrame::STORAGE_SHMEM && 319 (storage_type != media::VideoFrame::STORAGE_SHMEM &&
316 storage_type != media::VideoFrame::STORAGE_GPU_MEMORY_BUFFERS)) { 320 storage_type != media::VideoFrame::STORAGE_GPU_MEMORY_BUFFERS)) {
317 // Crash in debug builds since the host should not have provided a buffer 321 // Crash in debug builds since the host should not have provided a buffer
318 // with an unsupported pixel format or storage type. 322 // with an unsupported pixel format or storage type.
319 DCHECK_EQ(media::PIXEL_FORMAT_I420, pixel_format); 323 DCHECK(media::PIXEL_FORMAT_I420 == pixel_format ||
324 ((media::PIXEL_FORMAT_Y8 == pixel_format ||
325 media::PIXEL_FORMAT_Y16 == pixel_format) &&
326 storage_type == media::VideoFrame::STORAGE_SHMEM));
320 DCHECK(storage_type == media::VideoFrame::STORAGE_SHMEM || 327 DCHECK(storage_type == media::VideoFrame::STORAGE_SHMEM ||
321 storage_type == media::VideoFrame::STORAGE_GPU_MEMORY_BUFFERS); 328 storage_type == media::VideoFrame::STORAGE_GPU_MEMORY_BUFFERS);
322 Send(new VideoCaptureHostMsg_BufferReady(device_id_, buffer_id, 329 Send(new VideoCaptureHostMsg_BufferReady(device_id_, buffer_id,
323 gpu::SyncToken(), -1.0)); 330 gpu::SyncToken(), -1.0));
324 return; 331 return;
325 } 332 }
326 333
327 base::TimeTicks reference_time; 334 base::TimeTicks reference_time;
328 media::VideoFrameMetadata frame_metadata; 335 media::VideoFrameMetadata frame_metadata;
329 frame_metadata.MergeInternalValuesFrom(metadata); 336 frame_metadata.MergeInternalValuesFrom(metadata);
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
570 double consumer_resource_utilization = -1.0; 577 double consumer_resource_utilization = -1.0;
571 if (!metadata->GetDouble(media::VideoFrameMetadata::RESOURCE_UTILIZATION, 578 if (!metadata->GetDouble(media::VideoFrameMetadata::RESOURCE_UTILIZATION,
572 &consumer_resource_utilization)) { 579 &consumer_resource_utilization)) {
573 consumer_resource_utilization = -1.0; 580 consumer_resource_utilization = -1.0;
574 } 581 }
575 582
576 callback_to_io_thread.Run(*release_sync_token, consumer_resource_utilization); 583 callback_to_io_thread.Run(*release_sync_token, consumer_resource_utilization);
577 } 584 }
578 585
579 } // namespace content 586 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698