xref: /rockchip-linux_mpp/kmpp/test/kmpp_venc_test.c (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
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