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: I06f071055caa1c4bab2341258c69398d46671ed3
113 lines
2.5 KiB
C
113 lines
2.5 KiB
C
/* SPDX-License-Identifier: Apache-2.0 OR MIT */
|
|
/*
|
|
* Copyright (c) 2025 Rockchip Electronics Co., Ltd.
|
|
*/
|
|
|
|
#define MODULE_TAG "kmpp_venc_test"
|
|
|
|
#include "mpp_debug.h"
|
|
#include "kmpp_frame.h"
|
|
#include "kmpp_packet.h"
|
|
#include "kmpp_venc.h"
|
|
#include "rk_venc_kcfg.h"
|
|
|
|
int main()
|
|
{
|
|
KmppVenc venc = NULL;
|
|
MppVencKcfg cfg = NULL;
|
|
KmppFrame frm = NULL;
|
|
KmppPacket pkt = NULL;
|
|
rk_s32 ret = rk_ok;
|
|
|
|
mpp_log(MODULE_TAG " start\n");
|
|
|
|
ret = kmpp_venc_get(&venc);
|
|
if (ret) {
|
|
mpp_err(MODULE_TAG " get venc failed\n");
|
|
return ret;
|
|
}
|
|
|
|
mpp_venc_kcfg_init(&cfg, MPP_VENC_KCFG_TYPE_INIT);
|
|
mpp_venc_kcfg_set_u32(cfg, "type", MPP_CTX_ENC);
|
|
mpp_venc_kcfg_set_u32(cfg, "coding", MPP_VIDEO_CodingAVC);
|
|
mpp_venc_kcfg_set_s32(cfg, "chan_id", 0);
|
|
mpp_venc_kcfg_set_u32(cfg, "buf_size", 4096);
|
|
mpp_venc_kcfg_set_u32(cfg, "max_width", 1920);
|
|
mpp_venc_kcfg_set_u32(cfg, "max_height", 1080);
|
|
mpp_venc_kcfg_set_u32(cfg, "max_lt_cnt", 0);
|
|
mpp_venc_kcfg_set_s32(cfg, "input_timeout", -1);
|
|
|
|
ret = kmpp_venc_init(venc, cfg);
|
|
if (ret) {
|
|
mpp_err(MODULE_TAG " init venc failed\n");
|
|
return ret;
|
|
}
|
|
|
|
mpp_venc_kcfg_deinit(cfg);
|
|
cfg = NULL;
|
|
|
|
mpp_venc_kcfg_init(&cfg, MPP_VENC_KCFG_TYPE_ST_CFG);
|
|
|
|
ret = kmpp_venc_get_cfg(venc, cfg);
|
|
if (ret) {
|
|
mpp_err(MODULE_TAG " get venc cfg failed\n");
|
|
return ret;
|
|
}
|
|
|
|
ret = kmpp_venc_set_cfg(venc, cfg);
|
|
if (ret) {
|
|
mpp_err(MODULE_TAG " set venc cfg failed\n");
|
|
return ret;
|
|
}
|
|
|
|
mpp_venc_kcfg_deinit(cfg);
|
|
cfg = NULL;
|
|
|
|
ret = kmpp_venc_start(venc);
|
|
if (ret) {
|
|
mpp_err(MODULE_TAG " start venc failed\n");
|
|
return ret;
|
|
}
|
|
|
|
kmpp_frame_get(&frm);
|
|
|
|
ret = kmpp_venc_put_frm(venc, frm);
|
|
if (ret) {
|
|
mpp_err(MODULE_TAG " put frm failed\n");
|
|
return ret;
|
|
}
|
|
|
|
kmpp_frame_put(frm);
|
|
frm = NULL;
|
|
|
|
ret = kmpp_venc_get_pkt(venc, &pkt);
|
|
if (ret) {
|
|
mpp_err(MODULE_TAG " get pkt failed\n");
|
|
return ret;
|
|
}
|
|
|
|
if (pkt) {
|
|
ret = kmpp_venc_put_pkt(venc, pkt);
|
|
if (ret) {
|
|
mpp_err(MODULE_TAG " put pkt failed\n");
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
ret = kmpp_venc_stop(venc);
|
|
if (ret) {
|
|
mpp_err(MODULE_TAG " stop venc failed\n");
|
|
return ret;
|
|
}
|
|
|
|
ret = kmpp_venc_deinit(venc);
|
|
if (ret) {
|
|
mpp_err(MODULE_TAG " deinit venc failed\n");
|
|
return ret;
|
|
}
|
|
|
|
ret = kmpp_venc_put(venc);
|
|
|
|
mpp_log(MODULE_TAG " %s\n", ret ? "failed" : "success");
|
|
return ret;
|
|
}
|