📄 tvp5146.c
字号:
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 + -