1 /* 2 * Copyright (c) 2022 HiSilicon (Shanghai) Technologies CO., LIMITED. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef __MPI_VDEC_H__ 17 #define __MPI_VDEC_H__ 18 19 #include "hi_common.h" 20 #include "hi_comm_video.h" 21 #include "hi_comm_vb.h" 22 #include "hi_comm_vdec.h" 23 24 #ifdef __cplusplus 25 #if __cplusplus 26 extern "C" { 27 #endif 28 #endif /* End of #ifdef __cplusplus */ 29 30 HI_S32 HI_MPI_VDEC_CreateChn(VDEC_CHN VdChn, const VDEC_CHN_ATTR_S *pstAttr); 31 HI_S32 HI_MPI_VDEC_DestroyChn(VDEC_CHN VdChn); 32 33 HI_S32 HI_MPI_VDEC_GetChnAttr(VDEC_CHN VdChn, VDEC_CHN_ATTR_S *pstAttr); 34 HI_S32 HI_MPI_VDEC_SetChnAttr(VDEC_CHN VdChn, const VDEC_CHN_ATTR_S *pstAttr); 35 36 HI_S32 HI_MPI_VDEC_StartRecvStream(VDEC_CHN VdChn); 37 HI_S32 HI_MPI_VDEC_StopRecvStream(VDEC_CHN VdChn); 38 39 HI_S32 HI_MPI_VDEC_QueryStatus(VDEC_CHN VdChn, VDEC_CHN_STATUS_S *pstStatus); 40 41 HI_S32 HI_MPI_VDEC_GetFd(VDEC_CHN VdChn); 42 HI_S32 HI_MPI_VDEC_CloseFd(VDEC_CHN VdChn); 43 44 HI_S32 HI_MPI_VDEC_ResetChn(VDEC_CHN VdChn); 45 46 HI_S32 HI_MPI_VDEC_SetChnParam(VDEC_CHN VdChn, const VDEC_CHN_PARAM_S *pstParam); 47 HI_S32 HI_MPI_VDEC_GetChnParam(VDEC_CHN VdChn, VDEC_CHN_PARAM_S *pstParam); 48 49 HI_S32 HI_MPI_VDEC_SetProtocolParam(VDEC_CHN VdChn, const VDEC_PRTCL_PARAM_S *pstParam); 50 HI_S32 HI_MPI_VDEC_GetProtocolParam(VDEC_CHN VdChn, VDEC_PRTCL_PARAM_S *pstParam); 51 52 /* s32MilliSec: -1 is block,0 is no block,other positive number is timeout */ 53 HI_S32 HI_MPI_VDEC_SendStream(VDEC_CHN VdChn, const VDEC_STREAM_S *pstStream, HI_S32 s32MilliSec); 54 55 HI_S32 HI_MPI_VDEC_GetFrame(VDEC_CHN VdChn, VIDEO_FRAME_INFO_S *pstFrameInfo, HI_S32 s32MilliSec); 56 HI_S32 HI_MPI_VDEC_ReleaseFrame(VDEC_CHN VdChn, const VIDEO_FRAME_INFO_S *pstFrameInfo); 57 58 HI_S32 HI_MPI_VDEC_GetUserData(VDEC_CHN VdChn, VDEC_USERDATA_S *pstUserData, HI_S32 s32MilliSec); 59 HI_S32 HI_MPI_VDEC_ReleaseUserData(VDEC_CHN VdChn, const VDEC_USERDATA_S *pstUserData); 60 61 HI_S32 HI_MPI_VDEC_SetUserPic(VDEC_CHN VdChn, const VIDEO_FRAME_INFO_S *pstUsrPic); 62 HI_S32 HI_MPI_VDEC_EnableUserPic(VDEC_CHN VdChn, HI_BOOL bInstant); 63 HI_S32 HI_MPI_VDEC_DisableUserPic(VDEC_CHN VdChn); 64 65 HI_S32 HI_MPI_VDEC_SetDisplayMode(VDEC_CHN VdChn, VIDEO_DISPLAY_MODE_E enDisplayMode); 66 HI_S32 HI_MPI_VDEC_GetDisplayMode(VDEC_CHN VdChn, VIDEO_DISPLAY_MODE_E *penDisplayMode); 67 68 HI_S32 HI_MPI_VDEC_SetRotation(VDEC_CHN VdChn, ROTATION_E enRotation); 69 HI_S32 HI_MPI_VDEC_GetRotation(VDEC_CHN VdChn, ROTATION_E *penRotation); 70 71 HI_S32 HI_MPI_VDEC_AttachVbPool(VDEC_CHN VdChn, const VDEC_CHN_POOL_S *pstPool); 72 HI_S32 HI_MPI_VDEC_DetachVbPool(VDEC_CHN VdChn); 73 74 HI_S32 HI_MPI_VDEC_SetUserDataAttr(VDEC_CHN VdChn, const VDEC_USER_DATA_ATTR_S *pstUserDataAttr); 75 HI_S32 HI_MPI_VDEC_GetUserDataAttr(VDEC_CHN VdChn, VDEC_USER_DATA_ATTR_S *pstUserDataAttr); 76 77 HI_S32 HI_MPI_VDEC_SetModParam(const VDEC_MOD_PARAM_S *pstModParam); 78 HI_S32 HI_MPI_VDEC_GetModParam(VDEC_MOD_PARAM_S *pstModParam); 79 80 #ifdef __cplusplus 81 #if __cplusplus 82 } 83 #endif 84 #endif /* End of #ifdef __cplusplus */ 85 86 #endif /* End of #ifndef __MPI_VDEC_H__ */ 87 88