diff options
Diffstat (limited to 'C2ArcVideoAcceleratorFactory.cpp')
-rw-r--r-- | C2ArcVideoAcceleratorFactory.cpp | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/C2ArcVideoAcceleratorFactory.cpp b/C2ArcVideoAcceleratorFactory.cpp deleted file mode 100644 index 07997d1..0000000 --- a/C2ArcVideoAcceleratorFactory.cpp +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2018 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. - -// #define LOG_NDEBUG 0 -#define LOG_TAG "C2ArcVideoAcceleratorFactory" - -#include <C2ArcVideoAcceleratorFactory.h> - -#include <base/bind.h> -#include <binder/IServiceManager.h> -#include <mojo/edk/embedder/embedder.h> -#include <mojo/public/cpp/bindings/interface_request.h> -#include <mojo/public/cpp/system/handle.h> -#include <utils/Log.h> - -namespace android { - -ANDROID_SINGLETON_STATIC_INSTANCE(C2ArcVideoAcceleratorFactory) - -bool C2ArcVideoAcceleratorFactory::createVideoDecodeAccelerator( - ::arc::mojom::VideoDecodeAcceleratorRequest request) { - if (!mRemoteFactory) { - ALOGE("Factory is not ready"); - return false; - } - mRemoteFactory->CreateDecodeAccelerator(std::move(request)); - return true; -} - -bool C2ArcVideoAcceleratorFactory::createVideoEncodeAccelerator( - ::arc::mojom::VideoEncodeAcceleratorRequest request) { - if (!mRemoteFactory) { - ALOGE("Factory is not ready"); - return false; - } - mRemoteFactory->CreateEncodeAccelerator(std::move(request)); - return true; -} - -bool C2ArcVideoAcceleratorFactory::createVideoProtectedBufferAllocator( - ::arc::mojom::VideoProtectedBufferAllocatorRequest request) { - if (!mRemoteFactory) { - ALOGE("Factory is not ready"); - return false; - } - mRemoteFactory->CreateProtectedBufferAllocator(std::move(request)); - return true; -} - -int32_t C2ArcVideoAcceleratorFactory::hostVersion() const { - return mHostVersion; -} - -C2ArcVideoAcceleratorFactory::C2ArcVideoAcceleratorFactory() : mHostVersion(0) { - sp<IBinder> binder = - defaultServiceManager()->getService(String16("android.os.IArcVideoBridge")); - if (binder == nullptr) { - ALOGE("Failed to find IArcVideoBridge service"); - return; - } - mArcVideoBridge = interface_cast<IArcVideoBridge>(binder); - mHostVersion = mArcVideoBridge->hostVersion(); - if (mHostVersion < 4) { - ALOGW("HostVersion(%d) is outdated", mHostVersion); - return; - } - - ALOGV("HostVersion: %d", mHostVersion); - - ::arc::MojoBootstrapResult bootstrapResult = - mArcVideoBridge->bootstrapVideoAcceleratorFactory(); - if (!bootstrapResult.is_valid()) { - ALOGE("bootstrapVideoAcceleratorFactory returns invalid result"); - return; - } - mojo::edk::ScopedPlatformHandle handle( - mojo::edk::PlatformHandle(bootstrapResult.releaseFd().release())); - ALOGV("SetParentPipeHandle(fd=%d)", handle.get().handle); - mojo::edk::SetParentPipeHandle(std::move(handle)); - mojo::ScopedMessagePipeHandle server_pipe = - mojo::edk::CreateChildMessagePipe(bootstrapResult.releaseToken()); - mRemoteFactory.Bind(mojo::InterfacePtrInfo<::arc::mojom::VideoAcceleratorFactory>( - std::move(server_pipe), 7u)); -} - -} // namespace android |