• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
12 namespace content {
13 
CreateVideoEncodeAccelerator(const OnCreateVideoEncodeAcceleratorCallback & callback)14 void 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.get(),
29       FROM_HERE,
30       base::Bind(
31           &media::GpuVideoAcceleratorFactories::CreateVideoEncodeAccelerator,
32           gpu_factories),
33       base::Bind(callback, encode_task_runner));
34 }
35 
36 std::vector<media::VideoEncodeAccelerator::SupportedProfile>
GetSupportedVideoEncodeAcceleratorProfiles()37 GetSupportedVideoEncodeAcceleratorProfiles() {
38   scoped_refptr<media::GpuVideoAcceleratorFactories> gpu_factories =
39       RenderThreadImpl::current()->GetGpuFactories();
40   if (!gpu_factories.get())
41     return std::vector<media::VideoEncodeAccelerator::SupportedProfile>();
42   return gpu_factories->GetVideoEncodeAcceleratorSupportedProfiles();
43 }
44 
45 }  // namespace content
46