#ifndef _DRV_FD_MON_H_
#define _DRV_FD_MON_H_

typedef enum {
    E_MON2_OUT_MIXER         =0,
    E_MON2_OUT_MAIN_FSC_OUT  =1,
    E_MON2_OUT_SUB_FSC_OUT   =2,
    E_MON2_OUT_MAIN_MIB_OUT  =3,
    E_MON2_OUT_SUB_MIB_OUT   =4,
    E_MON2_OUT_MAIN_PREDOWN  =5,
    E_MON2_OUT_SUB_PREDOWN   =6,   
    E_MON2_OUT_PANEL         =7,
    E_MON2_OUT_OMUX          =8,
}E_MON2_OUT_IN_SELECT;

typedef struct
{
    UINT8 u1OnOff;

    UINT8 u1InputSel;
    UINT8 u1InFormat;
    UINT16 u2InWidth;
    UINT16 u2InHeight;

    UINT16 u2RegenInWidth;
    UINT16 u2RegenInHeight;
    UINT16 u2RegenX;
    UINT16 u2RegenY;
    UINT16 u2RegenOutWidth;
    UINT16 u2RegenOutHeight;
    
    UINT16 u2PredownInWidth;
    UINT16 u2PredownInHeight;
    UINT16 u2PredownOutWidth;
    UINT16 u2PredownOutHeight;

}FD_MON_INFO_T;

typedef struct
{
    UINT8 u1OnOff;
    UINT8 u1InFormat;

    UINT16 u2Width;
    UINT16 u2Height;

    UINT16 u2FrameDropM;
    UINT16 u2FrameDropN;
    UINT16 u2WriteMode;

    UINT32 u4Addr;
    UINT32 u4Size;
    UINT32 u4FrameNum;
    UINT32 u4OneFrmSize;

}FD_GFX_INFO_T;

void vDrvFDMonInfoDump(void);
void vDrvFDMonProc(void);
void vDrvFDMonInit(void);
void vDrvFDMonGFXTrigger(void);
void vDrvFDMonSuspend(void);
void vDrvFDMonResume(void);
#endif
