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

73 lines
1.9 KiB
C++

#ifndef B9B55BBA_D4EA_459D_AB14_BEB06E1FB74A
#define B9B55BBA_D4EA_459D_AB14_BEB06E1FB74A
/*
*******************************************************************************
* INCLUDE
*******************************************************************************
*/
#include <hi_mpi_ive.h>
#include <hi_mpi_vb.h>
#include <Poco/SharedPtr.h>
namespace Video
{
namespace MPP5
{
/*
*******************************************************************************
* CLASS DECLARE
*******************************************************************************
*/
class VideoFrame
{
public:
using Ptr = Poco::SharedPtr<VideoFrame>;
private:
VideoFrame(hi_video_frame_info* pInfo, uint32_t size, uint8_t* pVirAddr, uint32_t phyAddr, uint32_t handle,
uint32_t chn);
public:
~VideoFrame();
public:
const hi_video_frame_info* info() const;
const uint32_t width() const;
const uint32_t height() const;
const hi_pixel_format pixelFormat() const;
private:
hi_video_frame_info* _pInfo;
uint32_t _size;
uint8_t* _pVirAddr;
uint32_t _phyAddr;
uint32_t _handle;
uint32_t _chn;
public:
static Ptr create(hi_pixel_format format, uint32_t width, uint32_t height, const uint8_t* pData);
static Ptr create(hi_pixel_format format, uint32_t width, uint32_t height, const std::string& path);
};
inline const hi_video_frame_info* VideoFrame::info() const
{
return _pInfo;
}
inline const uint32_t VideoFrame::width() const
{
return _pInfo->video_frame.width;
}
inline const uint32_t VideoFrame::height() const
{
return _pInfo->video_frame.height;
}
inline const hi_pixel_format VideoFrame::pixelFormat() const
{
return _pInfo->video_frame.pixel_format;
}
}
}
#endif