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 281bd4fe43Sopenharmony_ci/* Video Relative Settings */ 291bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetVideoLayerAttr(VO_LAYER VoLayer, const VO_VIDEO_LAYER_ATTR_S *pstLayerAttr); 301bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetVideoLayerAttr(VO_LAYER VoLayer, VO_VIDEO_LAYER_ATTR_S *pstLayerAttr); 311bd4fe43Sopenharmony_ci 321bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_EnableVideoLayer(VO_LAYER VoLayer); 331bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_DisableVideoLayer(VO_LAYER VoLayer); 341bd4fe43Sopenharmony_ci 351bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_BindVideoLayer(VO_LAYER VoLayer, VO_DEV VoDev); 361bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_UnBindVideoLayer(VO_LAYER VoLayer, VO_DEV VoDev); 371bd4fe43Sopenharmony_ci 381bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetVideoLayerPriority(VO_LAYER VoLayer, HI_U32 u32Priority); 391bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetVideoLayerPriority(VO_LAYER VoLayer, HI_U32 *pu32Priority); 401bd4fe43Sopenharmony_ci 411bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetVideoLayerCSC(VO_LAYER VoLayer, const VO_CSC_S *pstVideoCSC); 421bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetVideoLayerCSC(VO_LAYER VoLayer, VO_CSC_S *pstVideoCSC); 431bd4fe43Sopenharmony_ci 441bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetVideoLayerPartitionMode(VO_LAYER VoLayer, VO_PART_MODE_E enPartMode); 451bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetVideoLayerPartitionMode(VO_LAYER VoLayer, VO_PART_MODE_E *penPartMode); 461bd4fe43Sopenharmony_ci 471bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_BatchBegin(VO_LAYER VoLayer); 481bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_BatchEnd(VO_LAYER VoLayer); 491bd4fe43Sopenharmony_ci 501bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetVideoLayerBoundary(VO_LAYER VoLayer, const VO_LAYER_BOUNDARY_S *pstLayerBoundary); 511bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetVideoLayerBoundary(VO_LAYER VoLayer, VO_LAYER_BOUNDARY_S *pstLayerBoundary); 521bd4fe43Sopenharmony_ci 531bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetVideoLayerParam(VO_LAYER VoLayer, const VO_LAYER_PARAM_S *pstLayerParam); 541bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetVideoLayerParam(VO_LAYER VoLayer, VO_LAYER_PARAM_S *pstLayerParam); 551bd4fe43Sopenharmony_ci 561bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetVideoLayerDecompress(VO_LAYER VoLayer, HI_BOOL bSupportDecompress); 571bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetVideoLayerDecompress(VO_LAYER VoLayer, HI_BOOL *pbSupportDecompress); 581bd4fe43Sopenharmony_ci 591bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetVideoLayerCrop(VO_LAYER VoLayer, const CROP_INFO_S *pstCropInfo); 601bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetVideoLayerCrop(VO_LAYER VoLayer, CROP_INFO_S *pstCropInfo); 611bd4fe43Sopenharmony_ci 621bd4fe43Sopenharmony_ci/* Display relative operations */ 631bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetPlayToleration(VO_LAYER VoLayer, HI_U32 u32Toleration); 641bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetPlayToleration(VO_LAYER VoLayer, HI_U32 *pu32Toleration); 651bd4fe43Sopenharmony_ci 661bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetScreenFrame(VO_LAYER VoLayer, VIDEO_FRAME_INFO_S *pstVFrame, HI_S32 s32MilliSec); 671bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_ReleaseScreenFrame(VO_LAYER VoLayer, const VIDEO_FRAME_INFO_S *pstVFrame); 681bd4fe43Sopenharmony_ci 691bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetDisplayBufLen(VO_LAYER VoLayer, HI_U32 u32BufLen); 701bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetDisplayBufLen(VO_LAYER VoLayer, HI_U32 *pu32BufLen); 711bd4fe43Sopenharmony_ci 721bd4fe43Sopenharmony_ci/* Channel Relative Operations */ 731bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetChnAttr(VO_LAYER VoLayer, VO_CHN VoChn, const VO_CHN_ATTR_S *pstChnAttr); 741bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetChnAttr(VO_LAYER VoLayer, VO_CHN VoChn, VO_CHN_ATTR_S *pstChnAttr); 751bd4fe43Sopenharmony_ci 761bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_EnableChn(VO_LAYER VoLayer, VO_CHN VoChn); 771bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_DisableChn(VO_LAYER VoLayer, VO_CHN VoChn); 781bd4fe43Sopenharmony_ci 791bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetChnParam(VO_LAYER VoLayer, VO_CHN VoChn, const VO_CHN_PARAM_S *pstChnParam); 801bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetChnParam(VO_LAYER VoLayer, VO_CHN VoChn, VO_CHN_PARAM_S *pstChnParam); 811bd4fe43Sopenharmony_ci 821bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetChnDisplayPosition(VO_LAYER VoLayer, VO_CHN VoChn, const POINT_S *pstDispPos); 831bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetChnDisplayPosition(VO_LAYER VoLayer, VO_CHN VoChn, POINT_S *pstDispPos); 841bd4fe43Sopenharmony_ci 851bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetChnFrameRate(VO_LAYER VoLayer, VO_CHN VoChn, HI_S32 s32ChnFrmRate); 861bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetChnFrameRate(VO_LAYER VoLayer, VO_CHN VoChn, HI_S32 *ps32ChnFrmRate); 871bd4fe43Sopenharmony_ci 881bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetChnFrame(VO_LAYER VoLayer, VO_CHN VoChn, VIDEO_FRAME_INFO_S *pstFrame, HI_S32 s32MilliSec); 891bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_ReleaseChnFrame(VO_LAYER VoLayer, VO_CHN VoChn, const VIDEO_FRAME_INFO_S *pstFrame); 901bd4fe43Sopenharmony_ci 911bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_PauseChn(VO_LAYER VoLayer, VO_CHN VoChn); 921bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_ResumeChn(VO_LAYER VoLayer, VO_CHN VoChn); 931bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_StepChn(VO_LAYER VoLayer, VO_CHN VoChn); 941bd4fe43Sopenharmony_ci 951bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_RefreshChn(VO_LAYER VoLayer, VO_CHN VoChn); 961bd4fe43Sopenharmony_ci 971bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_ShowChn(VO_LAYER VoLayer, VO_CHN VoChn); 981bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_HideChn(VO_LAYER VoLayer, VO_CHN VoChn); 991bd4fe43Sopenharmony_ci 1001bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetZoomInWindow(VO_LAYER VoLayer, VO_CHN VoChn, const VO_ZOOM_ATTR_S *pstZoomAttr); 1011bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetZoomInWindow(VO_LAYER VoLayer, VO_CHN VoChn, VO_ZOOM_ATTR_S *pstZoomAttr); 1021bd4fe43Sopenharmony_ci 1031bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetChnPTS(VO_LAYER VoLayer, VO_CHN VoChn, HI_U64 *pu64ChnPTS); 1041bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_QueryChnStatus(VO_LAYER VoLayer, VO_CHN VoChn, VO_QUERY_STATUS_S *pstStatus); 1051bd4fe43Sopenharmony_ci 1061bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SendFrame(VO_LAYER VoLayer, VO_CHN VoChn, VIDEO_FRAME_INFO_S *pstVFrame, HI_S32 s32MilliSec); 1071bd4fe43Sopenharmony_ci 1081bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_ClearChnBuf(VO_LAYER VoLayer, VO_CHN VoChn, HI_BOOL bClrAll); 1091bd4fe43Sopenharmony_ci 1101bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetChnBorder(VO_LAYER VoLayer, VO_CHN VoChn, const VO_BORDER_S *pstBorder); 1111bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetChnBorder(VO_LAYER VoLayer, VO_CHN VoChn, VO_BORDER_S *pstBorder); 1121bd4fe43Sopenharmony_ci 1131bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetChnBoundary(VO_LAYER VoLayer, VO_CHN VoChn, const VO_CHN_BOUNDARY_S *pstChnBoundary); 1141bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetChnBoundary(VO_LAYER VoLayer, VO_CHN VoChn, VO_CHN_BOUNDARY_S *pstChnBoundary); 1151bd4fe43Sopenharmony_ci 1161bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetChnRecvThreshold(VO_LAYER VoLayer, VO_CHN VoChn, HI_U32 u32Threshold); 1171bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetChnRecvThreshold(VO_LAYER VoLayer, VO_CHN VoChn, HI_U32 *pu32Threshold); 1181bd4fe43Sopenharmony_ci 1191bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetChnRotation(VO_LAYER VoLayer, VO_CHN VoChn, ROTATION_E enRotation); 1201bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetChnRotation(VO_LAYER VoLayer, VO_CHN VoChn, ROTATION_E *penRotation); 1211bd4fe43Sopenharmony_ci 1221bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetChnRegionLuma(VO_LAYER VoLayer, VO_CHN VoChn, VO_REGION_INFO_S *pstRegionInfo, 1231bd4fe43Sopenharmony_ci HI_U64 *pu64LumaData, HI_S32 s32MilliSec); 1241bd4fe43Sopenharmony_ci 1251bd4fe43Sopenharmony_ci/* WBC(Write Back Control) Relative Settings */ 1261bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetWBCSource(VO_WBC VoWBC, const VO_WBC_SOURCE_S *pstWBCSource); 1271bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetWBCSource(VO_WBC VoWBC, VO_WBC_SOURCE_S *pstWBCSources); 1281bd4fe43Sopenharmony_ci 1291bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetWBCAttr(VO_WBC VoWBC, const VO_WBC_ATTR_S *pstWBCAttr); 1301bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetWBCAttr(VO_WBC VoWBC, VO_WBC_ATTR_S *pstWBCAttr); 1311bd4fe43Sopenharmony_ci 1321bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_EnableWBC(VO_WBC VoWBC); 1331bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_DisableWBC(VO_WBC VoWBC); 1341bd4fe43Sopenharmony_ci 1351bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetWBCMode(VO_WBC VoWBC, VO_WBC_MODE_E enWBCMode); 1361bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetWBCMode(VO_WBC VoWBC, VO_WBC_MODE_E *penWBCMode); 1371bd4fe43Sopenharmony_ci 1381bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetWBCDepth(VO_WBC VoWBC, HI_U32 u32Depth); 1391bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetWBCDepth(VO_WBC VoWBC, HI_U32 *pu32Depth); 1401bd4fe43Sopenharmony_ci 1411bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetWBCFrame(VO_WBC VoWBC, VIDEO_FRAME_INFO_S *pstVFrame, HI_S32 s32MilliSec); 1421bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_ReleaseWBCFrame(VO_WBC VoWBC, const VIDEO_FRAME_INFO_S *pstVFrame); 1431bd4fe43Sopenharmony_ci 1441bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetChnMirror(VO_LAYER VoLayer, VO_CHN VoChn, VO_MIRROR_MODE_E enMirrorMode); 1451bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetChnMirror(VO_LAYER VoLayer, VO_CHN VoChn, VO_MIRROR_MODE_E *penMirrorMode); 1461bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_SetVideoLayerEarlyDisplay(VO_LAYER VoLayer, HI_BOOL bEarlyDisplayEn); 1471bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VO_GetVideoLayerEarlyDisplay(VO_LAYER VoLayer, HI_BOOL *pbEarlyDisplayEn); 1481bd4fe43Sopenharmony_ci 1491bd4fe43Sopenharmony_ci#ifdef __cplusplus 1501bd4fe43Sopenharmony_ci#if __cplusplus 1511bd4fe43Sopenharmony_ci} 1521bd4fe43Sopenharmony_ci#endif 1531bd4fe43Sopenharmony_ci#endif /* __cplusplus */ 1541bd4fe43Sopenharmony_ci 1551bd4fe43Sopenharmony_ci#endif /* __MPI_VO_H__ */ 156