📄 sh_pp_handler.h
字号:
#ifndef _SH_PP_HANDLER_H_
#define _SH_PP_HANDLER_H_
/*
* Print Option
*/
#define SH_PP_PRINT_ERROR 1
#define SH_PP_PRINT_INFO 0
#define SH_PP_PRINT_BUFFERING 0
/*
* To support Zoom to full display
* Some picture size is not enuogh to show on TV, such as low resolution
* pictures. In that case post handler can support zoom using VP block.
* But this functionality can be changed by customer's request.
*
* TJ
*/
#if _USE_5009
//gaoping 20060403
#define SH_PP_SUPPORT_ZOOM_FULL 1//!_APP_CAP_JPG_ASV//xh 20060424
#define SH_PP_SUPPORT_OWN_ZOOM 0
#else
#define SH_PP_SUPPORT_ZOOM_FULL 1
#define SH_PP_SUPPORT_OWN_ZOOM 0
#endif
/*
* To add low pass filter for full display
*
* TJ
*/
#define SH_PP_SUPPORT_FULL_LOW_FILTER 0
/*
* To screen low pass filter for thumbnail display
*
* TJ
*/
#define SH_PP_SUPPORT_THUMB_LOW_FILTER 1
/*
* To test all thumbnail view using full image scale down, set "0"
*
* TJ
*/
#define SH_PP_SUPPORT_THUMBNAIL_DATA_HANDLE 1
#define ZERO (0x00)
#define TEN (0x0A)
#define DISP_NO_SCALE_PP (0x00)
#define DISP_HEIGHT_WIDTH_BY2_PP (0x03)
#define JPP_DEF_IMAGE_WIDTH (720)
#define JPP_DEF_IMAGE_HEIGHT(X) (( X == OUTPUT_625_50 )?576:480)
#define JPP_DEF_CHUNK_SIZE (16)
/*
* JPP handler state
*/
/* State Mask
* : To categorize each state in some state
*/
#define JPP_STATE_STATIONARY_MASK 0x1000
#define JPP_STATE_RUN_MASK 0x0100
/* Read States
* : After some check state for stream service.
*/
typedef enum {
JPP_STATE_RUN_HEADER = 0x0100,
JPP_STATE_RUN_START = 0x0101,
JPP_STATE_RUN_ERROR = 0x0102,
/* Stationary States
* : During Wait or Stop state, Navigation Task will wait request or System
* Callback about progress
*/
JPP_STATE_WAIT = 0x1001,
JPP_STATE_STOP = 0x1002,
JPP_STATE_ABORT = 0x1003
} JppState_et;
#define IS_JPP_STATIONARY_STATE(x) ((x) & JPP_STATE_STATIONARY_MASK)
#define IS_JPP_RUN_STATE(x) ((x) & JPP_STATE_RUN_MASK)
typedef enum
{
JPP_DISP_TOP2BOTTOM,
JPP_DISP_BOTTOM2TOP,
JPP_DISP_LEFT2RIGHT,
JPP_DISP_RIGHT2LEFT
}JPP_DisplayStyle_et;
typedef VOID ( * PARTIALDISPLAYPROC_PP) ( UCHAR ui8DispMode, UCHAR *pui8PartData);
typedef struct __Jpp_DisplayParam {
SSHORT i16ImgHeight; /* Image Height */
SSHORT i16ImgWidth; /* Image Width */
SSHORT i16XOffset; /* Start X Offset */
SSHORT i16YOffset; /* Start Y Offset */
/* Block Start and End in the LUT array */
SSHORT i16YStartBlock; /* Index of Y __gpbJpp_vp_lut to start Y line */
SSHORT i16YEndBlock; /* Index of Y __gpbJpp_vp_lut to end Y line */
SSHORT i16CStartBlock; /* Index of C __gpbJpp_vp_lut to start C line */
SSHORT i16CEndBlock; /* Index of C __gpbJpp_vp_lut to end C line */
#if 1//FB_VERTICAL_SPLIT /* KBA #143@123# : Let me look this latter ! */
/* Offsets calculated from the display Input */
SSHORT i16LeftStartOffset; /* X Start Offset in the Left Field */
SSHORT i16LeftEndOffset; /* X End Offset in the Left Field */
SSHORT i16RightStartOffset; /* X Start Offset in the Right Field */
SSHORT i16RightEndOffset; /* X End Offset in the Right Field */
#endif
/* Current status fields */
ULONG ui32PartDataSize; /* Total size of Each Chunk (Y+C) */
ULONG ui32PartYDataSize; /* Size of Each Y Chunk in ui32PartDataSize */
ULONG ui32PartCbCrDataSize; /* Size of Each C Chunk in ui32PartDataSize */
SSHORT i16CurrPartDataCount; /* Current Chunk Displayed # Changes during Display */
SSHORT i16TotalPartDataCount; /* Total number of Chunks that will be available from the Decoder */
SSHORT i16YCurrStartBlock; /* Current start index of __gpbJpp_vp_lut to start the Y # Changes during Display */
SSHORT i16YCurrEndBlock; /* Current end index of __gpbJpp_vp_lut to start the Y # Changes during Display */
SSHORT i16CCurrStartBlock; /* Current start index of __gpbJpp_vp_lut to start the C # Changes during Display */
SSHORT i16CCurrEndBlock; /* Current end index of __gpbJpp_vp_lut to start the C # Changes during Display */
SSHORT i16YCurrStartXOffset; /* Current Y Start Offset # Changes during Display */
SSHORT i16YCurrEndXOffset; /* Current Y End Offset # Changes during Display */
SSHORT i16CCurrStartXOffset; /* Current C Start Offset # Changes during Display */
SSHORT i16CCurrEndXOffset; /* Current C End Offset # Changes during Display */
/* Display style that has to be followed */
UCHAR ui8DispStyle; /* Style of Display Up->Down, Down->Up, Left->Right, Right->Left */
UCHAR ui8ScaleMode; /* Display as such or Downscale by 2 */
BOOL bReverseWrite; /* Write mode A->B or B->A */
PARTIALDISPLAYPROC_PP pfnDoPartialDisplay; /* Proc to use for display. Selected according to ui8DispStyle or default NullProc */
/* Misc Flag */
BOOL bIncFlag; /* Tail chunk available */
SSHORT i16Remain; /* Remaining Chunk size */
SSHORT i16ChunkHeight; /* Tail Chunk Height */
}JPP_DISPLAY_PARAM;
typedef enum {
JPP_SYS_MSG_NULL,
JPP_SYS_MSG_STOP,
JPP_SYS_MSG_READY,
JPP_SYS_MSG_DONE,
JPP_SYS_MSG_DATA_ERR,
JPP_SYS_MSG_READY_JD /* for arm jpeg decoder */
} JppSysMsgId_et;
typedef struct {
JppSysMsgId_et eId;
BM_NODE *node;
} JPP_SysMsg_st;
typedef struct
{
UCHAR Yvalue;
UCHAR Cbvalue;
UCHAR Crvalue;
}JPP_YcbCr_st;
#if _APP_CAP_JPG_ASV//xh 20060424
VOID iJPP_ClearFrameArea( VOID );
#endif
VOID iJPP_InitDispLUT( VOID );
BOOL iJPP_InitPPResource( VOID );
BOOL iJPP_DeInitPPResource( VOID );
VOID iJPP_ClearDisplay (SH_ColorValue_et color);
BOOL iJPP_SendSysMsg( JppSysMsgId_et id, BM_NODE *node );
VOID iJPP_ClearRectangle( SH_Display_st display, SH_ColorValue_et colour );
VOID iJPP_ClearBlockBlack(VOID);
UINT iJPP_checkThumbNail(BM_NODE *first_node);
BYTE1 iJPP_getScanCount( VOID );
BYTE1 iJPP_releaseInputNodes( VOID );
VOID iJPP_ChangeFrameBufferMode( S5H_OutputTvMode_t out );
#endif /* _SH_PP_HANDLER_H_*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -