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

Side by Side Diff: content/renderer/media/renderer_gpu_video_accelerator_factories.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: Tests: cc, skcanvas_video_renderer, wrtcrecorder... Fake capture supports Y16. Created 4 years, 2 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 #include "content/renderer/media/renderer_gpu_video_accelerator_factories.h" 5 #include "content/renderer/media/renderer_gpu_video_accelerator_factories.h"
6 6
7 #include <GLES2/gl2.h> 7 #include <GLES2/gl2.h>
8 #include <GLES2/gl2ext.h> 8 #include <GLES2/gl2ext.h>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 std::unique_ptr<gfx::GpuMemoryBuffer> 215 std::unique_ptr<gfx::GpuMemoryBuffer>
216 RendererGpuVideoAcceleratorFactories::AllocateGpuMemoryBuffer( 216 RendererGpuVideoAcceleratorFactories::AllocateGpuMemoryBuffer(
217 const gfx::Size& size, 217 const gfx::Size& size,
218 gfx::BufferFormat format, 218 gfx::BufferFormat format,
219 gfx::BufferUsage usage) { 219 gfx::BufferUsage usage) {
220 std::unique_ptr<gfx::GpuMemoryBuffer> buffer = 220 std::unique_ptr<gfx::GpuMemoryBuffer> buffer =
221 gpu_memory_buffer_manager_->AllocateGpuMemoryBuffer( 221 gpu_memory_buffer_manager_->AllocateGpuMemoryBuffer(
222 size, format, usage, gpu::kNullSurfaceHandle); 222 size, format, usage, gpu::kNullSurfaceHandle);
223 return buffer; 223 return buffer;
224 } 224 }
225
225 bool RendererGpuVideoAcceleratorFactories:: 226 bool RendererGpuVideoAcceleratorFactories::
226 ShouldUseGpuMemoryBuffersForVideoFrames() const { 227 ShouldUseGpuMemoryBuffersForVideoFrames() const {
227 return enable_gpu_memory_buffer_video_frames_; 228 return enable_gpu_memory_buffer_video_frames_;
228 } 229 }
229 230
230 unsigned RendererGpuVideoAcceleratorFactories::ImageTextureTarget( 231 unsigned RendererGpuVideoAcceleratorFactories::ImageTextureTarget(
231 gfx::BufferFormat format) { 232 gfx::BufferFormat format) {
232 auto found = image_texture_targets_.find(cc::BufferToTextureTargetKey( 233 auto found = image_texture_targets_.find(cc::BufferToTextureTargetKey(
233 gfx::BufferUsage::GPU_READ_CPU_READ_WRITE, format)); 234 gfx::BufferUsage::GPU_READ_CPU_READ_WRITE, format));
234 DCHECK(found != image_texture_targets_.end()); 235 DCHECK(found != image_texture_targets_.end());
235 return found->second; 236 return found->second;
236 } 237 }
237 238
238 media::VideoPixelFormat 239 media::VideoPixelFormat
239 RendererGpuVideoAcceleratorFactories::VideoFrameOutputFormat() { 240 RendererGpuVideoAcceleratorFactories::VideoFrameOutputFormat(
241 media::VideoPixelFormat format) {
240 DCHECK(task_runner_->BelongsToCurrentThread()); 242 DCHECK(task_runner_->BelongsToCurrentThread());
241 if (CheckContextLost()) 243 if (CheckContextLost())
242 return media::PIXEL_FORMAT_UNKNOWN; 244 return media::PIXEL_FORMAT_UNKNOWN;
243 cc::ContextProvider::ScopedContextLock lock(context_provider_); 245 cc::ContextProvider::ScopedContextLock lock(context_provider_);
244 auto capabilities = context_provider_->ContextCapabilities(); 246 auto capabilities = context_provider_->ContextCapabilities();
247 if (format == media::PIXEL_FORMAT_Y8 || format == media::PIXEL_FORMAT_Y16)
248 return capabilities.texture_rg ? format : media::PIXEL_FORMAT_UNKNOWN;
245 if (capabilities.image_ycbcr_420v) 249 if (capabilities.image_ycbcr_420v)
246 return media::PIXEL_FORMAT_NV12; 250 return media::PIXEL_FORMAT_NV12;
247 if (capabilities.image_ycbcr_422) 251 if (capabilities.image_ycbcr_422)
248 return media::PIXEL_FORMAT_UYVY; 252 return media::PIXEL_FORMAT_UYVY;
249 if (capabilities.texture_rg) 253 if (capabilities.texture_rg)
250 return media::PIXEL_FORMAT_I420; 254 return media::PIXEL_FORMAT_I420;
251 return media::PIXEL_FORMAT_UNKNOWN; 255 return media::PIXEL_FORMAT_UNKNOWN;
252 } 256 }
253 257
254 namespace { 258 namespace {
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 context_provider_refptr_ = nullptr; 310 context_provider_refptr_ = nullptr;
307 } 311 }
308 312
309 scoped_refptr<ContextProviderCommandBuffer> 313 scoped_refptr<ContextProviderCommandBuffer>
310 RendererGpuVideoAcceleratorFactories::ContextProviderMainThread() { 314 RendererGpuVideoAcceleratorFactories::ContextProviderMainThread() {
311 DCHECK(main_thread_task_runner_->BelongsToCurrentThread()); 315 DCHECK(main_thread_task_runner_->BelongsToCurrentThread());
312 return context_provider_refptr_; 316 return context_provider_refptr_;
313 } 317 }
314 318
315 } // namespace content 319 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698