2024-03-26 10:33:00 +08:00

121 lines
4.6 KiB
C++

//------------------------------------------------------------------------
/**
\file IImageData.h
\brief Definition of the IIntFeature interface
\Date 2016-8-09
\Version 1.1.1608.9091
*/
//------------------------------------------------------------------------
#pragma once
#include "GXIAPIBase.h"
#include "GXSmartPtr.h"
#include "IImageProcessConfig.h"
class GXIAPICPP_API IImageData
{
public:
//---------------------------------------------------------
/**
\brief Destructor
*/
//---------------------------------------------------------
virtual ~IImageData(){};
//----------------------------------------------------------------------------------
/**
\brief Get the status of the image, referring to GX_FRAME_STATUS_LIST
\return the status of the image, referring to GX_FRAME_STATUS_LIST
*/
//----------------------------------------------------------------------------------
virtual GX_FRAME_STATUS_LIST GetStatus() = 0;
//----------------------------------------------------------------------------------
/**
\brief Get the payload size of the image
\return The payload size of the image
*/
//----------------------------------------------------------------------------------
virtual uint64_t GetPayloadSize() = 0;
//----------------------------------------------------------------------------------
/**
\brief Get the width of the image
\return The width of the image
*/
//----------------------------------------------------------------------------------
virtual uint64_t GetWidth() = 0;
//----------------------------------------------------------------------------------
/**
\brief Get the height of the image
\return The height of the image
*/
//----------------------------------------------------------------------------------
virtual uint64_t GetHeight() = 0;
//----------------------------------------------------------------------------------
/**
\brief Get the pixel format of the image
\return The pixel format of the image
*/
//----------------------------------------------------------------------------------
virtual GX_PIXEL_FORMAT_ENTRY GetPixelFormat() = 0;
//----------------------------------------------------------------------------------
/**
\brief Get the frame id of the image
\return The frame id of the image
*/
//----------------------------------------------------------------------------------
virtual uint64_t GetFrameID() = 0;
//----------------------------------------------------------------------------------
/**
\brief Get the time stamp of the image
\return The the time stamp of the image
*/
//----------------------------------------------------------------------------------
virtual uint64_t GetTimeStamp() = 0;
//----------------------------------------------------------------------------------
/**
\brief Get the raw data image buffer pointer address
\return The raw data image buffer pointer address
*/
//----------------------------------------------------------------------------------
virtual void* GetBuffer() =0;
//----------------------------------------------------------------------------------
/**
\brief Special for more than 8 bits data image, To choose a segment contain 8 bits data
\param [in]emValidBits refer to GX_VALID_BIT_LIST
\return The 8 bits data buffer pointer address
*/
//----------------------------------------------------------------------------------
virtual void* ConvertToRaw8(GX_VALID_BIT_LIST emValidBits) = 0;
//----------------------------------------------------------------------------------
/**
\brief Convert the raw data to RGB24 data
\param [in]emValidBits To choose a segment contain 8 bits to convert
\param [in]emConvertType The method for image interpolation
\param bFlip The flip mode for image interpolation
\return The RGB24 data buffer pointer address
*/
//----------------------------------------------------------------------------------
virtual void* ConvertToRGB24(GX_VALID_BIT_LIST emValidBits
,GX_BAYER_CONVERT_TYPE_LIST emConvertType
,bool bFlip) = 0;
//----------------------------------------------------------------------------------
/**
\brief To enhance the image effect by ImageProcess
\param [in]objCfg A smart pointer object CImageProcessConfigPointer, contain a set of params
\return void
*/
//----------------------------------------------------------------------------------
virtual void* ImageProcess(CImageProcessConfigPointer &objCfg) = 0;
};
template class GXIAPICPP_API GXSmartPtr<IImageData>;
typedef GXSmartPtr<IImageData> CImageDataPointer;