mirror of
https://github.com/nyanmisaka/mpp.git
synced 2026-01-24 02:50:38 +01:00
feat[mpp_sys_cfg_st]: Provide packaging for use on products
Change-Id: I41bbd28f4aabce5ba3735a47e65ccb71997262a2 Signed-off-by: Hongjin Li <vic.hong@rock-chips.com>
This commit is contained in:
parent
5931c416d8
commit
07bef12867
5 changed files with 316 additions and 0 deletions
75
inc/mpp_sys_cfg_st.h
Normal file
75
inc/mpp_sys_cfg_st.h
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
/* SPDX-License-Identifier: Apache-2.0 OR MIT */
|
||||
/*
|
||||
* Copyright (c) 2024 Rockchip Electronics Co., Ltd.
|
||||
*/
|
||||
|
||||
#ifndef __MPP_SYS_CFG_ST_H__
|
||||
#define __MPP_SYS_CFG_ST_H__
|
||||
|
||||
#include "rk_type.h"
|
||||
#include "mpp_err.h"
|
||||
|
||||
#include "mpp_frame.h"
|
||||
|
||||
typedef struct MppSysCfgStHStrd_t {
|
||||
/* input args start */
|
||||
MppCodingType type;
|
||||
RK_U32 fmt_fbc;
|
||||
RK_U32 width;
|
||||
|
||||
/* output args start */
|
||||
RK_U32 h_stride_by_pixel;
|
||||
} MppSysCfgStHStrd;
|
||||
|
||||
typedef struct MppSysCfgStHByteStrd_t {
|
||||
/* input args start */
|
||||
MppCodingType type;
|
||||
MppFrameFormat fmt_codec;
|
||||
RK_U32 fmt_fbc;
|
||||
RK_U32 width;
|
||||
|
||||
/* output args start */
|
||||
RK_U32 h_stride_by_byte;
|
||||
} MppSysCfgStHByteStrd;
|
||||
|
||||
typedef struct MppSysCfgStVStrd_t {
|
||||
/* input args start */
|
||||
MppCodingType type;
|
||||
RK_U32 fmt_fbc;
|
||||
RK_U32 height;
|
||||
|
||||
/* output args start */
|
||||
RK_U32 v_stride;
|
||||
} MppSysCfgStVStrd;
|
||||
|
||||
typedef struct MppSysCfgStSize_t {
|
||||
/* input args start */
|
||||
MppCodingType type;
|
||||
MppFrameFormat fmt_codec;
|
||||
RK_U32 fmt_fbc;
|
||||
RK_U32 width;
|
||||
RK_U32 height;
|
||||
|
||||
/* output args start */
|
||||
RK_U32 h_stride_by_pixel;
|
||||
RK_U32 h_stride_by_byte;
|
||||
RK_U32 v_stride;
|
||||
RK_U32 size_total;
|
||||
RK_U32 size_fbc_hdr;
|
||||
RK_U32 size_fbc_bdy;
|
||||
} MppSysCfgStSize;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
MPP_RET mpp_sys_cfg_st_get_h_stride(MppSysCfgStHStrd *h_stride_cfg);
|
||||
MPP_RET mpp_sys_cfg_st_get_byte_stride(MppSysCfgStHByteStrd *byte_stride_cfg);
|
||||
MPP_RET mpp_sys_cfg_st_get_v_stride(MppSysCfgStVStrd *v_stride_cfg);
|
||||
MPP_RET mpp_sys_cfg_st_get_size(MppSysCfgStSize *size_cfg);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* MPP_SYS_CFGI_H__ */
|
||||
|
|
@ -9,6 +9,7 @@ add_library(mpp_base STATIC
|
|||
mpp_enc_cfg.cpp
|
||||
mpp_dec_cfg.cpp
|
||||
mpp_sys_cfg.cpp
|
||||
mpp_sys_cfg_st.cpp
|
||||
mpp_cluster.cpp
|
||||
mpp_buf_slot.cpp
|
||||
mpp_buffer_impl.cpp
|
||||
|
|
|
|||
157
mpp/base/mpp_sys_cfg_st.cpp
Normal file
157
mpp/base/mpp_sys_cfg_st.cpp
Normal file
|
|
@ -0,0 +1,157 @@
|
|||
/* SPDX-License-Identifier: Apache-2.0 OR MIT */
|
||||
/*
|
||||
* Copyright (c) 2024 Rockchip Electronics Co., Ltd.
|
||||
*/
|
||||
|
||||
#define MODULE_TAG "mpp_sys_cfg_st"
|
||||
|
||||
#include "mpp_log.h"
|
||||
#include "mpp_mem.h"
|
||||
#include "mpp_time.h"
|
||||
#include "mpp_common.h"
|
||||
|
||||
#include "rk_mpp_cfg.h"
|
||||
#include "mpp_sys_cfg.h"
|
||||
#include "mpp_sys_cfg_st.h"
|
||||
|
||||
MPP_RET mpp_sys_cfg_st_get_h_stride(MppSysCfgStHStrd *h_stride_cfg)
|
||||
{
|
||||
MPP_RET ret = MPP_OK;
|
||||
MppSysCfg cfg;
|
||||
|
||||
ret = mpp_sys_cfg_get(&cfg);
|
||||
if (ret) {
|
||||
mpp_err("mpp_sys_cfg_get failed\n");
|
||||
goto DONE;
|
||||
}
|
||||
|
||||
/* set correct parameter */
|
||||
ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:enable", 1);
|
||||
ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:type", h_stride_cfg->type);
|
||||
ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:fmt_fbc", h_stride_cfg->fmt_fbc);
|
||||
ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:width", h_stride_cfg->width);
|
||||
|
||||
/* get result */
|
||||
mpp_sys_cfg_ioctl(cfg);
|
||||
|
||||
ret = mpp_sys_cfg_get_u32(cfg, "dec_buf_chk:h_stride_by_pixel",
|
||||
&h_stride_cfg->h_stride_by_pixel);
|
||||
|
||||
ret = mpp_sys_cfg_put(cfg);
|
||||
if (ret) {
|
||||
mpp_err("mpp_sys_cfg_put failed\n");
|
||||
goto DONE;
|
||||
}
|
||||
|
||||
DONE:
|
||||
mpp_err_f("sys cfg get paras %s\n", ret ? "failed" : "success");
|
||||
return ret;
|
||||
}
|
||||
|
||||
MPP_RET mpp_sys_cfg_st_get_byte_stride(MppSysCfgStHByteStrd *byte_stride_cfg)
|
||||
{
|
||||
MPP_RET ret = MPP_OK;
|
||||
MppSysCfg cfg;
|
||||
|
||||
ret = mpp_sys_cfg_get(&cfg);
|
||||
if (ret) {
|
||||
mpp_err("mpp_sys_cfg_get failed\n");
|
||||
goto DONE;
|
||||
}
|
||||
|
||||
/* set correct parameter */
|
||||
ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:enable", 1);
|
||||
ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:type", byte_stride_cfg->type);
|
||||
ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:fmt_codec", byte_stride_cfg->fmt_codec);
|
||||
ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:fmt_fbc", byte_stride_cfg->fmt_fbc);
|
||||
ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:width", byte_stride_cfg->width);
|
||||
|
||||
/* get result */
|
||||
mpp_sys_cfg_ioctl(cfg);
|
||||
|
||||
ret = mpp_sys_cfg_get_u32(cfg, "dec_buf_chk:h_stride_by_byte",
|
||||
&byte_stride_cfg->h_stride_by_byte);
|
||||
|
||||
ret = mpp_sys_cfg_put(cfg);
|
||||
if (ret) {
|
||||
mpp_err("mpp_sys_cfg_put failed\n");
|
||||
goto DONE;
|
||||
}
|
||||
|
||||
DONE:
|
||||
mpp_err_f("sys cfg get paras %s\n", ret ? "failed" : "success");
|
||||
return ret;
|
||||
}
|
||||
|
||||
MPP_RET mpp_sys_cfg_st_get_v_stride(MppSysCfgStVStrd *v_stride_cfg)
|
||||
{
|
||||
MPP_RET ret = MPP_OK;
|
||||
MppSysCfg cfg;
|
||||
|
||||
ret = mpp_sys_cfg_get(&cfg);
|
||||
if (ret) {
|
||||
mpp_err("mpp_sys_cfg_get failed\n");
|
||||
goto DONE;
|
||||
}
|
||||
|
||||
/* set correct parameter */
|
||||
ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:enable", 1);
|
||||
ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:type", v_stride_cfg->type);
|
||||
ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:fmt_fbc", v_stride_cfg->fmt_fbc);
|
||||
ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:height", v_stride_cfg->height);
|
||||
|
||||
/* get result */
|
||||
mpp_sys_cfg_ioctl(cfg);
|
||||
|
||||
ret = mpp_sys_cfg_get_u32(cfg, "dec_buf_chk:v_stride", &v_stride_cfg->v_stride);
|
||||
|
||||
ret = mpp_sys_cfg_put(cfg);
|
||||
if (ret) {
|
||||
mpp_err("mpp_sys_cfg_put failed\n");
|
||||
goto DONE;
|
||||
}
|
||||
|
||||
DONE:
|
||||
mpp_err_f("sys cfg get paras %s\n", ret ? "failed" : "success");
|
||||
return ret;
|
||||
}
|
||||
|
||||
MPP_RET mpp_sys_cfg_st_get_size(MppSysCfgStSize *size_cfg)
|
||||
{
|
||||
MPP_RET ret = MPP_OK;
|
||||
MppSysCfg cfg;
|
||||
|
||||
ret = mpp_sys_cfg_get(&cfg);
|
||||
if (ret) {
|
||||
mpp_err("mpp_sys_cfg_get failed\n");
|
||||
goto DONE;
|
||||
}
|
||||
|
||||
/* set correct parameter */
|
||||
ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:enable", 1);
|
||||
ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:type", size_cfg->type);
|
||||
ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:fmt_codec", size_cfg->fmt_codec);
|
||||
ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:fmt_fbc", size_cfg->fmt_fbc);
|
||||
ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:width", size_cfg->width);
|
||||
ret = mpp_sys_cfg_set_u32(cfg, "dec_buf_chk:height", size_cfg->height);
|
||||
|
||||
/* get result */
|
||||
mpp_sys_cfg_ioctl(cfg);
|
||||
|
||||
ret = mpp_sys_cfg_get_u32(cfg, "dec_buf_chk:h_stride_by_byte", &size_cfg->h_stride_by_byte);
|
||||
ret = mpp_sys_cfg_get_u32(cfg, "dec_buf_chk:h_stride_by_pixel", &size_cfg->h_stride_by_pixel);
|
||||
ret = mpp_sys_cfg_get_u32(cfg, "dec_buf_chk:v_stride", &size_cfg->v_stride);
|
||||
ret = mpp_sys_cfg_get_u32(cfg, "dec_buf_chk:size_total", &size_cfg->size_total);
|
||||
ret = mpp_sys_cfg_get_u32(cfg, "dec_buf_chk:size_fbc_hdr", &size_cfg->size_fbc_hdr);
|
||||
ret = mpp_sys_cfg_get_u32(cfg, "dec_buf_chk:size_fbc_bdy", &size_cfg->size_fbc_bdy);
|
||||
|
||||
ret = mpp_sys_cfg_put(cfg);
|
||||
if (ret) {
|
||||
mpp_err("mpp_sys_cfg_put failed\n");
|
||||
goto DONE;
|
||||
}
|
||||
|
||||
DONE:
|
||||
mpp_err_f("sys cfg get paras %s\n", ret ? "failed" : "success");
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -57,3 +57,6 @@ add_mpp_base_test(mpp_sys_cfg)
|
|||
|
||||
# kmpp_obj unit test
|
||||
add_mpp_base_test(kmpp_obj)
|
||||
|
||||
# mpp_sys_cfgi unit test
|
||||
add_mpp_base_test(mpp_sys_cfg_st)
|
||||
|
|
|
|||
80
mpp/base/test/mpp_sys_cfg_st_test.c
Normal file
80
mpp/base/test/mpp_sys_cfg_st_test.c
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
/* SPDX-License-Identifier: Apache-2.0 OR MIT */
|
||||
/*
|
||||
* Copyright (c) 2024 Rockchip Electronics Co., Ltd.
|
||||
*/
|
||||
|
||||
#include "mpp_log.h"
|
||||
#include "mpp_mem.h"
|
||||
#include "mpp_common.h"
|
||||
|
||||
#include "rk_mpp_cfg.h"
|
||||
#include "mpp_sys_cfg_st.h"
|
||||
|
||||
int main()
|
||||
{
|
||||
MPP_RET ret = MPP_OK;
|
||||
MppCodingType type = MPP_VIDEO_CodingHEVC;
|
||||
RK_U32 width = 4096;
|
||||
RK_U32 height = 2304;
|
||||
|
||||
MppSysCfgStHStrd h_stride_cfg;
|
||||
MppSysCfgStHByteStrd byte_stride_cfg;
|
||||
MppSysCfgStVStrd v_stride_cfg;
|
||||
MppSysCfgStSize size_cfg;
|
||||
|
||||
|
||||
mpp_log("mpp_sys_cfg_st_test h_stride start\n");
|
||||
h_stride_cfg.type = type;
|
||||
h_stride_cfg.fmt_fbc = MPP_FRAME_FBC_AFBC_V1;
|
||||
h_stride_cfg.width = width;
|
||||
ret = mpp_sys_cfg_st_get_h_stride(&h_stride_cfg);
|
||||
mpp_log("mpp_sys_cfg_st_test result: h_stride_by_pixel(%d)",
|
||||
h_stride_cfg.h_stride_by_pixel);
|
||||
mpp_log("mpp_sys_cfg_st_test h_stride done %s\n", ret ? "failed" : "success");
|
||||
|
||||
|
||||
mpp_log("mpp_sys_cfg_st_test byte_stride start\n");
|
||||
byte_stride_cfg.type = type;
|
||||
byte_stride_cfg.fmt_codec = MPP_FMT_YUV420SP;
|
||||
byte_stride_cfg.fmt_fbc = MPP_FRAME_FBC_AFBC_V1;
|
||||
byte_stride_cfg.width = width;
|
||||
ret = mpp_sys_cfg_st_get_byte_stride(&byte_stride_cfg);
|
||||
mpp_log("mpp_sys_cfg_st_test result: h_stride_by_byte(%d)",
|
||||
byte_stride_cfg.h_stride_by_byte);
|
||||
mpp_log("mpp_sys_cfg_st_test byte_stride done %s\n", ret ? "failed" : "success");
|
||||
|
||||
|
||||
mpp_log("mpp_sys_cfg_st_test v_stride_cfg start\n");
|
||||
v_stride_cfg.type = type;
|
||||
v_stride_cfg.fmt_fbc = MPP_FRAME_FBC_AFBC_V1;
|
||||
v_stride_cfg.height = height;
|
||||
ret = mpp_sys_cfg_st_get_v_stride(&v_stride_cfg);
|
||||
mpp_log("mpp_sys_cfg_st_test result: v_stride(%d)",
|
||||
v_stride_cfg.v_stride);
|
||||
mpp_log("mpp_sys_cfg_st_test v_stride_cfg done %s\n", ret ? "failed" : "success");
|
||||
|
||||
|
||||
mpp_log("mpp_sys_cfg_st_test size_cfg start\n");
|
||||
size_cfg.type = type;
|
||||
size_cfg.fmt_codec = MPP_FMT_YUV420SP;
|
||||
size_cfg.fmt_fbc = MPP_FRAME_FBC_AFBC_V1;
|
||||
size_cfg.width = width;
|
||||
size_cfg.height = height;
|
||||
ret = mpp_sys_cfg_st_get_size(&size_cfg);
|
||||
mpp_log("mpp_sys_cfg_st_test result: h_stride_by_pixel(%d)",
|
||||
size_cfg.h_stride_by_pixel);
|
||||
mpp_log("mpp_sys_cfg_st_test result: h_stride_by_byte(%d)",
|
||||
size_cfg.h_stride_by_byte);
|
||||
mpp_log("mpp_sys_cfg_st_test result: v_stride(%d)",
|
||||
size_cfg.v_stride);
|
||||
mpp_log("mpp_sys_cfg_st_test result: size_total(%d)",
|
||||
size_cfg.size_total);
|
||||
mpp_log("mpp_sys_cfg_st_test result: size_fbc_hdr(%d)",
|
||||
size_cfg.size_fbc_hdr);
|
||||
mpp_log("mpp_sys_cfg_st_test result: size_fbc_bdy(%d)",
|
||||
size_cfg.size_fbc_bdy);
|
||||
mpp_log("mpp_sys_cfg_st_test size_cfg done %s\n", ret ? "failed" : "success");
|
||||
|
||||
|
||||
return ret;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue