| // 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. |
| |
| #ifndef ANDROID_C2_ARC_VIDEO_ACCELERATOR_FACTORY_H |
| #define ANDROID_C2_ARC_VIDEO_ACCELERATOR_FACTORY_H |
| |
| #include <media/arcvideobridge/IArcVideoBridge.h> |
| #include <utils/Singleton.h> |
| |
| #include <components/arc/common/video.mojom.h> |
| #include <components/arc/common/video_decode_accelerator.mojom.h> |
| #include <components/arc/common/video_encode_accelerator.mojom.h> |
| |
| namespace android { |
| // Helper class to create message pipe to the ArcVideoAccelerator. |
| // This class should only be used in the Mojo thread. |
| class C2ArcVideoAcceleratorFactory : public Singleton<C2ArcVideoAcceleratorFactory> { |
| public: |
| bool createVideoDecodeAccelerator(::arc::mojom::VideoDecodeAcceleratorRequest request); |
| bool createVideoEncodeAccelerator(::arc::mojom::VideoEncodeAcceleratorRequest request); |
| bool createVideoProtectedBufferAllocator( |
| ::arc::mojom::VideoProtectedBufferAllocatorRequest request); |
| int32_t hostVersion() const; |
| |
| private: |
| C2ArcVideoAcceleratorFactory(); |
| |
| uint32_t mHostVersion; |
| sp<IArcVideoBridge> mArcVideoBridge; |
| ::arc::mojom::VideoAcceleratorFactoryPtr mRemoteFactory; |
| |
| friend class Singleton<C2ArcVideoAcceleratorFactory>; |
| }; |
| } // namespace android |
| |
| #endif // ANDROID_C2_ARC_VIDEO_ACCELERATOR_FACTORY_H |