1 /* SPDX-License-Identifier: Apache-2.0 OR MIT */ 2 /* 3 * Copyright (c) 2024 Rockchip Electronics Co., Ltd. 4 */ 5 6 #ifndef __MPP_VCODEC_CLIENT_H__ 7 #define __MPP_VCODEC_CLIENT_H__ 8 9 #include "rk_type.h" 10 #include "mpp_err.h" 11 12 #define VCODEC_ID_BASE_COMMON (0x00000000) 13 #define VCODEC_ID_BASE_STATE (0x00000100) 14 #define VCODEC_ID_BASE_FLOW (0x00000200) 15 16 #define VCODEC_ID_BASE_INPUT (0x00000400) 17 #define VCODEC_ID_BASE_INPUT_ACK (0x00000500) 18 19 #define VCODEC_ID_BASE_OUTPUT (0x00000600) 20 #define VCODEC_ID_BASE_OUTPUT_ACK (0x00000700) 21 22 enum vcodec_event_id { 23 /* channel comment event */ 24 VCODEC_CHAN_CREATE = VCODEC_ID_BASE_COMMON, 25 VCODEC_CHAN_DESTROY, 26 VCODEC_CHAN_RESET, 27 VCODEC_CHAN_CONTROL, 28 29 /* channel state change event */ 30 VCODEC_CHAN_START = VCODEC_ID_BASE_STATE, 31 VCODEC_CHAN_STOP, 32 VCODEC_CHAN_PAUSE, 33 VCODEC_CHAN_RESUME, 34 35 /* channel data flow event */ 36 VCODEC_CHAN_BIND = VCODEC_ID_BASE_FLOW, 37 VCODEC_CHAN_UNBIND, 38 39 /* channel input side io event from external module */ 40 VCODEC_CHAN_IN_FRM_RDY = VCODEC_ID_BASE_INPUT, 41 VCODEC_CHAN_IN_FRM_START, 42 VCODEC_CHAN_IN_FRM_EARLY_END, 43 VCODEC_CHAN_IN_FRM_END, 44 45 /* channel input side ack event from vcodec module */ 46 VCODEC_CHAN_IN_BLOCK = VCODEC_ID_BASE_INPUT_ACK, 47 48 /* channel output side io event from vcodec module */ 49 VCODEC_CHAN_OUT_STRM_Q_FULL = VCODEC_ID_BASE_OUTPUT, 50 VCODEC_CHAN_OUT_STRM_BUF_RDY, 51 VCODEC_CHAN_OUT_STRM_END, 52 /* new get packet interface */ 53 VCODEC_CHAN_OUT_PKT_RDY, 54 55 /* channel input side ack event from external module */ 56 VCODEC_CHAN_OUT_BLOCK = VCODEC_ID_BASE_OUTPUT_ACK, 57 58 }; 59 60 #ifdef __cplusplus 61 extern "C" { 62 #endif 63 64 RK_S32 mpp_vcodec_open(void); 65 MPP_RET mpp_vcodec_ioctl(RK_S32 fd, RK_U32 cmd, RK_U32 ctrl_cmd, RK_U32 size, void *param); 66 MPP_RET mpp_vcodec_close(RK_S32 fd); 67 68 #ifdef __cplusplus 69 } 70 #endif 71 72 #endif 73