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

📄 tvp5146.c

📁 IT projecotr reference design.
💻 C
📖 第 1 页 / 共 4 页
字号:
	int08  RetVal;
	uint08 WorkUint08[2];
	uint32 numWritten;
	
	//percent = (uint08)((uint16)255*(uint16)percent/100);
	
	WorkUint08[0] = LUM_CONTRAST;
	WorkUint08[1] = percent;
	
	RetVal = DEC_i2c_MasterWrite(i2c_port,
	                    (uint16) i2c_addr,
						sizeof(WorkUint08),	/* num write bytes */
						WorkUint08,			/* data buffer */
						0,					/* byte delay */
						1000,				/* timeout */
						&numWritten);
	
	return RetVal;
}

//-----------------------------------------------------------------------------
//@RoutineName :: DEC_GetGain
//
//@Description :: TVP51xx Video Decoder: Get gain value (CONTRAST)
//
//@Parameter   ::
//	uint08 i2c_addr	:	I2C Device Address
//	uint08 *percent			:	pointer to the Gain value (CONTRAST)
//
//@Return      :: int08: PASS/FAIL
//-----------------------------------------------------------------------------
int08 DEC_GetGain(  uint08 *percent)
{
	int08  RetVal;
	uint08 WorkUint08[2];
	uint32 numWritten, numRead;
	
	
	WorkUint08[0] = LUM_CONTRAST;
	
	RetVal = DEC_i2c_MasterWriteRestartRead(i2c_port,
	                                (uint16) i2c_addr,
									1,					/* num write bytes */
									WorkUint08,			/* write buffer */
									0,					/* write delay */
									1,					/* num read bytes */
									&(WorkUint08[1]),	/* Read data buffer */
									1000,				/* timeout (ms) */
									&numWritten,
									&numRead);
	
	if (RetVal == PASS) {	
		*percent = WorkUint08[1];
	}
	
	return RetVal;
}

//-----------------------------------------------------------------------------
//@RoutineName :: DEC_SetOffset
//
//@Description :: TVP51xx Video Decoder: Set offset value (BRIGHTNESS)
//
//@Parameter   ::
//	uint08 i2c_addr	:	I2C Device Address
//	uint08 percent			:	Offset value (BRIGHTNESS)
//
//@Return      :: int08: PASS/FAIL
//-----------------------------------------------------------------------------
int08 DEC_SetOffset(  uint08 percent)
{
	int08  RetVal;
	uint08 WorkUint08[2];
	uint32 numWritten;
	
	//percent = (uint08)((uint16)255*(uint16)percent/100);

	
	WorkUint08[0] = LUM_BRIGHT;
	WorkUint08[1] = percent;
	
	RetVal = DEC_i2c_MasterWrite(i2c_port,
	                    (uint16) i2c_addr,
						sizeof(WorkUint08),	/* num write bytes */
						WorkUint08,			/* data buffer */
						0,					/* byte delay */
						1000,				/* timeout */
						&numWritten);
	
	return RetVal;
}

//-----------------------------------------------------------------------------
//@RoutineName :: DEC_GetOffset
//
//@Description :: TVP51xx Video Decoder: Get offset value (BRIGHTNESS)
//
//@Parameter   ::
//	uint08 i2c_addr	:	I2C Device Address
//	uint08 *percent			:	pointer to the Gain value (BRIGHTNESS)
//
//@Return      :: int08: PASS/FAIL
//-----------------------------------------------------------------------------
int08 DEC_GetOffset(  uint08 *percent)
{
	int08  RetVal;
	uint08 WorkUint08[2];
	uint32 numWritten, numRead;
	
	
	WorkUint08[0] = LUM_BRIGHT;
	
	RetVal = DEC_i2c_MasterWriteRestartRead(i2c_port,
	                                (uint16) i2c_addr,
									1,					/* num write bytes */
									WorkUint08,			/* write buffer */
									0,					/* write delay */
									1,					/* num read bytes */
									&(WorkUint08[1]),	/* Read data buffer */
									1000,				/* timeout (ms) */
									&numWritten,
									&numRead);
	
	if (RetVal == PASS) {	
		*percent = WorkUint08[1];
	}
	
	
	return RetVal;
}

int08 DEC_SetupOutputWindows(  FrequencyType freq, VideoStdTypeEnum std)
{
	return PASS;
}

//-----------------------------------------------------------------------------
//@RoutineName :: DEC_SetTint
//
//@Description :: TVP51xx Video Decoder: Set TINT value (Hue)
//
//@Parameter   ::
//	uint08 i2c_addr	:	I2C Device Address
//	uint08 percent			:	Tint value (Hue)
//
//@Return      :: int08: PASS/FAIL
//-----------------------------------------------------------------------------
int08 DEC_SetTint(  uint08 percent)
{
	int08  RetVal;
	uint08 WorkUint08[2];
	uint32 numWritten;
	
	//percent = (uint08)((int16)255*((int16)percent-50)/100);
	
	
	WorkUint08[0] = CHROM_HUE;
	WorkUint08[1] = percent;
	
	RetVal = DEC_i2c_MasterWrite(i2c_port,
	                    (uint16) i2c_addr,
						sizeof(WorkUint08),	/* num write bytes */
						WorkUint08,			/* data buffer */
						0,					/* byte delay */
						1000,				/* timeout */
						&numWritten);
	
	
	return RetVal;
}

//-----------------------------------------------------------------------------
//@RoutineName :: DEC_GetTint
//
//@Description :: TVP51xx Video Decoder: Get TINT value (Hue)
//
//@Parameter   ::
//	uint08 i2c_addr	:	I2C Device Address
//	uint08 *percent			:	pointer to Tint value (Hue)
//
//@Return      :: int08: PASS/FAIL
//-----------------------------------------------------------------------------
int08 DEC_GetTint(  uint08 *percent)
{
	int08  RetVal;
	uint08 WorkUint08[2];
	uint32 numWritten, numRead;
	
	
	WorkUint08[0] = CHROM_HUE;
	
	RetVal = DEC_i2c_MasterWriteRestartRead(i2c_port,
	                                (uint16) i2c_addr,
									1,					/* num write bytes */
									WorkUint08,			/* write buffer */
									0,					/* write delay */
									1,					/* num read bytes */
									&(WorkUint08[1]),	/* Read data buffer */
									1000,				/* timeout (ms) */
									&numWritten,
									&numRead);
	
	if (RetVal == PASS) {		
		*percent = WorkUint08[1];
	}
	
	return RetVal;
}

//-----------------------------------------------------------------------------
//@RoutineName :: DEC_SetColor
//
//@Description :: TVP51xx Video Decoder: Set Color value (Saturation)
//
//@Parameter   ::
//	uint08 i2c_addr	:	I2C Device Address
//	uint08 percent			:	Color value (Saturation)
//
//@Return      :: int08: PASS/FAIL
//-----------------------------------------------------------------------------
int08 DEC_SetColor(  uint08 percent)
{
	int08  RetVal;
	uint08 WorkUint08[2];
	uint32 numWritten;
	
	//percent = (uint08)((uint16)255*(uint16)percent/100);
	
	
	WorkUint08[0] = CHROM_SAT;
	WorkUint08[1] = percent;
	
	RetVal = DEC_i2c_MasterWrite(i2c_port,
	                    (uint16) i2c_addr,
						sizeof(WorkUint08),	/* num write bytes */
						WorkUint08,			/* data buffer */
						0,					/* byte delay */
						1000,				/* timeout */
						&numWritten);
	
	
	return RetVal;
}

//-----------------------------------------------------------------------------
//@RoutineName :: DEC_GetTint
//
//@Description :: TVP51xx Video Decoder: Get Color value (Saturation)
//
//@Parameter   ::
//	uint08 i2c_addr	:	I2C Device Address
//	uint08 *percent			:	pointer to Color value (Saturation)
//
//@Return      :: int08: PASS/FAIL
//-----------------------------------------------------------------------------
int08 DEC_GetColor(  uint08 *percent)
{
	int08  RetVal;
	uint08 WorkUint08[2];
	uint32 numWritten, numRead;
	
	WorkUint08[0] = CHROM_SAT;
	
	RetVal = DEC_i2c_MasterWriteRestartRead(i2c_port,
	                                (uint16) i2c_addr,
									1,					/* num write bytes */
									WorkUint08,			/* write buffer */
									0,					/* write delay */
									1,					/* num read bytes */
									&(WorkUint08[1]),	/* Read data buffer */
									1000,				/* timeout (ms) */
									&numWritten,
									&numRead);
	
	if (RetVal == PASS) {		
		*percent = WorkUint08[1];
	}
	
	return RetVal;
}

//-----------------------------------------------------------------------------
//@RoutineName :: DEC_GetLinesPerField
//
//@Description :: TVP51xx Video Decoder: Get Lines per Field
//
//@Parameter   ::
//	uint08 i2c_addr	:	I2C Device Address
//	uint16 *lines			:	pointer to Lines per Field
//
//@Return      :: int08: PASS/FAIL
//-----------------------------------------------------------------------------
int08 DEC_GetLinesPerField(  uint16 *lines)
{
	int08  RetVal;
	uint08 WorkUint08[3];
	uint32 numWritten, numRead;
	

	

	
	WorkUint08[0] = VERT_LINE_COUNT_1;
	
	RetVal = DEC_i2c_MasterWriteRestartRead(i2c_port,
	                                (uint16) i2c_addr,
									1,					/* num write bytes */
									WorkUint08,			/* write buffer */
									0,					/* write delay */
									2,					/* num read bytes */
									&(WorkUint08[1]),	/* Read data buffer */
									1000,				/* timeout (ms) */
									&numWritten,
									&numRead);
	
	if (RetVal == PASS) {		
		*lines = WorkUint08[2];
		*lines = (uint16)((*lines << 8) | WorkUint08[1]);
		*lines /= 2;
	}
	
	return RetVal;
}

//-----------------------------------------------------------------------------
//@RoutineName :: DEC_GetLinesPerFrame
//
//@Description :: TVP51xx Video Decoder: Get Lines per Frame
//
//@Parameter   ::
//	uint08 i2c_addr	:	I2C Device Address
//	uint16 *lines			:	pointer to Lines per Frame
//
//@Return      :: int08: PASS/FAIL
//-----------------------------------------------------------------------------
int08 DEC_GetLinesPerFrame(  uint16 *lines)
{
	int08  RetVal;
	uint08 WorkUint08[3];
	uint32 numWritten, numRead;
	



	
	WorkUint08[0] = VERT_LINE_COUNT_1;
	
	RetVal = DEC_i2c_MasterWriteRestartRead(i2c_port,
	                                (uint16) i2c_addr,
									1,					/* num write bytes */
									WorkUint08,			/* write buffer */
									0,					/* write delay */
									2,					/* num read bytes */
									&(WorkUint08[1]),	/* Read data buffer */
									1000,				/* timeout (ms) */
									&numWritten,
									&numRead);
	
	if (RetVal == PASS) {		
		*lines = WorkUint08[2];
		*lines = (uint16)((*lines << 8) | WorkUint08[1]);
	}
	
	
	return RetVal;
}

//-----------------------------------------------------------------------------
//@RoutineName :: DEC_GetPixelsPerLine
//
//@Description :: TVP51xx Video Decoder: Get Pixels per Line
//
//@Parameter   ::
//	uint08 i2c_addr	:	I2C Device Address
//	uint16 *pixels			:	pointer to Pixels per line
//
//@Return      :: int08: PASS/FAIL
//-----------------------------------------------------------------------------
int08 DEC_GetPixelsPerLine(  uint16 *pixels)
{
	*pixels = 720;	// 601 sampling
//	*pixels = 640;	// Square sampling: 60 Hz
//	*pixels = 768;	// Square sampling: 50 Hz
	
	return PASS;
}

int08 DEC_GetCombFilterSetup(  CombSetupType *config)
{
	return PASS;
}

int08 DEC_SetCombFilterSetup(  CombSetupType config)
{
	return PASS;
}
//=================================================================================================

//-----------------------------------------------------------------------------
//@RoutineName :: DEC_IsProgressive
//
//@Description :: TVP51xx Video Decoder Check if interlaced/progressive
//
//@Parameter   ::
//	uint08 i2c_addr	:	I2C Device Address
//	BOOL *signal			: interlaced status
//
//@Return      :: int08: PASS/FAIL
//-----------------------------------------------------------------------------
int08 DEC_IsProgressive(  BOOL *progressive )
{
    // TVP5146 does not support progressive video
    *progressive = 0;
	
	return PASS;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -