Home | History | Annotate | Download | only in renderer
      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 
     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,
     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>
     37 GetSupportedVideoEncodeAcceleratorProfiles() {
     38   return GpuVideoEncodeAcceleratorHost::GetSupportedProfiles();
     39 }
     40 
     41 }  // namespace content
     42