video_encode_accelerator.cc revision e5d81f57cb97b3b6b7fccc9c5610d21eb81db09d
1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "content/public/renderer/video_encode_accelerator.h" 6 7#include "base/task_runner_util.h" 8#include "content/common/gpu/client/gpu_video_encode_accelerator_host.h" 9#include "content/renderer/render_thread_impl.h" 10#include "media/filters/gpu_video_accelerator_factories.h" 11 12namespace content { 13 14void CreateVideoEncodeAccelerator( 15 const OnCreateVideoEncodeAcceleratorCallback& callback) { 16 DCHECK(!callback.is_null()); 17 18 scoped_refptr<media::GpuVideoAcceleratorFactories> gpu_factories = 19 RenderThreadImpl::current()->GetGpuFactories(); 20 if (!gpu_factories.get()) { 21 callback.Run(NULL, scoped_ptr<media::VideoEncodeAccelerator>()); 22 return; 23 } 24 25 scoped_refptr<base::SingleThreadTaskRunner> encode_task_runner = 26 gpu_factories->GetTaskRunner(); 27 base::PostTaskAndReplyWithResult( 28 encode_task_runner, 29 FROM_HERE, 30 base::Bind( 31 &media::GpuVideoAcceleratorFactories::CreateVideoEncodeAccelerator, 32 gpu_factories), 33 base::Bind(callback, encode_task_runner)); 34} 35 36std::vector<media::VideoEncodeAccelerator::SupportedProfile> 37GetSupportedVideoEncodeAcceleratorProfiles() { 38 return GpuVideoEncodeAcceleratorHost::GetSupportedProfiles(); 39} 40 41} // namespace content 42