www.pudn.com > Bit1611_demo_code.rar > YUV.H


/* ********************************************************************** 
 
         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.H - Video Decoder. 
 
    Purpose: Interface of YUV module. 
 
    Version: 0.01                                   10:44AM  2005/11/18 
 
    Compiler: Keil 8051 C Compiler v8.01 
 
    Reference: 
    [1] BIT1611B Data Sheet Version 1.0, 2005-11-10, 
        Beyond Innovation Technology 
 
   ---------------------------------------------------------------------- 
    Modification: 
 
    R0.01 10:44AM  2005/11/18 Jeffrey Chang 
    Reason: 
        1. Original. 
    Solution: 
 
   ********************************************************************** */ 
 
 
#ifndef _YUV_H_ 
#define _YUV_H_ 
 
 
/* ------------------------------------ 
    Header Files 
   ------------------------------------ */ 
#include "platform.h" 
 
 
/* ------------------------------------ 
    Macro Definitions 
   ------------------------------------ */ 
#undef EXTERN 
 
 
#ifdef _YUV_C_ 
    #define EXTERN 
#else 
    #define EXTERN extern 
#endif 
 
 
 
/* :::::::::::::::::::::::::::::::::::: 
    VD ADC mode 
   :::::::::::::::::::::::::::::::::::: */ 
#define YUV_ADC_8BITS           0 
#define YUV_ADC_10BITS          1 
#define YUV_ADC_CFG             YUV_ADC_10BITS 
 
/* :::::::::::::::::::::::::::::::::::: 
    [3]131,121 Video Colour Standard 
   :::::::::::::::::::::::::::::::::::: */ 
                                            // CSTD= 0x642[2:0] 
                                            // FIDT= 0x642[3] 
                                            // F= Subcarrier frequency 
                                            // CSTD FIDT    F 
#define YUV_CS_PAL              0x00        // 000  0       4.43361875MHz   PAL B/G/H/D/K/I 
#define YUV_CS_PAL_N            0x01        // 001  0       4.43361875MHz   PAL-N 
#define YUV_CS_SECAM            0x02        // 010  0       4.43361875MHz   SECAM 
#define YUV_CS_PAL_M            0x03        // 011  1       3.575611MHz     PAL-M 
#define YUV_CS_NTSC_443_50      0x04        // 100  0       4.43361875MHz   NTSC 4.43 50Hz 
#define YUV_CS_NTSC_M           0x05        // 101  1       3.579545MHz     NTSC-M/NTSC-Japan 
#define YUV_CS_NTSC_443_60      0x06        // 110  1       4.43361875MHz   NTSC 4.43 60Hz (DVD PAL-60) 
#define YUV_CS_BW               0x07        // 111  0/1                     Black-White (No color burst) 
#define YUV_CS_PAL_60           0x08        // 000  1       4.43361875MHz   PAL-60 
 
#define YUV_CS_SEMI_AUTO        0x09        // SEMI-AUTO 
#define YUV_CS_AUTO             0x0A        // AUTO (PAL B/G/H/D/K/I + NTSC/M) 
 
#define YUV_CS_SIZE             (YUV_CS_AUTO + 1) 
 
#define YUV_CS_480I             0x0B        // 480i 
#define YUV_CS_576I             0x0C        // 576i 
#define YUV_CS_480P             0x0D        // 480p 
#define YUV_CS_576P             0x0E        // 576p 
 
#define YUV_CS_480X234_50       0x0F        //      (480 x 234 @50) ??.???MHz 
#define YUV_CS_480X234_60       0x10        //      (480 x 234 @60) ??.???MHz 
 
 
 
 
#define YUV_CS_NONE             0x10 
#define YUV_CS_NTSC             0x11 
#define YUV_CS_BITEK            0x12 
#define YUV_CS_RGB565           0x13 
 
 
#define YUV_CS_MODE_DEFAULT     YUV_CS_NTSC   // Default YUV Color Standard Mode 
//#define YUV_CS_MODE_DEFAULT     YUV_CS_PAL   // Default YUV Color Standard Mode 
 
 
 
 
#define YUV_SB_BITEK            0xA5 
 
// YUV ID 
typedef enum YUV_ID 
{ 
    YUV_ID_CVBS_11, 
    MIN_YUV_ID      = YUV_ID_CVBS_11, 
 
    YUV_ID_CVBS_21, 
    YUV_ID_YC_Y12C22, 
    MAX_YUV_ID      = YUV_ID_YC_Y12C22, 
    MAX_YUV_NO, 
 
    YUV_ID_YCBCR, 
    YUV_ID_CVBS_12, 
    YUV_ID_CVBS_22, 
    YUV_ID_YC_Y11C21, 
    YUV_ID_RGB888, 
    YUV_ID_RGB888_YPBPR, 
    YUV_ID_RGB888_SCART, 
    YUV_ID_RGB565, 
    YUV_ID_ITU656, 
    YUV_ID_ITU656LIKE 
} enumYUV_ID; 
 
 
/* :::::::::::::::::::::::::::::::::::: 
    YUV High/Low bound 
   :::::::::::::::::::::::::::::::::::: */ 
#define BRIGHTNESS_DEFAULT      EYD_BRIGHTNESS 
#define BRIGHTNESS_MAX          255 
#define BRIGHTNESS_MIN          0 
#define BRIGHTNESS_STEP         1 
#define BRIGHTNESS_OSD_MAX      255 
#define BRIGHTNESS_OSD_MIN      0 
#define BRIGHTNESS_OSD_STEP     1 
 
#define CONTRAST_DEFAULT        EYD_CONTRAST 
#define CONTRAST_MAX            255 
#define CONTRAST_MIN            0 
#define CONTRAST_STEP           1 
#define CONTRAST_OSD_MAX        255 
#define CONTRAST_OSD_MIN        0 
#define CONTRAST_OSD_STEP       1 
 
#define SATURATION_DEFAULT      EYD_SATURATION 
#define SATURATION_MAX          127 
#define SATURATION_MIN          0 
#define SATURATION_STEP         1 
#define SATURATION_OSD_MAX      127 
#define SATURATION_OSD_MIN      0 
#define SATURATION_OSD_STEP     1 
 
#define HUE_DEFAULT             EYD_HUE 
#define HUE_MAX                 255 
#define HUE_MIN                 0 
#define HUE_STEP                1 
#define HUE_OSD_MAX             255 
#define HUE_OSD_MIN             0 
#define HUE_OSD_STEP            1 
 
#define SHARPNESS_DEFAULT       EYD_SHARPNESS 
#define SHARPNESS_MAX           127 
#define SHARPNESS_MIN           0 
#define SHARPNESS_STEP          1 
#define SHARPNESS_OSD_MAX       127 
#define SHARPNESS_OSD_MIN       0 
#define SHARPNESS_OSD_STEP      1 
 
 
#define YUV_SET_BLACKLEVEL          ON 
#define YUV_SET_BRIGHTNESS          ON 
#define YUV_SET_CONTRAST            ON 
#define YUV_SET_HUE                 ON 
#define YUV_SET_SATURATION          ON 
#define YUV_SET_SHARPNESS           ON 
#define YUV_SET_SKINTONE            OFF 
 
#if (VP_IF_CFG == VP_IF_BITEK) 
    #define YUV_MAD_IF              0x83 
#else 
    #define YUV_MAD_IF              0x20 
#endif 
 
#define YUV_MAD                     YUV_MAD_IF          // YUV IF MAD 
 
 
/* ------------------------------------ 
    Type Definitions 
   ------------------------------------ */ 
 
/* ------------------------------------ 
    Variables Definitions/Declarations 
   ------------------------------------ */ 
 
#ifdef _YUV_C_ 
 
        EXTERN UB8 CODE abYUV_0101_0137[] = { 
        // 0    1    2    3    4    5    6    7    8    9    A    B    C    D    E    F 
/* 0 */      0x78,0x0C,0x07,0x28,0x00,0x18,0x84,0x10,0x31,0x00,0x00,0x00,0x5C,0x30,0x00, 
/* 1 */ 0x03,0x80,0x80,0x80,0x40,0xC4,0x09,0xB8,0x4A,0x38,0x02,0xF9,0xD0,0xFC,0x00,0x7C, 
/* 2 */ 0x80,0x00,0xFF,0x00,0x81,0x00,0xFF,0xFF,0x00,0x00,0x44,0x33,0x40,0x40,0x22,0x88, 
/* 3 */ 0x00,0x3C,0x14,0x64,0x40,0x20,0x77,0xDC 
        }; 
 
#else 
 
    EXTERN UB8 CODE abYUV_0101_0137[ 0x037 ]; 
 
#endif 
 
 
 
EXTERN UB8  bYUV_SB;        // Video Decoder Status Byte 
EXTERN UB8  bLastSB; 
EXTERN UB8  bLastCS; 
EXTERN UB8  b642; 
EXTERN UB8  bColorStd; 
 
 
#ifdef _YUV_C_ 
 
    UB8 CODE * CODE apbYUV_Source[ MAX_YUV_NO ] = 
    { 
       //123456789 
        "   CVBS 1",    //  0: CVBS1    AIN11 
        "   CVBS 2",    //  1: CVBS2    AIN21 
        "  S-Video",    //  2: Y/C      AIN01/AIN11 
    }; 
 
 
    UB8 CODE * CODE apbYUV_ColorStd[] = 
    { 
       //123456789 
        "      PAL",    // 0 
        "    PAL/N",    // 1 
        "    SECAM",    // 2 
        "    PAL/M",    // 3 
        "NTSC 4.43",    // 4 
        "   NTSC/M",    // 5 
        "NTSC 4.43",    // 6 
        "      B/W",    // 7 
        "   PAL-60",    // 8 
    }; 
 
 
#else 
 
    extern UB8 CODE * CODE apbYUV_Source[]; 
    extern UB8 CODE * CODE apbYUV_ColorStd[]; 
 
#endif // _YUV_C_ 
 
 
 
sbit VD_nRST_N      = P0 ^ 0; 
 
#define VD_RESET_ON         {                               } 
#define VD_RESET_OFF        {                               } 
 
 
#define YUV_GO_POOLING      ON 
 
#if (YUV_GO_POOLING) 
EXTERN BOOL fYUV_Go_Pooling; 
#endif 
 
/* ------------------------------------ 
    Function Prototypes 
   ------------------------------------ */ 
EXTERN UB8  YUV_GetColorStandard(void); 
EXTERN void YUV_Go(void); 
EXTERN void YUV_HardwareReset(void); 
EXTERN void YUV_Init(void); 
EXTERN BOOL YUV_Ready(void); 
 
 
#if (YUV_SET_BLACKLEVEL) 
EXTERN void YUV_SetBlackLevel(UB8 bBlackLevel); 
#endif 
 
#if (YUV_SET_BRIGHTNESS) 
EXTERN void YUV_SetBrightness(UB8 bBrightness); 
#endif 
 
#if (YUV_SET_CONTRAST) 
EXTERN void YUV_SetContrast(UB8 bContrast); 
#endif 
 
#if (YUV_SET_HUE) 
EXTERN void YUV_SetHue(UB8 bHue); 
#endif 
 
#if (YUV_SET_SATURATION) 
EXTERN void YUV_SetSaturation(UB8 bSaturation); 
#endif 
 
#if (YUV_SET_SHARPNESS) 
EXTERN void YUV_SetSharpness(UB8 bSharpness); 
#endif 
 
#if (YUV_SET_SKINTONE) 
EXTERN void YUV_SetSkinTone(UB8 bSkinTone); 
#endif 
 
EXTERN void YUV_SetSourceMode(UB8 bMode); 
 
 
#endif /* _YUV_H_ */ 
 
/* %% End Of File %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */