/* * Copyright (c) Hisilicon Technologies Co., Ltd.. 2016-2020. All rights reserved. * Description: Support private hwgraphics hidl interface * Author: Hisilicon * Created: 2016.11.29 */ #ifndef HW_GRAPHICS_IAPI_ADAPTER_H #define HW_GRAPHICS_IAPI_ADAPTER_H #include #include #include #include "gralloc_priv.h" namespace android { using ::vendor::huanglong::hardware::hwgraphics::V1_0::CaptureType; using ::vendor::huanglong::hardware::hwgraphics::V1_0::HwRect; #ifndef HWGRAPHIC_CHK_RETURN #define HWGRAPHIC_CHK_RETURN(val, ret, ...) \ do { \ if (val) { \ __VA_ARGS__; \ return (ret); \ } \ } while (0) #endif #ifndef HWGRAPHIC_CHK_RETURN_NOT_VALUE #define HWGRAPHIC_CHK_RETURN_NOT_VALUE(val, ...) \ do { \ if (val) { \ __VA_ARGS__; \ return; \ } \ } while (0) #endif #ifndef HWGRAPHIC_CHK_PRINTF #define HWGRAPHIC_CHK_PRINTF(val, ...) \ do { \ if (val) { \ __VA_ARGS__; \ } \ } while (0) #endif const int SCREENCAP_VIDEOGFX_WIDTH_LIMIT = 7680; const int SCREENCAP_VIDEOGFX_HEIGHT_LIMIT = 4320; const int TDE_COPY_TIMEOUT = 1000; const int ACQUIRE_FRAME_TIMEOUT = 500; const float RATIO_OF_UV_TO_Y_FOR_YUV420 = 0.5; const int CAST_SYNC_TIMEOUT = 1000; using PrivHandle = const private_handle_t *; struct CaptureInfoData { CaptureType captureType; PrivHandle captureHandle{nullptr}; HwRect captureRect; }; class HwGraphicsIapiAdapter { public: static HwGraphicsIapiAdapter* GetInstance(); HwGraphicsIapiAdapter(){}; virtual ~HwGraphicsIapiAdapter(){}; HwGraphicsIapiAdapter(const HwGraphicsIapiAdapter&) = delete; HwGraphicsIapiAdapter& operator=(const HwGraphicsIapiAdapter&) = delete; virtual int CaptureScreenByVDP(CaptureInfoData captureInfo) = 0; virtual int InitVoModule() = 0; virtual int CloseVoWindow(uint32_t window) = 0; virtual int DeinitVoModule() = 0; virtual int InitCast(uint64_t display, uint32_t format, uint32_t width, uint32_t height) = 0; virtual int CastFrame(int32_t castHandle, const private_handle_t &handle, int fence, int &acquireFence) = 0; virtual void SetBlackCastFrame(const bool isBlack) = 0; virtual int CloseCast(int32_t castHandle) = 0; }; } // namespace android #endif // HW_GRAPHICS_IAPI_ADAPTER_H