p26001-store-acs-soc-fw-app/video/hisi/mpp5/System.cpp
2026-09-28 21:33:04 +08:00

110 lines
2.9 KiB
C++

/*
*******************************************************************************
* INCLUDE
*******************************************************************************
*/
#include "System.h"
#include "Logger.h"
#include <hi_buffer.h>
#include <hi_common.h>
#include <hi_mpi_tde.h>
#include <hi_mpi_sys.h>
#include <hi_mpi_vb.h>
/*
*******************************************************************************
* CONSTANTS
*******************************************************************************
*/
#ifndef INPUT_IMAGE_WIDTH_MAX
#define INPUT_IMAGE_WIDTH_MAX 3840
#endif
#ifndef INPUT_IMAGE_HEIGHT_MAX
#define INPUT_IMAGE_HEIGHT_MAX 2160
#endif
namespace Video
{
namespace MPP5
{
/*
*******************************************************************************
* CLASS DEFINE
*******************************************************************************
*/
System::System()
{
hi_mpi_sys_exit();
hi_mpi_vb_exit();
hi_vb_cfg vbcfg;
memset(&vbcfg, 0, sizeof(vbcfg));
vbcfg.max_pool_cnt = 16;
hi_pic_buf_attr attr;
attr.width = INPUT_IMAGE_WIDTH_MAX;
attr.height = INPUT_IMAGE_HEIGHT_MAX;
attr.align = HI_DEFAULT_ALIGN;
attr.bit_width = OT_DATA_BIT_WIDTH_8;
attr.pixel_format = HI_PIXEL_FORMAT_YVU_SEMIPLANAR_422;
attr.compress_mode = HI_COMPRESS_MODE_FRAME;
uint32_t size = hi_common_get_pic_buf_size(&attr);
sprintf(vbcfg.common_pool[0].mmz_name, "%s", "anonymous");
vbcfg.common_pool[0].remap_mode = OT_VB_REMAP_MODE_NONE;
vbcfg.common_pool[0].blk_cnt = 32;
vbcfg.common_pool[0].blk_size = size;
attr.width = 1920;
attr.height = 1080;
attr.align = HI_DEFAULT_ALIGN;
attr.bit_width = OT_DATA_BIT_WIDTH_8;
attr.pixel_format = HI_PIXEL_FORMAT_YVU_SEMIPLANAR_422;
attr.compress_mode = HI_COMPRESS_MODE_FRAME;
size = hi_common_get_pic_buf_size(&attr);
sprintf(vbcfg.common_pool[1].mmz_name, "%s", "anonymous");
vbcfg.common_pool[1].remap_mode = OT_VB_REMAP_MODE_NONE;
vbcfg.common_pool[1].blk_cnt = 32;
vbcfg.common_pool[1].blk_size = size;
int rc = hi_mpi_vb_set_cfg(&vbcfg);
if (rc != HI_SUCCESS)
{
logger().error("VB Set config FAIL: %#x", (uint32_t)rc);
return;
}
rc = hi_mpi_vb_init();
if (rc != HI_SUCCESS)
{
logger().error("VB Initialize FAIL: %#x", (uint32_t)rc);
return;
}
rc = hi_mpi_sys_init();
if (rc != HI_SUCCESS)
{
logger().error("SYS Initialize FAIL: %#x", (uint32_t)rc);
return;
}
hi_mpi_sys_init_pts_base(0);
hi_tde_open();
}
System::~System()
{
hi_tde_close();
hi_mpi_sys_exit();
hi_mpi_vb_exit();
}
uint64_t System::getTimestamp()
{
hi_u64 now;
hi_mpi_sys_get_cur_pts(&now);
return now;
}
}
}