예제 #1
0
파일: mdinipc.c 프로젝트: mrtos/testing
//--------------------------------------------------------------------------------------------------------------------------
static MDIN_ERROR_t MDIN3xx_ScaleDownProgNR(PMDIN_VIDEO_INFO pINFO, BOOL OnOff)
{
	PMDIN_SRCVIDEO_INFO pSRC = (PMDIN_SRCVIDEO_INFO)&pINFO->stSRC_m;
	PMDIN_DEINTCTL_INFO pIPC = (PMDIN_DEINTCTL_INFO)&pINFO->stIPC_m;
	WORD nID = (pSRC->stATTB.attb&MDIN_USE_INPORT_A)? 1 : 0;


	if (OnOff==0||(pIPC->attb&MDIN_DEINT_IPC_PROC)) return MDIN_NO_ERROR;
	if ((pIPC->attb&MDIN_DEINT_DN_SCALE)==0) return MDIN_NO_ERROR;

	// because of getting field_id toggle
	// nr_t_en, deinterlace_en
	if (MDINHIF_RegField(MDIN_LOCAL_ID, 0x205, 0, 1, 1)) return MDIN_I2C_ERROR;
	if (MDINHIF_RegField(MDIN_LOCAL_ID, 0x205, 4, 1, 1)) return MDIN_I2C_ERROR;

	// fieldid_bypass, progressive
	if (MDINHIF_RegField(MDIN_LOCAL_ID, 0x001, 2+nID,   1, 1)) return MDIN_I2C_ERROR;
	if (MDINHIF_RegField(MDIN_LOCAL_ID, 0x002, 8-nID*8, 1, 0)) return MDIN_I2C_ERROR;
	
	// out dark screen
	if (MDINHIF_RegField(MDIN_LOCAL_ID, 0x43, 1, 1, 1)) return MDIN_I2C_ERROR;

	// in_test_ptrn
	if (MDINHIF_RegWrite(MDIN_LOCAL_ID, 0x042, 0x0084)) return MDIN_I2C_ERROR;

	MDINDLY_mSec(100);		// delay 100ms

	// restore deinterlace_en, progressive, in_test_ptrn
	if (MDINHIF_RegField(MDIN_LOCAL_ID, 0x205, 4, 1, 0)) return MDIN_I2C_ERROR;
	if (MDINHIF_RegField(MDIN_LOCAL_ID, 0x002, 8-nID*8, 1, 1)) return MDIN_I2C_ERROR;
	if (MDINHIF_RegWrite(MDIN_LOCAL_ID, 0x042, 0x0000)) return MDIN_I2C_ERROR;
	if (MDINHIF_RegField(MDIN_LOCAL_ID, 0x43, 1, 1, 0)) return MDIN_I2C_ERROR;
	return MDIN_NO_ERROR;
}
예제 #2
0
//--------------------------------------------------------------------------------------------------------------------------
static void CreateMDIN380VideoInstance(void)
{
	WORD nID = 0;

//	MDIN_RST(ON);
//	MDINDLY_mSec(10);	// delay 10ms

#if	!defined(SYSTEM_USE_PCI_HIF)&&defined(SYSTEM_USE_MCLK202)
	MDIN3xx_SetHCLKMode(MDIN_HCLK_CRYSTAL);	// set HCLK to XTAL
	MDINDLY_mSec(10);	// delay 10ms
#endif

#if defined(SYSTEM_USE_MDIN380)&&defined(SYSTEM_USE_BUS_HIF)
#if		CPU_ACCESS_BUS_NBYTE == 1
	MDIN3xx_SetHostDataMapMode(MDIN_HOST_DATA_MAP2);	// mux-16bit map
#elif	CPU_ACCESS_BUS_NOMUX == 1
	MDIN3xx_SetHostDataMapMode(MDIN_HOST_DATA_MAP0);	// sep-8bit map
#else
	MDIN3xx_SetHostDataMapMode(MDIN_HOST_DATA_MAP1);	// mux-8bit map
#endif
#endif

	while (nID!=0x85) MDIN3xx_GetChipID(&nID);	// get chip-id
	MDIN3xx_EnableMainDisplay(OFF);		// set main display off
	MDIN3xx_SetMemoryConfig();			// initialize DDR memory

#if 	!defined(SYSTEM_USE_PCI_HIF)&&defined(SYSTEM_USE_MCLK202)
	MDIN3xx_SetHCLKMode(MDIN_HCLK_MEM_DIV);	// set HCLK to MCLK/2
	MDINDLY_mSec(10);	// delay 10ms
#endif

	MDIN3xx_SetVCLKPLLSource(MDIN_PLL_SOURCE_XTAL);		// set PLL source
	MDIN3xx_EnableClockDrive(MDIN_CLK_DRV_ALL, ON);

	MDIN3xx_SetInDataMapMode(MDIN_IN_DATA36_MAP0);		// set in-data map
//	MDIN3xx_SetDIGOutMapMode(MDIN_DIG_OUT_M_MAP0);		// disable digital out
//	MDIN3xx_SetDIGOutMapMode(MDIN_DIG_OUT_X_MAP12);		// enable digital out
	MDIN3xx_SetDIGOutMapMode(MDIN_DIG_OUT_X_MAP15);
	// setup enhancement
	MDIN3xx_SetFrontNRFilterCoef(NULL);		// set default frontNR filter coef
	MDINAUX_SetFrontNRFilterCoef(NULL);		// set default frontNR filter coef
	MDIN3xx_SetPeakingFilterCoef(NULL);		// set default peaking filter coef
	MDIN3xx_SetColorEnFilterCoef(NULL);		// set default color enhancer coef
	MDIN3xx_SetBlockNRFilterCoef(NULL);		// set default blockNR filter coef
	MDIN3xx_SetMosquitFilterCoef(NULL);		// set default mosquit filter coef
	MDIN3xx_SetSkinTonFilterCoef(NULL);		// set default skinton filter coef

	MDIN3xx_EnableLTI(OFF);					// set LTI off
	MDIN3xx_EnableCTI(OFF);					// set CTI off
	MDIN3xx_SetPeakingFilterLevel(0);		// set peaking gain
	MDIN3xx_EnablePeakingFilter(ON);		// set peaking on

	MDIN3xx_EnableFrontNRFilter(OFF);		// set frontNR off
	MDIN3xx_EnableBWExtension(OFF);			// set B/W extension off


	MDIN3xx_SetIPCBlock();		// initialize IPC block (3DNR gain is 34)

	memset((PBYTE)&stVideo, 0, sizeof(MDIN_VIDEO_INFO));

	MDIN3xx_SetMFCHYFilterCoef(&stVideo, NULL);	// set default MFC filters
	MDIN3xx_SetMFCHCFilterCoef(&stVideo, NULL);
	MDIN3xx_SetMFCVYFilterCoef(&stVideo, NULL);
	MDIN3xx_SetMFCVCFilterCoef(&stVideo, NULL);

	// set aux display ON
	stVideo.dspFLAG = MDIN_AUX_DISPLAY_ON | MDIN_AUX_FREEZE_OFF;

	// set video path (main/aux/dac/enc)
	stVideo.srcPATH = PATH_MAIN_A_AUX_M;	// set main is A, aux is A , 01Aug2011
	stVideo.dacPATH = DAC_PATH_AUX_4CH;	// set 4ch mode , 01Aug2011
	stVideo.encPATH = VENC_PATH_PORT_X;		// set venc is aux

	// if you need to front format conversion then set size.
//	stVideo.ffcH_m  = 1440;

	// define video format of PORTA-INPUT
#if	defined(SYSTEM_USE_4D1_IN)
//#if 	defined(NTSC_4D1_IN)
	if ((video_mode == VDCNV_4CH_ON_NTSC) || (video_mode == VDCNV_4CH_ON_NTSC_960))
		stVideo.stSRC_a.frmt = VIDSRC_720x480i60;	// 08Aug2011
//#endif
//#if	defined(PAL_4D1_IN)
	else
		stVideo.stSRC_a.frmt = VIDSRC_720x576i50;	// 08Aug2011
//#endif
#endif
	stVideo.stSRC_a.mode = MDIN_SRC_MUX656_8;	// 01Aug2011
	stVideo.stSRC_a.fine = MDIN_FIELDID_BYPASS | MDIN_LOW_IS_TOPFLD;

	// define video format of MAIN-OUTPUT
#if	defined(SYSTEM_USE_4D1_IN)
//#if 	defined(NTSC_4D1_IN)
if ((video_mode == VDCNV_4CH_ON_NTSC) || (video_mode == VDCNV_4CH_ON_NTSC_960))
		stVideo.stOUT_m.frmt = VIDOUT_720x480p60;	// 08Aug2011
//#endif
//#if	defined(PAL_4D1_IN)
	else
		stVideo.stOUT_m.frmt = VIDOUT_720x576p50;	// 08Aug2011
//#endif
#endif
	stVideo.stOUT_m.mode = MDIN_OUT_YUV444_8;	// 01Aug2011
	stVideo.stOUT_m.fine = MDIN_SYNC_FREERUN;	// set main outsync free-run

	stVideo.stOUT_m.brightness = 128;			// set main picture factor
	stVideo.stOUT_m.contrast = 128;
	stVideo.stOUT_m.saturation = 128;
	stVideo.stOUT_m.hue = 128;

#if RGB_GAIN_OFFSET_TUNE == 1
	stVideo.stOUT_m.r_gain = 128;				// set main gain/offset
	stVideo.stOUT_m.g_gain = 128;
	stVideo.stOUT_m.b_gain = 128;
	stVideo.stOUT_m.r_offset = 128;
	stVideo.stOUT_m.g_offset = 128;
	stVideo.stOUT_m.b_offset = 128;
#endif

	// define video format of IPC-block
	stVideo.stIPC_m.mode = MDIN_DEINT_ADAPTIVE;
	stVideo.stIPC_m.film = MDIN_DEINT_FILM_ALL;
	stVideo.stIPC_m.gain = 34;

	if (video_mode == VDCNV_4CH_ON_NTSC_960)
	{
		stVideo.stIPC_m.fine = MDIN_DEINT_3DNR_OFF;
		// define map of frame buffer
		stVideo.stMAP_m.frmt = MDIN_MAP_AUX_ON_NR_OFF;	// when MDIN_DEINT_3DNR_OFF
	}
	else
	{
		stVideo.stIPC_m.fine = MDIN_DEINT_3DNR_ON | MDIN_DEINT_CCS_ON;
		stVideo.stMAP_m.frmt = MDIN_MAP_AUX_ON_NR_ON;
	}

	// define video format of PORTB-INPUT
	stVideo.stSRC_b.frmt = VIDSRC_720x480i60;
	stVideo.stSRC_b.mode = MDIN_SRC_MUX656_8;
	stVideo.stSRC_b.fine = MDIN_FIELDID_INPUT | MDIN_LOW_IS_TOPFLD;

	// define video format of AUX-OUTPUT
#if	defined(SYSTEM_USE_4D1_IN) && defined(SYSTEM_USE_4D1_IN_QUADOUT) // for 4D1 input Quad output mode
//	#if defined(NTSC_4D1_IN)
//	stVideo.stOUT_x.frmt = VIDOUT_1920x1080p60;	// for full screen output, 01Aug2011
	if (video_mode == VDCNV_4CH_ON_NTSC)
	{
		stVideo.stOUT_x.frmt = VIDOUT_1600x1200p60;	// for no scale(1:1) output (1440x960), 01Aug2011
	}
	else if (video_mode == VDCNV_4CH_ON_NTSC_960 )
		stVideo.stOUT_x.frmt = VIDOUT_1920x1200pRB;	// for no scale(1:1) output (1980x960), 26Oct2011
//	#endif
//	#if defined(PAL_4D1_IN)
//	stVideo.stOUT_x.frmt = VIDOUT_1920x1080p50;	// for full screen output, 01Aug2011
	else {
		stVideo.stOUT_x.frmt = VIDOUT_1600x1200p60;	// for no scale(1:1) output (1440x1152), 01Aug2011
	}
//	#endif
//	stVideo.stOUT_x.mode = MDIN_OUT_RGB444_8; //MDIN_EMB422_8 YUV422	// 01Aug2011
	stVideo.stOUT_x.mode = MDIN_OUT_EMB422_8; //MDIN_OUT_EMB422_8 YUV422
#endif

#if	defined(SYSTEM_USE_4D1_IN) && defined(SYSTEM_USE_4D1_IN_656OUT) // for 4D1 input BT656 output mode
	stVideo.stOUT_x.frmt = VIDOUT_720x480i60;
	stVideo.stOUT_x.mode = MDIN_OUT_MUX656_8;
#endif
	stVideo.stOUT_x.fine = MDIN_SYNC_FREERUN;	// set aux outsync free-run

	stVideo.stOUT_x.brightness = 128;			// set aux picture factor
	stVideo.stOUT_x.contrast = 128;
	stVideo.stOUT_x.saturation = 128;
	stVideo.stOUT_x.hue = 128;

#if RGB_GAIN_OFFSET_TUNE == 1
	stVideo.stOUT_x.r_gain = 128;				// set aux gain/offset
	stVideo.stOUT_x.g_gain = 128;
	stVideo.stOUT_x.b_gain = 128;
	stVideo.stOUT_x.r_offset = 128;
	stVideo.stOUT_x.g_offset = 128;
	stVideo.stOUT_x.b_offset = 128;
#endif

#if	defined(SYSTEM_USE_4D1_IN)
	// define video format of 4CH-display, 	01Aug2011
	stVideo.st4CH_x.chID  = MDIN_4CHID_IN_SYNC;	// set CH-ID extract
	stVideo.st4CH_x.order = MDIN_4CHID_A1A2B1B2; 	// set CH-ID mapping
	stVideo.st4CH_x.view  = MDIN_4CHVIEW_ALL;	// set 4CH view mode
#endif

	// define video format of video encoder
	stVideo.encFRMT = VID_VENC_NTSC_M;

	// define video format of HDMI-OUTPUT
	stVideo.stVID_h.mode  = HDMI_OUT_RGB444_8;
	stVideo.stVID_h.fine  = HDMI_CLK_EDGE_RISE;

	stVideo.stAUD_h.frmt  = AUDIO_INPUT_I2S_0;						// audio input format
	stVideo.stAUD_h.freq  = AUDIO_MCLK_256Fs | AUDIO_FREQ_48kHz;	// sampling frequency
	stVideo.stAUD_h.fine  = AUDIO_MAX24B_MINUS0 | AUDIO_SD_JUST_LEFT | AUDIO_WS_POLAR_HIGH |
							AUDIO_SCK_EDGE_RISE | AUDIO_SD_MSB_FIRST | AUDIO_SD_1ST_SHIFT;
	MDINHTX_SetHDMIBlock(&stVideo);		// initialize HDMI block

	// define window for inter-area
	stInterWND.lx = 315;	stInterWND.rx = 405;
	stInterWND.ly = 90;		stInterWND.ry = 150;
	MDIN3xx_SetDeintInterWND(&stInterWND, MDIN_INTER_BLOCK0);
	MDIN3xx_EnableDeintInterWND(MDIN_INTER_BLOCK0, OFF);

//	stVideo.exeFLAG = MDIN_UPDATE_MAINFMT;	// execution of video process
	stVideo.exeFLAG = MDIN_UPDATE_MAINFMT | MDIN_UPDATE_AUXFMT;
}