📄 sdout_api.h
字号:
/******************************************************************************
* Filename : Sdout_api.h *
* Start date : *
* By : *
* Contact : *
* Description : low level api headers.(for only high level api) *
* *
******************************************************************************
*/
#ifndef _SDOUT_API_H_
#define _SDOUT_API_H_
#ifdef __cplusplus
extern "C" {
#endif
/* Turn off DAC longer when changing TV mode in Prog. YPbPr
(20050828,ishan) */
#define _USE_SD_LONG_DAC_OFF_FOR_PROG 1
#if _USE_SD_LONG_DAC_OFF_FOR_PROG
/* Additional DAC off time */
/* 0.5 sec checked with Panasonic TV at ReignComTech (2005830,ishan) */
#define SD_DAC_OFF_INTERVAL_ADD 30
#endif
#define SD_CHANGE_INTPROG_DAC_OFF_START 100
#define SD_CHANGE_TV_DAC_OFF_START 300
#define SD_DAC_OFF_INTERVAL 2 //20 /* interval for turning DAC OFF */
/*
SDOUT hsync count interrupt
(This can be enabled in 5015)
(ishan, 20060303)
*/
#define _USE_SD_HSYNC_INTR 0
#define SDOUT_CLEAR_IRQ(x) rSDO_IRQ_CLR = (0x01<<(x))
/*********************************************
* Data types
*********************************************/
typedef enum{
SD_OFF, /* SD module off */
SD_ON /* SD module on */
}SD_OnOff_t;
typedef enum{
SD_OPERATING, /* During sdout operation */
SD_CLK_DOWN /* clock ready down ok */
}SD_ClkState_t;
typedef enum{
SD_NTSC_M,
SD_NTSC_J,
SD_PAL_M,
SD_PAL_B,
SD_PAL_D,
SD_PAL_G,
SD_PAL_H,
SD_PAL_I,
SD_PAL_K,
SD_PAL_L,
SD_PAL_N,
SD_PAL_NC,
SD_PAL_60
}SD_Display_t;
typedef enum{
SD_INTERLACE,
SD_PROGRESSIVE
}SD_IntProg_t;
typedef enum{
SD_DAC_CVBS,
SD_DAC_Y,
SD_DAC_C,
SD_DAC_COMP_Y,
SD_DAC_COMP_PB,
SD_DAC_COMP_PR,
SD_DAC_G,
SD_DAC_B,
SD_DAC_R
} SD_DacType_t;
typedef enum{
SD_RGB, /* Set SDOut DAC 1,2,3 Output : RGB */
#if _USE_5015
SD_YC, /* Set SDOut DAC 1,2,3 Output : Composite Y, Composite C, Don't care */
#endif
SD_YPBPR /* Set SDOut DAC 1,2,3 Output : YPbPr */
}SD_Dac123_t;
typedef enum{
SD_4_CVBS, /* Set SDOut DAC 4 Output : CVBS */
#if _USE_5015
SD_4_C,
#endif
SD_4_Y /* Set SDOut DAC 4 Output : Y */
}SD_Dac4_t;
typedef enum{
SD_5_CVBS, /* Set SDOut DAC 5 Output : CVBS */
SD_5_C /* Set SDOut DAC 5 Output : C */
}SD_Dac5_t;
typedef enum{
SD_TOP, /* SDOut Field ID is Top */
SD_BOTTOM /* SDOut Field ID is Bottom */
}SD_FieldId_t;
typedef enum { /* setup level of CSC */
SD_CSC0IRE, /* CSC 0 IRE */
SD_CSC75IRE /* CSC 7.5 IRE */
} SD_CscIre_t;
typedef enum { /* Ratio of sync and video level of CSC */
SD_CSC104, /* CSC 10(video) : 4(sync) */
SD_CSC73 /* CSC 7(video) : 3(sync) */
} SD_CscRatio_t;
typedef enum { /* setup level of CVBS */
SD_CVBS0IRE, /* CVBS 0 IRE */
SD_CVBS75IRE /* CVBS 7.5 IRE */
} SD_CvbsIre_t;
typedef enum { /* Ratio of sync and video level of CVBS */
SD_CVBS104, /* CVBS 10(video) : 4(sync) */
SD_CVBS73 /* CVBS 7(video) : 3(sync) */
} SD_CvbsRatio_t;
typedef enum { /* SD RGB/YPbPr sync insertion */
SD_SYNC_OFF, /* Sync off */
SD_SYNC_ONE_CH, /* one channel sync (G/Y) */
SD_SYNC_ALL_CH /* all channel sync(RGB/YPbPr) */
} SD_SyncOnOff_t;
typedef enum {
SD_CC_OFF, /* Closed Caption off */
SD_CC_TOP, /* Closed Caption top */
SD_CC_BOTTOM, /* Closed Caption bottom */
SD_CC_BOTH /* Closed Caption top & bottom */
} SD_Cc_t;
/* WSS 525 */
typedef enum {
SD_WSS525_NORMAL,
SD_WSS525_ANAMORPHIC,
SD_WSS525_LB
} SD_Wss525_Ratio_t;
typedef enum {
SD_WSS525_CCI_ON,
SD_WSS525_CCI_OFF
} SD_Wss525_Cci_t;
typedef enum {
SD_WSS525_COPY,
SD_WSS525_COPY_ONE,
SD_WSS525_COPY_RESERVED,
SD_WSS525_COPY_NO
} SD_Wss525_Copy_t;
typedef enum {
SD_WSS525_PSP_OFF,
SD_WSS525_PSP_2LINE,
SD_WSS525_PSP_ONLY,
SD_WSS525_PSP_4LINE
} SD_Wss525_Psp_t;
typedef enum {
SD_WSS525_ANALOG_OFF,
SD_WSS525_ANALOG_ON
} SD_Wss525_Analog_t;
/* WSS 625 */
typedef enum {
SD_WSS625_4_3_FULL,
SD_WSS625_14_9_LB_C,
SD_WSS625_14_9_LB_T,
SD_WSS625_16_9_LB_C,
SD_WSS625_16_9_LB_T,
SD_WSS625_16_9_LB_C2,
SD_WSS625_14_9_FULL,
SD_WSS625_16_9_FULL
} SD_Wss625_Ratio_t;
typedef enum {
SD_WSS625_CAMERA,
SD_WSS625_FILM
} SD_Wss625_Mode_t;
typedef enum {
SD_WSS625_PAL,
SD_WSS625_MA
} SD_Wss625_Color_t;
typedef enum {
SD_WSS625_HELPER_OFF,
SD_WSS625_HELPER_ON
} SD_Wss625_Helper_t;
typedef enum {
SD_WSS625_TELETEXT_OFF,
SD_WSS625_TELETEXT_ON
} SD_Wss625_Teletext_t;
typedef enum {
SD_WSS625_SUBTITLE_OFF,
SD_WSS625_SUBTITLE_INSIDE,
SD_WSS625_SUBTITLE_OUTSIDE
} SD_Wss625_Subtitle_t;
typedef enum {
SD_WSS625_SURROUND_OFF,
SD_WSS625_SURROUND_ON
} SD_Wss625_Surround_t;
typedef enum {
SD_WSS625_COPYRIGHT_OFF,
SD_WSS625_COPYRIGHT_ON
} SD_Wss625_Copyright_t;
typedef enum {
SD_WSS625_COPY_RESTRICT_NOT,
SD_WSS625_COPY_RESTRICT
} SD_Wss625_Restrict_t;
typedef enum {
SD_MV_OFF,
SD_MV_NTSC_AGC_ONLY,
SD_MV_NTSC_AGC_2L,
SD_MV_NTSC_AGC_4L,
SD_MV_PAL_AGC_ONLY,
SD_MV_PAL_AGC_2L,
SD_MV_PAL_AGC_4L
} SD_Macrovision_t;
#if _USE_SD_HSYNC_INTR
#define SD_HSYNC0 0
#define SD_HSYNC1 1
typedef UINT SD_Hsync_t;
typedef VOID (*SD_HSYNC_CALLBACK)(VOID );
#endif
#if _USE_DVD_AUDIO
/*********************************************
* Enumerations and Structures for Audio Still Video
*********************************************/
typedef UCHAR SD_AsvEffect_t;
/* (Caution)
The following value should be same as the value specified in DVD-Audio Specification */
#define SD_ASV_CUT_IN 0
#define SD_ASV_CUT_OUT SD_ASV_CUT_IN
#define SD_ASV_FADE_IN 1
#define SD_ASV_FADE_OUT SD_ASV_FADE_IN
#define SD_ASV_DISSOLVE 2
#define SD_ASV_WIPE_H_TOP 3 /* Wipe from top */
#define SD_ASV_WIPE_H_BOTTOM 4 /* Wipe from bottom */
#define SD_ASV_WIPE_V_LEFT 5 /* Wipe from left */
#define SD_ASV_WIPE_V_RIGHT 6 /* Wipe from right */
#define SD_ASV_WIPE_D_LEFT 7 /* Wipe diagonal left */
#define SD_ASV_WIPE_D_RIGHT 8 /* Wipe diagonal right */
typedef enum {
SD_ASV_EFFECT_OFF,
SD_ASV_EFFECT_READY,
SD_ASV_EFFECT_ON
} SD_AsvEffectState_t;
typedef struct {
SD_AsvEffect_t old_end_effect;
SD_AsvEffect_t new_start_effect;
SBYTE4 old_end_step;
SBYTE4 new_start_step;
SBYTE4 old_end_num;
SBYTE4 new_start_num;
SBYTE4 init_value;
SD_AsvEffectState_t effect_state;
} SD_DisplayAsv_t;
#define SD_SCALE_ASV 10
#endif
/* WSS, CGMS info */
typedef struct {
BOOL need_to_set;
BOOL is_16_9;
BOOL is_letterboxed;
BOOL is_film_mode;
BYTE1 cgms;
} WssCgms_t;
/*********************************************
* Define
*********************************************/
/* Closed Caption Null Data */
#define CC_NULL_DATA 0x8080
/* NTSC/PAL field rate conversion */
typedef enum {
FIELD_RATE_60_TO_60 = 1, /* NTSC -> NTSC */
FIELD_RATE_50_TO_50, /* PAL -> PAL */
FIELD_RATE_60_TO_50, /* NTSC -> PAL */
FIELD_RATE_50_TO_60, /* PAL -> NTSC */
FIELD_RATE_48_TO_60, /* Film -> NTSC */
FIELD_RATE_48_TO_50 /* Film -> PAL */
} FieldRateConv_t;
/*********************************************
* Functions Define
*********************************************/
VOID SD_Initial(VOID);
VOID SD_DeInitial(VOID);
VOID SD_SetOnOff ( SD_OnOff_t onoff );
SD_OnOff_t SD_GetOnOff ( VOID );
BOOL SD_IsClockRdyDown(VOID);
VOID SD_SetOutput ( SD_Display_t ntsc_pal, SD_IntProg_t pro_int, SD_Dac123_t yp_rgb, SD_Dac4_t y_cvbs, SD_Dac5_t c_cvbs );
VOID SD_SetTvOutput ( SD_Display_t ntsc_pal);
VOID SD_SetIntProgOutput ( SD_IntProg_t pro_int);
SD_IntProg_t SD_GetIntProgOutput(VOID);
#if (_USE_5005) && (_USE_REAL_INTERLACE)
VOID SD_SetComponentOnOff(BOOL enable);
#endif
VOID SD_SetCompAsYPbPr(BOOL set_y_pb_pr);
VOID SD_SetDac(S5H_VideoDacNum_t dac_num, SD_DacType_t dac_type);
VOID SD_SetCompSyncLevel (SD_CscRatio_t csc_ratio);
VOID SD_SetScale ( SD_CscIre_t csc_ire, SD_CscRatio_t csc_ratio,SD_CvbsIre_t cvbs_ire, SD_CvbsRatio_t cvbs_ratio );
VOID SD_GetScale ( SD_CscIre_t *csc_ire,
SD_CscRatio_t *csc_ratio,
SD_CvbsIre_t *cvbs_ire,
SD_CvbsRatio_t *cvbs_ratio );
VOID SD_SetSync ( SD_SyncOnOff_t sync_on_off );
SD_FieldId_t SD_GetFieldId ( VOID );
VOID SD_SetInProOutInter ( BOOL outinter );
VOID SD_ExtractCaptionData(BOOL is_last_data);
VOID SD_ResetClosedCaption(VOID);
VOID SD_SetClosedCaptionData(VOID);
VOID SD_SetCc_Data (USHORT data);
VOID SD_SetCaptionOnOff (S5H_Sdout_DacOutput_t dac_type, BOOL top, BOOL bottom);
VOID SD_Wss_Ypbpr_OnOff ( BOOL ypbpr );
VOID SD_Wss_Rgb_OnOff ( BOOL rgb );
VOID SD_Wss_Yc_OnOff ( BOOL yc );
VOID SD_Wss_Cvbs_OnOff ( BOOL cvbs );
VOID SD_Wss_Dout_OnOff ( BOOL dout );
VOID SD_Cgms_Ypbpr_OnOff ( BOOL ypbpr );
VOID SD_Cgms_Rgb_OnOff ( BOOL rgb );
VOID SD_SetWss525CgmsRatio ( SD_Wss525_Ratio_t anamorphic);
VOID SD_SetWss525Cgms ( SD_Wss525_Cci_t ccionoff, SD_Wss525_Copy_t copyonoff);
VOID SD_SetWss525Aps( SD_Wss525_Analog_t analog, SD_Wss525_Psp_t psp);
VOID SD_SetWss625GroupA ( SD_Wss625_Ratio_t ratio );
VOID SD_SetWss625GroupB ( SD_Wss625_Mode_t camera_film, SD_Wss625_Color_t pal_ma, SD_Wss625_Helper_t helper);
VOID SD_SetWss625GroupC ( SD_Wss625_Teletext_t teletext, SD_Wss625_Subtitle_t subtitle );
VOID SD_SetWss625GroupD ( SD_Wss625_Surround_t surround, SD_Wss625_Copyright_t copyright, SD_Wss625_Restrict_t restrict );
VOID SD_SetCrc( VOID );
VOID SD_SetMacrovision(SD_Macrovision_t type);
#if _USE_DVD_AUDIO
VOID SD_SetAsvEffectInfo(SD_DisplayAsv_t * ptr_asv_info);
INLINE VOID SD_StopAsvEffect(VOID);
INLINE VOID SD_StartAsvEffect(VOID);
INLINE SD_AsvEffectState_t SD_GetAsvEffect(VOID);
#endif
VOID SD_SetFilterValue ( VOID );
VOID Sdout_Interrupt_Enable(BOOL enable);
BOOL Sdout_IsVideoDecodingTime(VOID);
// khn
VOID Sdout_SetAllVDacPower( BOOL onoff );
VOID Sdout_SetVDacPowerExceptCvbs( BOOL onoff );
VOID Sdout_SetVDacCvbs(BOOL onoff);
#if _USE_SD_HSYNC_INTR
VOID SD_EnableHsyncCount(SD_Hsync_t hsync_num, UINT count, SD_HSYNC_CALLBACK callback_func);
VOID SD_DisableHsyncCount(SD_Hsync_t hsync_num);
#endif
#ifdef __cplusplus
}
#endif
#endif /* _SDOUT_API_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -