?? yuv.c
字號:
/* **********************************************************************
Copyright (c) 2002-2006 Beyond Innovation Technology Co., Ltd
All rights are reserved. Reproduction in whole or in parts is
prohibited without the prior written consent of the copyright owner.
----------------------------------------------------------------------
Module: YUV.C - Video Decoder.
Purpose: Implementation of YUV module.
Version: 0.01 08:33PM 2005/12/27
Compiler: Keil 8051 C Compiler v8.01
Reference:
[1] BIT1611B Data Sheet Version 1.0, 2005-11-10,
Beyond Innovation Technology
----------------------------------------------------------------------
Modification:
R0.01 08:32PM 2005/12/27 Jeffrey Chang
Reason:
1. Original.
Solution:
----------------------------------------------------------------------
[00001] 19:10PM 2006/01/02 Lily Huang
Reason:
1. Revise the checking conditon to prevent misjudgement.
Solution:
********************************************************************** */
#define _YUV_C_
/* ------------------------------------
Header Files
------------------------------------ */
#include "bitek.h"
#include "eeprom.h"
#include "led.h"
#include "menu.h"
#include "mcu.h"
#include "osd.h"
#include "platform.h"
#include "timer.h"
#include "yuv.h"
/* ------------------------------------
Macro Definitions
------------------------------------ */
/* ------------------------------------
Type Definitions
------------------------------------ */
/* ------------------------------------
Variables Definitions
------------------------------------ */
static UB8 bIdx;
/* ------------------------------------
Function Prototypes
------------------------------------ */
/* -------------------------------------------------------------------
Name: YUV_Go - (YUV_01_BIT1611B)
Purpose: Polling Video Decoder status.
Passed: None.
Returns: None.
Notes:
------------------------------------------------------------------- */
void YUV_Go (void)
{
switch (tsEYD.bYUV_ID)
{
case YUV_ID_CVBS_11:
case YUV_ID_CVBS_21:
case YUV_ID_YC_Y12C22:
bYUV_SB = BITEK_RxByte(YUV_MAD, VP_186_DVP_STATUS);
// lock no change
if (bYUV_SB == bLastSB)
return;
break;
} // switch
if (YUV_Ready())
{
// Video signal is ready !
// To check TV color standard !
tsEYD.bYUV_CS = YUV_GetColorStandard();
// To setup VP original Color Standard !
//VP_SetColorStandard(tsEYD.bYUV_CS);
// To stop flashing RED LED !
LED_RED_BLINK_OFF;
LED_RED_OFF;
switch (tsEYD.bYUV_ID)
{
case YUV_ID_CVBS_11:
case YUV_ID_CVBS_21:
case YUV_ID_YC_Y12C22:
bColorStd = bYUV_SB & VP_MASK_COLOR_STANDARD;
if ((bColorStd == YUV_CS_PAL) &&
(bYUV_SB & VP_MASK_FIDT) )
{
// 60Hz
bColorStd = YUV_CS_PAL_60;
}
if (bYUV_SB & VP_MASK_FIDT)
{
// 60Hz
BITEK_TxByte(YUV_MAD, VP_12A_ACLAMP_LEVEL, 0x44);
}
else
{
// 50Hz
BITEK_TxByte(YUV_MAD, VP_12A_ACLAMP_LEVEL, 0x48);
}
OSD_ShowMsg(OSD_MESSAGE,
OSD_X_COLOR_STD,
OSD_Y_COLOR_STD,
apbYUV_ColorStd[ bColorStd ]);
break;
} // switch
OSD_EnableWindow(OSD_MESSAGE, ON);
// OSD Auto OFF !
wMENU_Tick = MENU_AUTO_OFF_TIME;
// To disable Backlight !
MCU_BL_ON;
}
else
{
// To flash RED LED !
LED_RED_BLINK_ON;
// Show Message for NO SIGNAL
OSD_ShowMsg(OSD_MESSAGE,
OSD_X_COLOR_STD,
OSD_Y_COLOR_STD,
abNoSignal );
OSD_EnableWindow(OSD_MESSAGE, ON);
bLastCS = YUV_CS_NONE;
// To disable OSD Auto OFF !
wMENU_Tick = 0;
} // bYUV_SB && bYUV_MSTS
#ifdef NOT_JUNK
OSD_ShowHex(OSD_MESSAGE, 0, 0, bYUV_SB);
OSD_ShowHex(OSD_MESSAGE, 3, 0, bLastSB);
#endif
// To backup the debounced Status Byte !
bLastSB = bYUV_SB;
} // YUV_Go
/* -------------------------------------------------------------------
Name: YUV_HardwareReset - (YUV_01_BIT1611B)
Purpose: To reset Video Decoder chip before setting any registers.
Passed:
Returns:
Notes: [2]16
------------------------------------------------------------------- */
void YUV_HardwareReset (void)
{
} /* YUV_HardwareReset */
/* -------------------------------------------------------------------
Name: YUV_Init - (YUV_01_BIT1611B)
Purpose: To initialize the YUV module.
Passed: None.
Returns: None.
Notes:
------------------------------------------------------------------- */
void YUV_Init (void)
{
//YUV_HardwareReset();
bLastSB = YUV_SB_BITEK;
// Look-Up Table Approach
BITEK_TxBurst(YUV_MAD, VP_101_AFE_ATTR, sizeof(abYUV_0101_0137), abYUV_0101_0137);
LED_RED_BLINK_OFF;
LED_RED_OFF;
// Brightness
YUV_SetBrightness(tsEYD.bBrightness);
// Contrast
YUV_SetContrast(tsEYD.bContrast);
// Saturation
YUV_SetSaturation(tsEYD.bSaturation);
// Hue
YUV_SetHue(tsEYD.bHue);
// Sharpness !
YUV_SetSharpness(tsEYD.bSharpness);
// BlackLevel !
YUV_SetBlackLevel(tsEYD.bBlackLevel);
#if (YUV_GO_POOLING)
fYUV_Go_Pooling = TRUE;
#endif
} // YUV_Init
/* -------------------------------------------------------------------
Name: YUV_Ready - (YUV_01_BIT1611B)
Purpose: To check whether video signal is locked.
Passed: None.
Returns:
TRUE if video signal is locked.
Notes:
------------------------------------------------------------------- */
BOOL YUV_Ready (void)
{
switch (tsEYD.bYUV_ID)
{
case YUV_ID_CVBS_11:
case YUV_ID_CVBS_21:
case YUV_ID_YC_Y12C22:
// CVBS or S-Video
////////////////////////////////////////////////////////////////////
// [00001] Revised by LH 19:10PM 2006/01/02
if ((bYUV_SB & VP_MASK_STATUS_LOCK) == VP_MASK_STATUS_LOCK)
////////////////////////////////////////////////////////////////////
return( TRUE );
else
return( FALSE );
break;
} // switch
} // YUV_Ready
#define DSUB_640X400_70_4142 0x01C1
#define DSUB_720X400_70_4142 0x01C1
#define DSUB_VGA60_4142 0x020D
#define DSUB_SVGA50_4142 0x0271
#define DSUB_SVGA60_4142 0x0275
#define DSUB_640X400_CRITERIA ((DSUB_640X400_70_4142 + DSUB_VGA60_4142) / 2)
#define DSUB_VGA60_CRITERIA ((DSUB_VGA60_4142 + DSUB_SVGA50_4142) / 2)
#define DSUB_SVGA50_CRITERIA ((DSUB_SVGA50_4142 + DSUB_SVGA60_4142) / 2)
/* -------------------------------------------------------------------
Name: YUV_GetColorStandard - (YUV_01_BIT1611B)
Purpose: To detect Color Standard mode.
Passed: None.
Returns:
YUV_CS_NTSC if NTSC/M
YUV_CS_PAL_BGDHI if PAL B/G/D/H/I
YUV_CS_SECAM_L if SECAM/L
YUV_CS_NONE if others
Notes:
0x39 0x3A 0x3B 0x40 0x41 0x42
640x400@70 19 38 33 BF C1 11
720x400@70 69 88 33 02 C1 01
640x480@60 F9 18 23 0B 0D 22
800x600@50 48 58 33 6C 71 22
800x600@60 00 1F 44 70/71 74/75 22
YPbPr 480i 39 58 33 06/07 0E/11 01
YPbPr 576i 39 58 33 06 40 01
YPbPr 480p 39 58 33 06 0D 02
YPbPr 576p 39 58 33 05 71 02
SCART 480i 56 58 33 06 40 01
SCART 576i 01 58 03 06/07 0E/11 01
------------------------------------------------------------------- */
UB8 YUV_GetColorStandard (void)
{
switch (tsEYD.bYUV_ID)
{
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -