11bd4fe43Sopenharmony_ci/*
21bd4fe43Sopenharmony_ci * Copyright (c) 2022 HiSilicon (Shanghai) Technologies CO., LIMITED.
31bd4fe43Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
41bd4fe43Sopenharmony_ci * you may not use this file except in compliance with the License.
51bd4fe43Sopenharmony_ci * You may obtain a copy of the License at
61bd4fe43Sopenharmony_ci *
71bd4fe43Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
81bd4fe43Sopenharmony_ci *
91bd4fe43Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
101bd4fe43Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
111bd4fe43Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
121bd4fe43Sopenharmony_ci * See the License for the specific language governing permissions and
131bd4fe43Sopenharmony_ci * limitations under the License.
141bd4fe43Sopenharmony_ci */
151bd4fe43Sopenharmony_ci
161bd4fe43Sopenharmony_ci#ifndef __MPI_VO_H__
171bd4fe43Sopenharmony_ci#define __MPI_VO_H__
181bd4fe43Sopenharmony_ci
191bd4fe43Sopenharmony_ci#include "hi_comm_vo.h"
201bd4fe43Sopenharmony_ci
211bd4fe43Sopenharmony_ci#ifdef __cplusplus
221bd4fe43Sopenharmony_ci#if __cplusplus
231bd4fe43Sopenharmony_ciextern "C" {
241bd4fe43Sopenharmony_ci#endif
251bd4fe43Sopenharmony_ci#endif /* __cplusplus */
261bd4fe43Sopenharmony_ci
271bd4fe43Sopenharmony_ci/* Device Relative Settings */
281bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetPubAttr(VO_DEV VoDev, const VO_PUB_ATTR_S *pstPubAttr);
291bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetPubAttr(VO_DEV VoDev, VO_PUB_ATTR_S *pstPubAttr);
301bd4fe43Sopenharmony_ci
311bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_Enable(VO_DEV VoDev);
321bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_Disable(VO_DEV VoDev);
331bd4fe43Sopenharmony_ci
341bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_CloseFd(HI_VOID);
351bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetUserIntfSyncInfo(VO_DEV VoDev, VO_USER_INTFSYNC_INFO_S *pstUserInfo);
361bd4fe43Sopenharmony_ci
371bd4fe43Sopenharmony_ci/* Video Relative Settings */
381bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetVideoLayerAttr(VO_LAYER VoLayer, const VO_VIDEO_LAYER_ATTR_S *pstLayerAttr);
391bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetVideoLayerAttr(VO_LAYER VoLayer, VO_VIDEO_LAYER_ATTR_S *pstLayerAttr);
401bd4fe43Sopenharmony_ci
411bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_EnableVideoLayer(VO_LAYER VoLayer);
421bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_DisableVideoLayer(VO_LAYER VoLayer);
431bd4fe43Sopenharmony_ci
441bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_BindVideoLayer(VO_LAYER VoLayer, VO_DEV VoDev);
451bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_UnBindVideoLayer(VO_LAYER VoLayer, VO_DEV VoDev);
461bd4fe43Sopenharmony_ci
471bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetVideoLayerPriority(VO_LAYER VoLayer, HI_U32 u32Priority);
481bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetVideoLayerPriority(VO_LAYER VoLayer, HI_U32 *pu32Priority);
491bd4fe43Sopenharmony_ci
501bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetVideoLayerCSC(VO_LAYER VoLayer, const VO_CSC_S *pstVideoCSC);
511bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetVideoLayerCSC(VO_LAYER VoLayer, VO_CSC_S *pstVideoCSC);
521bd4fe43Sopenharmony_ci
531bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetVideoLayerPartitionMode(VO_LAYER VoLayer, VO_PART_MODE_E enPartMode);
541bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetVideoLayerPartitionMode(VO_LAYER VoLayer, VO_PART_MODE_E *penPartMode);
551bd4fe43Sopenharmony_ci
561bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_BatchBegin(VO_LAYER VoLayer);
571bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_BatchEnd(VO_LAYER VoLayer);
581bd4fe43Sopenharmony_ci
591bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetVideoLayerBoundary(VO_LAYER VoLayer, const VO_LAYER_BOUNDARY_S *pstLayerBoundary);
601bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetVideoLayerBoundary(VO_LAYER VoLayer, VO_LAYER_BOUNDARY_S *pstLayerBoundary);
611bd4fe43Sopenharmony_ci
621bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetVideoLayerParam(VO_LAYER VoLayer, const VO_LAYER_PARAM_S *pstLayerParam);
631bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetVideoLayerParam(VO_LAYER VoLayer, VO_LAYER_PARAM_S *pstLayerParam);
641bd4fe43Sopenharmony_ci
651bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetVideoLayerDecompress(VO_LAYER VoLayer, HI_BOOL bSupportDecompress);
661bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetVideoLayerDecompress(VO_LAYER VoLayer, HI_BOOL *pbSupportDecompress);
671bd4fe43Sopenharmony_ci
681bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetVideoLayerCrop(VO_LAYER VoLayer, const CROP_INFO_S *pstCropInfo);
691bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetVideoLayerCrop(VO_LAYER VoLayer, CROP_INFO_S *pstCropInfo);
701bd4fe43Sopenharmony_ci
711bd4fe43Sopenharmony_ci/* Display relative operations */
721bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetPlayToleration(VO_LAYER VoLayer, HI_U32 u32Toleration);
731bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetPlayToleration(VO_LAYER VoLayer, HI_U32 *pu32Toleration);
741bd4fe43Sopenharmony_ci
751bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetScreenFrame(VO_LAYER VoLayer, VIDEO_FRAME_INFO_S *pstVFrame, HI_S32 s32MilliSec);
761bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_ReleaseScreenFrame(VO_LAYER VoLayer, const VIDEO_FRAME_INFO_S *pstVFrame);
771bd4fe43Sopenharmony_ci
781bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetDisplayBufLen(VO_LAYER VoLayer, HI_U32 u32BufLen);
791bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetDisplayBufLen(VO_LAYER VoLayer, HI_U32 *pu32BufLen);
801bd4fe43Sopenharmony_ci
811bd4fe43Sopenharmony_ci/* Channel Relative Operations */
821bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetChnAttr(VO_LAYER VoLayer, VO_CHN VoChn, const VO_CHN_ATTR_S *pstChnAttr);
831bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetChnAttr(VO_LAYER VoLayer, VO_CHN VoChn, VO_CHN_ATTR_S *pstChnAttr);
841bd4fe43Sopenharmony_ci
851bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_EnableChn(VO_LAYER VoLayer, VO_CHN VoChn);
861bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_DisableChn(VO_LAYER VoLayer, VO_CHN VoChn);
871bd4fe43Sopenharmony_ci
881bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetChnParam(VO_LAYER VoLayer, VO_CHN VoChn, const VO_CHN_PARAM_S *pstChnParam);
891bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetChnParam(VO_LAYER VoLayer, VO_CHN VoChn, VO_CHN_PARAM_S *pstChnParam);
901bd4fe43Sopenharmony_ci
911bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetChnDisplayPosition(VO_LAYER VoLayer, VO_CHN VoChn, const POINT_S *pstDispPos);
921bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetChnDisplayPosition(VO_LAYER VoLayer, VO_CHN VoChn, POINT_S *pstDispPos);
931bd4fe43Sopenharmony_ci
941bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetChnFrameRate(VO_LAYER VoLayer, VO_CHN VoChn, HI_S32 s32ChnFrmRate);
951bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetChnFrameRate(VO_LAYER VoLayer, VO_CHN VoChn, HI_S32 *ps32ChnFrmRate);
961bd4fe43Sopenharmony_ci
971bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetChnFrame(VO_LAYER VoLayer, VO_CHN VoChn, VIDEO_FRAME_INFO_S *pstFrame, HI_S32 s32MilliSec);
981bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_ReleaseChnFrame(VO_LAYER VoLayer, VO_CHN VoChn, const VIDEO_FRAME_INFO_S *pstFrame);
991bd4fe43Sopenharmony_ci
1001bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_PauseChn(VO_LAYER VoLayer, VO_CHN VoChn);
1011bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_ResumeChn(VO_LAYER VoLayer, VO_CHN VoChn);
1021bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_StepChn(VO_LAYER VoLayer, VO_CHN VoChn);
1031bd4fe43Sopenharmony_ci
1041bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_RefreshChn(VO_LAYER VoLayer, VO_CHN VoChn);
1051bd4fe43Sopenharmony_ci
1061bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_ShowChn(VO_LAYER VoLayer, VO_CHN VoChn);
1071bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_HideChn(VO_LAYER VoLayer, VO_CHN VoChn);
1081bd4fe43Sopenharmony_ci
1091bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetZoomInWindow(VO_LAYER VoLayer, VO_CHN VoChn, const VO_ZOOM_ATTR_S *pstZoomAttr);
1101bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetZoomInWindow(VO_LAYER VoLayer, VO_CHN VoChn, VO_ZOOM_ATTR_S *pstZoomAttr);
1111bd4fe43Sopenharmony_ci
1121bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetChnPTS(VO_LAYER VoLayer, VO_CHN VoChn, HI_U64 *pu64ChnPTS);
1131bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_QueryChnStatus(VO_LAYER VoLayer, VO_CHN VoChn, VO_QUERY_STATUS_S *pstStatus);
1141bd4fe43Sopenharmony_ci
1151bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SendFrame(VO_LAYER VoLayer, VO_CHN VoChn, VIDEO_FRAME_INFO_S *pstVFrame, HI_S32 s32MilliSec);
1161bd4fe43Sopenharmony_ci
1171bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_ClearChnBuf(VO_LAYER VoLayer, VO_CHN VoChn, HI_BOOL bClrAll);
1181bd4fe43Sopenharmony_ci
1191bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetChnBorder(VO_LAYER VoLayer, VO_CHN VoChn, const VO_BORDER_S *pstBorder);
1201bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetChnBorder(VO_LAYER VoLayer, VO_CHN VoChn, VO_BORDER_S *pstBorder);
1211bd4fe43Sopenharmony_ci
1221bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetChnBoundary(VO_LAYER VoLayer, VO_CHN VoChn, const VO_CHN_BOUNDARY_S *pstChnBoundary);
1231bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetChnBoundary(VO_LAYER VoLayer, VO_CHN VoChn, VO_CHN_BOUNDARY_S *pstChnBoundary);
1241bd4fe43Sopenharmony_ci
1251bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetChnRecvThreshold(VO_LAYER VoLayer, VO_CHN VoChn, HI_U32 u32Threshold);
1261bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetChnRecvThreshold(VO_LAYER VoLayer, VO_CHN VoChn, HI_U32 *pu32Threshold);
1271bd4fe43Sopenharmony_ci
1281bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetChnRotation(VO_LAYER VoLayer, VO_CHN VoChn, ROTATION_E enRotation);
1291bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetChnRotation(VO_LAYER VoLayer, VO_CHN VoChn, ROTATION_E *penRotation);
1301bd4fe43Sopenharmony_ci
1311bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetChnRegionLuma(VO_LAYER VoLayer, VO_CHN VoChn, VO_REGION_INFO_S *pstRegionInfo,
1321bd4fe43Sopenharmony_ci                                  HI_U64 *pu64LumaData, HI_S32 s32MilliSec);
1331bd4fe43Sopenharmony_ci
1341bd4fe43Sopenharmony_ci/* WBC(Write Back Control) Relative Settings */
1351bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetWBCSource(VO_WBC VoWBC, const VO_WBC_SOURCE_S *pstWBCSource);
1361bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetWBCSource(VO_WBC VoWBC, VO_WBC_SOURCE_S *pstWBCSources);
1371bd4fe43Sopenharmony_ci
1381bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetWBCAttr(VO_WBC VoWBC, const VO_WBC_ATTR_S *pstWBCAttr);
1391bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetWBCAttr(VO_WBC VoWBC, VO_WBC_ATTR_S *pstWBCAttr);
1401bd4fe43Sopenharmony_ci
1411bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_EnableWBC(VO_WBC VoWBC);
1421bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_DisableWBC(VO_WBC VoWBC);
1431bd4fe43Sopenharmony_ci
1441bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetWBCMode(VO_WBC VoWBC, VO_WBC_MODE_E enWBCMode);
1451bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetWBCMode(VO_WBC VoWBC, VO_WBC_MODE_E *penWBCMode);
1461bd4fe43Sopenharmony_ci
1471bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetWBCDepth(VO_WBC VoWBC, HI_U32 u32Depth);
1481bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetWBCDepth(VO_WBC VoWBC, HI_U32 *pu32Depth);
1491bd4fe43Sopenharmony_ci
1501bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetWBCFrame(VO_WBC VoWBC, VIDEO_FRAME_INFO_S *pstVFrame, HI_S32 s32MilliSec);
1511bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_ReleaseWBCFrame(VO_WBC VoWBC, const VIDEO_FRAME_INFO_S *pstVFrame);
1521bd4fe43Sopenharmony_ci
1531bd4fe43Sopenharmony_ci/* Graphic Relative Settings */
1541bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_BindGraphicLayer(GRAPHIC_LAYER GraphicLayer, VO_DEV VoDev);
1551bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_UnBindGraphicLayer(GRAPHIC_LAYER GraphicLayer, VO_DEV VoDev);
1561bd4fe43Sopenharmony_ci
1571bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetGraphicLayerCSC(GRAPHIC_LAYER GraphicLayer, const VO_CSC_S *pstCSC);
1581bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetGraphicLayerCSC(GRAPHIC_LAYER GraphicLayer, VO_CSC_S *pstCSC);
1591bd4fe43Sopenharmony_ci
1601bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetDevFrameRate(VO_DEV VoDev, HI_U32 u32FrameRate);
1611bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetDevFrameRate(VO_DEV VoDev, HI_U32 *pu32FrameRate);
1621bd4fe43Sopenharmony_ci
1631bd4fe43Sopenharmony_ci/* Module Parameter Settings */
1641bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetModParam(const VO_MOD_PARAM_S *pstModParam);
1651bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetModParam(VO_MOD_PARAM_S *pstModParam);
1661bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetVtth(VO_DEV VoDev, HI_U32 u32Vtth);
1671bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetVtth(VO_DEV VoDev, HI_U32 *pu32Vtth);
1681bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetVtth2(VO_DEV VoDev, HI_U32 u32Vtth);
1691bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetVtth2(VO_DEV VoDev, HI_U32 *pu32Vtth);
1701bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetChnMirror(VO_LAYER VoLayer, VO_CHN VoChn, VO_MIRROR_MODE_E enMirrorMode);
1711bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetChnMirror(VO_LAYER VoLayer, VO_CHN VoChn, VO_MIRROR_MODE_E *penMirrorMode);
1721bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetVideoLayerEarlyDisplay(VO_LAYER VoLayer, HI_BOOL bEarlyDisplayEn);
1731bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetVideoLayerEarlyDisplay(VO_LAYER VoLayer, HI_BOOL *pbEarlyDisplayEn);
1741bd4fe43Sopenharmony_ci
1751bd4fe43Sopenharmony_ci#ifdef __cplusplus
1761bd4fe43Sopenharmony_ci#if __cplusplus
1771bd4fe43Sopenharmony_ci}
1781bd4fe43Sopenharmony_ci#endif
1791bd4fe43Sopenharmony_ci#endif /* __cplusplus */
1801bd4fe43Sopenharmony_ci
1811bd4fe43Sopenharmony_ci#endif /* __MPI_VO_H__ */
182