mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-12-26 11:17:44 +01:00
Signed-off-by: Herman Chen <herman.chen@rock-chips.com> Change-Id: I9467fa122fa0c5f3d755714ea63e089a4d86eca9
108 lines
2.4 KiB
C
108 lines
2.4 KiB
C
/* SPDX-License-Identifier: Apache-2.0 OR MIT */
|
|
/*
|
|
* Copyright (c) 2025 Rockchip Electronics Co., Ltd.
|
|
*/
|
|
|
|
#define MODULE_TAG "kmpp_vdec_test"
|
|
|
|
#include <stdio.h>
|
|
|
|
#include "mpp_mem.h"
|
|
#include "mpp_debug.h"
|
|
|
|
#include "kmpp_frame.h"
|
|
#include "kmpp_packet.h"
|
|
#include "kmpp_vdec.h"
|
|
#include "rk_vdec_kcfg.h"
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
KmppVdec vdec = NULL;
|
|
char *path = argv[1];
|
|
MppVdecKcfg cfg;
|
|
rk_s32 ret = rk_ok;
|
|
|
|
mpp_log(MODULE_TAG " start path %s\n", path);
|
|
|
|
ret = kmpp_vdec_get(&vdec);
|
|
if (ret) {
|
|
mpp_err(MODULE_TAG " get vdec failed\n");
|
|
return ret;
|
|
}
|
|
|
|
mpp_vdec_kcfg_init(&cfg, MPP_VDEC_KCFG_TYPE_INIT);
|
|
mpp_vdec_kcfg_set_u32(cfg, "type", MPP_CTX_ENC);
|
|
mpp_vdec_kcfg_set_u32(cfg, "coding", MPP_VIDEO_CodingAVC);
|
|
|
|
ret = kmpp_vdec_init(vdec, cfg);
|
|
if (ret) {
|
|
mpp_err(MODULE_TAG " init vdec failed\n");
|
|
return ret;
|
|
}
|
|
mpp_vdec_kcfg_deinit(cfg);
|
|
cfg = NULL;
|
|
|
|
ret = kmpp_vdec_start(vdec);
|
|
if (ret) {
|
|
mpp_err(MODULE_TAG " start vdec failed\n");
|
|
return ret;
|
|
}
|
|
|
|
if (path) {
|
|
FILE *fp = fopen(path, "rb");
|
|
char *buf = NULL;
|
|
rk_s32 size = 0;
|
|
|
|
if (fp) {
|
|
fseek(fp, 0L, SEEK_END);
|
|
size = ftell(fp);
|
|
fseek(fp, 0L, SEEK_SET);
|
|
|
|
buf = mpp_calloc(char, size);
|
|
|
|
if (buf) {
|
|
KmppPacket packet = NULL;
|
|
KmppFrame frame = NULL;
|
|
KmppShmPtr sptr;
|
|
|
|
fread(buf, 1, size, fp);
|
|
|
|
kmpp_packet_get(&packet);
|
|
|
|
sptr.uptr = buf;
|
|
sptr.kaddr = 0;
|
|
kmpp_packet_set_data(packet, &sptr);
|
|
kmpp_packet_set_size(packet, size);
|
|
kmpp_packet_set_pos(packet, &sptr);
|
|
kmpp_packet_set_length(packet, size);
|
|
|
|
kmpp_vdec_put_pkt(vdec, packet);
|
|
|
|
kmpp_vdec_get_frm(vdec, &frame);
|
|
|
|
kmpp_packet_put(packet);
|
|
kmpp_frame_put(frame);
|
|
}
|
|
|
|
MPP_FREE(buf);
|
|
fclose(fp);
|
|
}
|
|
}
|
|
|
|
ret = kmpp_vdec_stop(vdec);
|
|
if (ret) {
|
|
mpp_err(MODULE_TAG " stop vdec failed\n");
|
|
return ret;
|
|
}
|
|
|
|
ret = kmpp_vdec_deinit(vdec);
|
|
if (ret) {
|
|
mpp_err(MODULE_TAG " deinit vdec failed\n");
|
|
return ret;
|
|
}
|
|
|
|
ret = kmpp_vdec_put(vdec);
|
|
|
|
mpp_log(MODULE_TAG " %s\n", ret ? "failed" : "success");
|
|
return ret;
|
|
}
|