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_vdec_test"
7
8 #include <stdio.h>
9
10 #include "mpp_mem.h"
11 #include "mpp_debug.h"
12
13 #include "kmpp_frame.h"
14 #include "kmpp_packet.h"
15 #include "kmpp_vdec.h"
16 #include "rk_vdec_kcfg.h"
17
main(int argc,char ** argv)18 int main(int argc, char **argv)
19 {
20 KmppVdec vdec = NULL;
21 char *path = argv[1];
22 MppVdecKcfg cfg;
23 rk_s32 ret = rk_ok;
24
25 mpp_log(MODULE_TAG " start path %s\n", path);
26
27 ret = kmpp_vdec_get(&vdec);
28 if (ret) {
29 mpp_err(MODULE_TAG " get vdec failed\n");
30 return ret;
31 }
32
33 mpp_vdec_kcfg_init(&cfg, MPP_VDEC_KCFG_TYPE_INIT);
34 mpp_vdec_kcfg_set_u32(cfg, "type", MPP_CTX_ENC);
35 mpp_vdec_kcfg_set_u32(cfg, "coding", MPP_VIDEO_CodingAVC);
36
37 ret = kmpp_vdec_init(vdec, cfg);
38 if (ret) {
39 mpp_err(MODULE_TAG " init vdec failed\n");
40 return ret;
41 }
42 mpp_vdec_kcfg_deinit(cfg);
43 cfg = NULL;
44
45 ret = kmpp_vdec_start(vdec);
46 if (ret) {
47 mpp_err(MODULE_TAG " start vdec failed\n");
48 return ret;
49 }
50
51 if (path) {
52 FILE *fp = fopen(path, "rb");
53 char *buf = NULL;
54 rk_s32 size = 0;
55
56 if (fp) {
57 fseek(fp, 0L, SEEK_END);
58 size = ftell(fp);
59 fseek(fp, 0L, SEEK_SET);
60
61 buf = mpp_calloc(char, size);
62
63 if (buf) {
64 KmppPacket packet = NULL;
65 KmppFrame frame = NULL;
66 KmppShmPtr sptr;
67
68 fread(buf, 1, size, fp);
69
70 kmpp_packet_get(&packet);
71
72 sptr.uptr = buf;
73 sptr.kaddr = 0;
74 kmpp_packet_set_data(packet, &sptr);
75 kmpp_packet_set_size(packet, size);
76 kmpp_packet_set_pos(packet, &sptr);
77 kmpp_packet_set_length(packet, size);
78
79 kmpp_vdec_put_pkt(vdec, packet);
80
81 kmpp_vdec_get_frm(vdec, &frame);
82
83 kmpp_packet_put(packet);
84 kmpp_frame_put(frame);
85 }
86
87 MPP_FREE(buf);
88 fclose(fp);
89 }
90 }
91
92 ret = kmpp_vdec_stop(vdec);
93 if (ret) {
94 mpp_err(MODULE_TAG " stop vdec failed\n");
95 return ret;
96 }
97
98 ret = kmpp_vdec_deinit(vdec);
99 if (ret) {
100 mpp_err(MODULE_TAG " deinit vdec failed\n");
101 return ret;
102 }
103
104 ret = kmpp_vdec_put(vdec);
105
106 mpp_log(MODULE_TAG " %s\n", ret ? "failed" : "success");
107 return ret;
108 }
109