xref: /rockchip-linux_mpp/osal/driver/inc/mpp_vcodec_client.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
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