summaryrefslogtreecommitdiffstats
path: root/chromium/content/public/renderer/video_encode_accelerator.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/public/renderer/video_encode_accelerator.cc')
-rw-r--r--chromium/content/public/renderer/video_encode_accelerator.cc41
1 files changed, 41 insertions, 0 deletions
diff --git a/chromium/content/public/renderer/video_encode_accelerator.cc b/chromium/content/public/renderer/video_encode_accelerator.cc
new file mode 100644
index 00000000000..f256f48b522
--- /dev/null
+++ b/chromium/content/public/renderer/video_encode_accelerator.cc
@@ -0,0 +1,41 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/public/renderer/video_encode_accelerator.h"
+
+#include "base/task_runner_util.h"
+#include "content/common/gpu/client/gpu_video_encode_accelerator_host.h"
+#include "content/renderer/render_thread_impl.h"
+#include "media/filters/gpu_video_accelerator_factories.h"
+
+namespace content {
+
+void CreateVideoEncodeAccelerator(
+ const OnCreateVideoEncodeAcceleratorCallback& callback) {
+ DCHECK(!callback.is_null());
+
+ scoped_refptr<media::GpuVideoAcceleratorFactories> gpu_factories =
+ RenderThreadImpl::current()->GetGpuFactories();
+ if (!gpu_factories.get()) {
+ callback.Run(NULL, scoped_ptr<media::VideoEncodeAccelerator>());
+ return;
+ }
+
+ scoped_refptr<base::SingleThreadTaskRunner> encode_task_runner =
+ gpu_factories->GetTaskRunner();
+ base::PostTaskAndReplyWithResult(
+ encode_task_runner,
+ FROM_HERE,
+ base::Bind(
+ &media::GpuVideoAcceleratorFactories::CreateVideoEncodeAccelerator,
+ gpu_factories),
+ base::Bind(callback, encode_task_runner));
+}
+
+std::vector<media::VideoEncodeAccelerator::SupportedProfile>
+GetSupportedVideoEncodeAcceleratorProfiles() {
+ return GpuVideoEncodeAcceleratorHost::GetSupportedProfiles();
+}
+
+} // namespace content