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

📄 sdout_api.h

📁 SAMSUNG 5009的源代码
💻 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 + -