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_VDEC_H__
171bd4fe43Sopenharmony_ci#define __MPI_VDEC_H__
181bd4fe43Sopenharmony_ci
191bd4fe43Sopenharmony_ci#include "hi_common.h"
201bd4fe43Sopenharmony_ci#include "hi_comm_video.h"
211bd4fe43Sopenharmony_ci#include "hi_comm_vb.h"
221bd4fe43Sopenharmony_ci#include "hi_comm_vdec.h"
231bd4fe43Sopenharmony_ci
241bd4fe43Sopenharmony_ci#ifdef __cplusplus
251bd4fe43Sopenharmony_ci#if __cplusplus
261bd4fe43Sopenharmony_ciextern "C" {
271bd4fe43Sopenharmony_ci#endif
281bd4fe43Sopenharmony_ci#endif /* End of #ifdef __cplusplus */
291bd4fe43Sopenharmony_ci
301bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_CreateChn(VDEC_CHN VdChn, const VDEC_CHN_ATTR_S *pstAttr);
311bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_DestroyChn(VDEC_CHN VdChn);
321bd4fe43Sopenharmony_ci
331bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_GetChnAttr(VDEC_CHN VdChn, VDEC_CHN_ATTR_S *pstAttr);
341bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_SetChnAttr(VDEC_CHN VdChn, const VDEC_CHN_ATTR_S *pstAttr);
351bd4fe43Sopenharmony_ci
361bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_StartRecvStream(VDEC_CHN VdChn);
371bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_StopRecvStream(VDEC_CHN VdChn);
381bd4fe43Sopenharmony_ci
391bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_QueryStatus(VDEC_CHN VdChn, VDEC_CHN_STATUS_S *pstStatus);
401bd4fe43Sopenharmony_ci
411bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_GetFd(VDEC_CHN VdChn);
421bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_CloseFd(VDEC_CHN VdChn);
431bd4fe43Sopenharmony_ci
441bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_ResetChn(VDEC_CHN VdChn);
451bd4fe43Sopenharmony_ci
461bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_SetChnParam(VDEC_CHN VdChn, const VDEC_CHN_PARAM_S *pstParam);
471bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_GetChnParam(VDEC_CHN VdChn, VDEC_CHN_PARAM_S *pstParam);
481bd4fe43Sopenharmony_ci
491bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_SetProtocolParam(VDEC_CHN VdChn, const VDEC_PRTCL_PARAM_S *pstParam);
501bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_GetProtocolParam(VDEC_CHN VdChn, VDEC_PRTCL_PARAM_S *pstParam);
511bd4fe43Sopenharmony_ci
521bd4fe43Sopenharmony_ci/* s32MilliSec: -1 is block,0 is no block,other positive number is timeout */
531bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_SendStream(VDEC_CHN VdChn, const VDEC_STREAM_S *pstStream, HI_S32 s32MilliSec);
541bd4fe43Sopenharmony_ci
551bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_GetFrame(VDEC_CHN VdChn, VIDEO_FRAME_INFO_S *pstFrameInfo, HI_S32 s32MilliSec);
561bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_ReleaseFrame(VDEC_CHN VdChn, const VIDEO_FRAME_INFO_S *pstFrameInfo);
571bd4fe43Sopenharmony_ci
581bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_GetUserData(VDEC_CHN VdChn, VDEC_USERDATA_S *pstUserData, HI_S32 s32MilliSec);
591bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_ReleaseUserData(VDEC_CHN VdChn, const VDEC_USERDATA_S *pstUserData);
601bd4fe43Sopenharmony_ci
611bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_SetUserPic(VDEC_CHN VdChn, const VIDEO_FRAME_INFO_S *pstUsrPic);
621bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_EnableUserPic(VDEC_CHN VdChn, HI_BOOL bInstant);
631bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_DisableUserPic(VDEC_CHN VdChn);
641bd4fe43Sopenharmony_ci
651bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_SetDisplayMode(VDEC_CHN VdChn, VIDEO_DISPLAY_MODE_E enDisplayMode);
661bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_GetDisplayMode(VDEC_CHN VdChn, VIDEO_DISPLAY_MODE_E *penDisplayMode);
671bd4fe43Sopenharmony_ci
681bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_SetRotation(VDEC_CHN VdChn, ROTATION_E enRotation);
691bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_GetRotation(VDEC_CHN VdChn, ROTATION_E *penRotation);
701bd4fe43Sopenharmony_ci
711bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_AttachVbPool(VDEC_CHN VdChn, const VDEC_CHN_POOL_S *pstPool);
721bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_DetachVbPool(VDEC_CHN VdChn);
731bd4fe43Sopenharmony_ci
741bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_SetUserDataAttr(VDEC_CHN VdChn, const VDEC_USER_DATA_ATTR_S *pstUserDataAttr);
751bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_GetUserDataAttr(VDEC_CHN VdChn, VDEC_USER_DATA_ATTR_S *pstUserDataAttr);
761bd4fe43Sopenharmony_ci
771bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_SetModParam(const VDEC_MOD_PARAM_S *pstModParam);
781bd4fe43Sopenharmony_ciHI_S32 HI_MPI_VDEC_GetModParam(VDEC_MOD_PARAM_S *pstModParam);
791bd4fe43Sopenharmony_ci
801bd4fe43Sopenharmony_ci#ifdef __cplusplus
811bd4fe43Sopenharmony_ci#if __cplusplus
821bd4fe43Sopenharmony_ci}
831bd4fe43Sopenharmony_ci#endif
841bd4fe43Sopenharmony_ci#endif /* End of #ifdef __cplusplus */
851bd4fe43Sopenharmony_ci
861bd4fe43Sopenharmony_ci#endif /* End of #ifndef  __MPI_VDEC_H__ */
871bd4fe43Sopenharmony_ci
88