📄 dvb_image.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 + -