⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dvb_image.h

📁 DVB软件,基于CT216软件的开发源程序.
💻 H
字号:
#ifndef __DVB_IMG_H__
#define __DVB_IMG_H__
#include "dvb_sys.h"
#include "ct_image.h"

#ifndef CT216T_ELGIST_MM
#include "dvb_av.h"
#endif
//#define DVB_IMG_FILE
//#define DVB_IMG_DEBUG

#define JPEGENC_MEMORY_POOL_SIZE	(130*1024)  //max storage size for JPEG encode, in bytes
#define JPEGENC_FILESIZE_MAX        (64*1024)   //max storage size for generated JPEG file, in bytes
#define JPEGENC_QUALITY_DEFAULT     (90)        //regular experienced value from CJPEG simulation results; 95 isn't good because almost every picture will need to be compressed 2 times
#define JPEGENC_QUALITY_DEFSTEP     (5)         //this may be 10 -- because it doesn't affect file size so much

typedef enum
{
	EN_IMG_DATA_SRC_MEM,
	EN_IMG_DATA_SRC_FS        
}EN_IMG_DATA_SRC;

typedef enum
{
	EN_IMG_FILETYPE_JPG,
	EN_IMG_FILETYPE_BMP,
	EN_IMG_FILETYPE_GIF
}EN_IMG_FILETYPE;

typedef enum
{
	EN_IMG_STATUS_SUCCESS,
	EN_IMG_STATUS_DECODE_FAIL,
	EN_IMG_STATUS_OPEN_FILE_FAIL,
	EN_IMG_STATUS_NOT_FIT_SIZE,
	EN_IMG_STATUS_NO_IMG_FILE
} EN_IMG_DECODE_STATUS;

typedef enum
{
	EN_IMG_ENCODE_SUCCESS,
	EN_IMG_ENCODE_FAIL,
	EN_IMG_ENCODE_NO_CARD,
	EN_IMG_ENCODE_OPEN_FILE_FAIL
}EN_IMG_ENCODE_STATUS;

typedef enum
{
	EN_DVB_IMG_STATUS_FAIL, /*!< Renew description after */
	EN_DVB_IMG_STATUS_OK,  /*!< Renew description after */
	EN_DVB_IMG_STATUS_UNFINISH,  /*!< Renew description after */
	EN_DVB_IMG_STATUS_UNSUPPORT,  /*!< Renew description after */
    EN_DVB_IMG_STATUS_EFFECT_UNFINISH,  /*!< Renew description after */
	EN_DVB_IMG_STATUS_TIMEOUT
} EN_DVB_IMG_STATUS_MODE;

typedef struct tagDVB_IMG_ZOOMRECT
{
    u16    				u16PosX;      
    u16    				u16PosY;      
    u16    				u16Width;       
    u16    				u16Height;      
} DVB_IMG_ZOOMRECT, *PDVB_IMG_ZOOMRECT;

typedef struct tagDVB_IMG_EXIF
{
	u32		u32ExifImageWidth;
	u32		u32ExifImageHeight;
	u8 		u8ExifDate[11]; //last char for '\0'    
	bool8   bIsProgressive;
} DVB_IMG_EXIF, *PDVB_IMG_EXIF;

// define the combination of "rotate" and "flip"
typedef enum
{
	EN_DVB_IMG_OPERATION_MODE_I,
	EN_DVB_IMG_OPERATION_MODE_RC,
	EN_DVB_IMG_OPERATION_MODE_FHFV,
	EN_DVB_IMG_OPERATION_MODE_RCC,
	EN_DVB_IMG_OPERATION_MODE_FH,
	EN_DVB_IMG_OPERATION_MODE_RCFV,
	EN_DVB_IMG_OPERATION_MODE_FV,
	EN_DVB_IMG_OPERATION_MODE_RCFH,	
} EN_DVB_IMG_OPERATION_MODE;

typedef enum
{
	EN_DVB_IMG_VIEW_ZOOM_OP_25 = 1, /*!< Renew description after */
	EN_DVB_IMG_VIEW_ZOOM_OP_50,
	EN_DVB_IMG_VIEW_ZOOM_OP_100,
	EN_DVB_IMG_VIEW_ZOOM_OP_150,
	EN_DVB_IMG_VIEW_ZOOM_OP_200,
	EN_DVB_IMG_VIEW_ZOOM_OP_SUPPORT = 20,
	EN_DVB_IMG_VIEW_ZOOM_OP_LEFT,
	EN_DVB_IMG_VIEW_ZOOM_OP_RIGHT,
	EN_DVB_IMG_VIEW_ZOOM_OP_UP,
	EN_DVB_IMG_VIEW_ZOOM_OP_DOWN
}EN_DVB_IMG_VIEW_ZOOM_OP;

typedef enum
{
	EN_DVB_IMG_EFFECT_MODE_NONE = 0,
	EN_DVB_IMG_EFFECT_MODE_BEGIN,
	EN_DVB_IMG_EFFECT_MODE_BLIND_VER = EN_DVB_IMG_EFFECT_MODE_BEGIN,
    EN_DVB_IMG_EFFECT_MODE_BLIND_HOR,
    EN_DVB_IMG_EFFECT_MODE_COLORATION_VER,
    EN_DVB_IMG_EFFECT_MODE_COLORATION_HOR,
    EN_DVB_IMG_EFFECT_MODE_BLOCK_1,
    EN_DVB_IMG_EFFECT_MODE_BLOCK_2,
    EN_DVB_IMG_EFFECT_MODE_BLOCK_3,
    EN_DVB_IMG_EFFECT_MODE_BLOCK_4,
    EN_DVB_IMG_EFFECT_MODE_BLOCK_5,
    EN_DVB_IMG_EFFECT_MODE_BLOCK_6,
    EN_DVB_IMG_EFFECT_MODE_BLOCK_7,
    EN_DVB_IMG_EFFECT_MODE_BLOCK_8,
    EN_DVB_IMG_EFFECT_MODE_BLOCK_9,
    EN_DVB_IMG_EFFECT_MODE_FADE_IN_OUT,
	EN_DVB_IMG_EFFECT_MODE_END = EN_DVB_IMG_EFFECT_MODE_FADE_IN_OUT,
    EN_DVB_IMG_EFFECT_MODE_RANDOM,
    EN_DVB_IMG_EFFECT_MODE_LAST = EN_DVB_IMG_EFFECT_MODE_RANDOM,
	HALIMAGE_RANDOM_EFFECT_BASE = (EN_DVB_IMG_EFFECT_MODE_END - EN_DVB_IMG_EFFECT_MODE_BEGIN + 1)
} EN_DVB_IMG_EFFECT_MODE;

EN_IMG_DECODE_STATUS DVB_IMG_DecodeOriginalFromFs(u32 u32FileIndex);
EN_IMG_DECODE_STATUS DVB_IMG_DecodePreviewFromFs(u32 u32FileIndex, u32 u32PosX, u32 u32PosY, u32 u32Width, u32 u32Height);
EN_IMG_DECODE_STATUS DVB_IMG_DecodeThumbFromFs(u32 u32FileIndex, u32 u32PosX, u32 u32PosY, u32 u32Width, u32 u32Height);
void DVB_IMG_SetEffectMode(EN_DVB_IMG_EFFECT_MODE enEffectMode);
EN_DVB_IMG_EFFECT_MODE DVB_IMG_GetEffectMode(void);
EN_DVB_IMG_STATUS_MODE DVB_IMG_Check_Status(void);
u32 DVB_IMG_GetProgress(void);
void DVB_IMG_NotifyDevRemove(void);
void DVB_IMG_DecodeAbort(bool8 bIsReset, bool8 bIsChangeFrameBuf);
u8 DVB_IMG_GetOperation(u8 u8PreviousResult, u8 u8CurrentOperation);
u8 DVB_IMG_ThumbnailOperation(u8 u8PreviousResult, u8 u8CurrentOperation);
void  DVB_IMG_SetOperation(EN_DVB_IMG_OPERATION_MODE enOperationMode);
bool8 DVB_IMG_Zoom(EN_DVB_IMG_VIEW_ZOOM_OP enViewZoomOp);
u8 DVB_IMG_GetZoomFactor(void);
void DVB_IMG_SetZoomFactor(EN_DVB_IMG_VIEW_ZOOM_OP enViewZoomOp);
void DVB_IMG_SetZoomFrame(u32 u32PosX, u32 u32PosY, u32 u32Width, u32 u32Height);
void DVB_IMG_GetZoomRect(PDVB_IMG_ZOOMRECT pstDVB_IMG_ZoomRect);
void DVB_IMG_ClearScreen(bool8 bIsImgInitFinished);
bool8 DVB_IMG_DecodeGetStatus(void);
bool8 DVB_IMG_DecodeTerm(void);
bool8 DVB_IMG_DecodeInit(EN_IMG_DATA_SRC enDataSrc);

bool8 DVB_IMG_GetCurrentExifInfo(DVB_IMG_EXIF *pstDVB_IMG_EXIF);
/*
\fn bool8 DVB_IMG_GetCurrentExifInfo(DVB_IMG_EXIF *pstDVB_IMG_EXIF)
\brief Get current Exif Info after calling DVB_IMG_DecodeFromFs
\param pstDVB_IMG_EXIF - Point to the Exif Info
*/

bool8 DVB_IMG_DecodeExifInfo(u32 u32FileIndex,  DVB_IMG_EXIF *pstDVB_IMG_EXIF);
/*
\fn bool8 DVB_IMG_DecodeExifInfo(u32 u32FileIndex, DVB_IMG_EXIF *pstDVB_IMG_EXIF)
\brief Get Exif Info by decoder
\param u32FileIndex - Specifies the file index
\param pstDVB_IMG_EXIF - Point to the Exif Info
*/

EN_IMG_DECODE_STATUS DVB_IMG_DecodeThumbFromMem(u32 u32StartAddr, u32 u32Length, u32 u32PosX, u32 u32PosY, u32 u32Width, u32 u32Height);

EN_DEVICE_TYPE 			DVB_IMG_GetDeviceType(void);
void 					DVB_IMG_SetDeviceType(EN_DEVICE_TYPE enDeviceType);
EN_IMG_DECODE_STATUS    DVB_IMG_DecodeFromFs(u32 u32FileIndex);
EN_IMG_DECODE_STATUS    DVB_IMG_DecodeFromMem(u32 u32StartAddr, u32 u32Length);
u32						DVB_IMG_GetFileCount(void);
u32						DVB_IMG_GetDirCount(void);
bool8 					DVB_IMG_DelFile(u32 u32FileIndex);
u16*  					DVB_IMG_GetFileName(u32 u32FileIndex, u8 *pu8FileName);
u16* 					DVB_IMG_GetDirName(u32 u32FileIndex, u8 *pu8DirName);

bool8 DVB_IMG_Set_Filetype(EN_IMG_FILETYPE enFiletype);
EN_IMG_FILETYPE DVB_IMG_Get_Filetype(void);

#ifndef CT216T_ELGIST_MM
void DVB_IMG_Set_VidMode(EN_VID_MODE enVidMode);
#endif

#ifdef DVB_IMG_DEBUG
void IMG_Decode_Test(u32 u32Mode, u32 u32Param1, u32 u32Param2);
#endif

void DVB_IMG_EncodeFromFrameBuf(u8* pMemPoolAddr, u32 u32MemPoolSize);
void DVB_IMG_EncodeInit(void);
void DVB_IMG_EncodeTerm(void);

void DVB_IMG_Set_BackGroundColor(u32 u32RGBColor);
/*!
\fn void DVB_IMG_Set_BackGroundColor(u32 u32RGBColor
\brief Set the background color.
\param u32RGBColor (Input) The RGB color value.
*/
#ifdef MPGENC_ENABLE
bool8 DVB_IMG_MpgEncode(void);
#endif

void DVB_IMG_SetDisplayMode(bool8 b8TrueColor);
/*!
\fn void DVB_IMG_SetDisplayMode(bool8 b8TrueColor)
\brief Call this function before DVB_IMG_DecodeInit() to enable or disable true color mode.
       Default is enabled.
\param b8TrueColor (Input) TRUE for enable, FALSE for disable.
*/

void DVB_IMG_Set_PanelType(EN_PANEL_TYPE u8Panel_Type);
EN_PANEL_TYPE DVB_IMG_Get_PanelType(void);


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -