1 /* SPDX-License-Identifier: Apache-2.0 OR MIT */
2 /*
3 * Copyright (c) 2025 Rockchip Electronics Co., Ltd.
4 */
5
6 #define MODULE_TAG "kmpp_venc_test"
7
8 #include "mpp_debug.h"
9 #include "kmpp_frame.h"
10 #include "kmpp_packet.h"
11 #include "kmpp_venc.h"
12 #include "rk_venc_kcfg.h"
13
main()14 int main()
15 {
16 KmppVenc venc = NULL;
17 MppVencKcfg cfg = NULL;
18 KmppFrame frm = NULL;
19 KmppPacket pkt = NULL;
20 rk_s32 ret = rk_ok;
21
22 mpp_log(MODULE_TAG " start\n");
23
24 ret = kmpp_venc_get(&venc);
25 if (ret) {
26 mpp_err(MODULE_TAG " get venc failed\n");
27 return ret;
28 }
29
30 mpp_venc_kcfg_init(&cfg, MPP_VENC_KCFG_TYPE_INIT);
31 mpp_venc_kcfg_set_u32(cfg, "type", MPP_CTX_ENC);
32 mpp_venc_kcfg_set_u32(cfg, "coding", MPP_VIDEO_CodingAVC);
33 mpp_venc_kcfg_set_s32(cfg, "chan_id", 0);
34 mpp_venc_kcfg_set_u32(cfg, "buf_size", 4096);
35 mpp_venc_kcfg_set_u32(cfg, "max_width", 1920);
36 mpp_venc_kcfg_set_u32(cfg, "max_height", 1080);
37 mpp_venc_kcfg_set_u32(cfg, "max_lt_cnt", 0);
38 mpp_venc_kcfg_set_s32(cfg, "input_timeout", -1);
39
40 ret = kmpp_venc_init(venc, cfg);
41 if (ret) {
42 mpp_err(MODULE_TAG " init venc failed\n");
43 return ret;
44 }
45
46 mpp_venc_kcfg_deinit(cfg);
47 cfg = NULL;
48
49 mpp_venc_kcfg_init(&cfg, MPP_VENC_KCFG_TYPE_ST_CFG);
50
51 ret = kmpp_venc_get_cfg(venc, cfg);
52 if (ret) {
53 mpp_err(MODULE_TAG " get venc cfg failed\n");
54 return ret;
55 }
56
57 ret = kmpp_venc_set_cfg(venc, cfg);
58 if (ret) {
59 mpp_err(MODULE_TAG " set venc cfg failed\n");
60 return ret;
61 }
62
63 mpp_venc_kcfg_deinit(cfg);
64 cfg = NULL;
65
66 ret = kmpp_venc_start(venc);
67 if (ret) {
68 mpp_err(MODULE_TAG " start venc failed\n");
69 return ret;
70 }
71
72 kmpp_frame_get(&frm);
73
74 ret = kmpp_venc_put_frm(venc, frm);
75 if (ret) {
76 mpp_err(MODULE_TAG " put frm failed\n");
77 return ret;
78 }
79
80 kmpp_frame_put(frm);
81 frm = NULL;
82
83 ret = kmpp_venc_get_pkt(venc, &pkt);
84 if (ret) {
85 mpp_err(MODULE_TAG " get pkt failed\n");
86 return ret;
87 }
88
89 if (pkt) {
90 ret = kmpp_venc_put_pkt(venc, pkt);
91 if (ret) {
92 mpp_err(MODULE_TAG " put pkt failed\n");
93 return ret;
94 }
95 }
96
97 ret = kmpp_venc_stop(venc);
98 if (ret) {
99 mpp_err(MODULE_TAG " stop venc failed\n");
100 return ret;
101 }
102
103 ret = kmpp_venc_deinit(venc);
104 if (ret) {
105 mpp_err(MODULE_TAG " deinit venc failed\n");
106 return ret;
107 }
108
109 ret = kmpp_venc_put(venc);
110
111 mpp_log(MODULE_TAG " %s\n", ret ? "failed" : "success");
112 return ret;
113 }
114