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

📄 theatre.c

📁 x.org上有关ati系列显卡最新驱动
💻 C
📖 第 1 页 / 共 5 页
字号:
        case (DEC_NTSC):            if ((t->wStandard & 0xFF00) == extNTSC_J)            {                dbYgain = 219.0 / ( 100.0 * (double)(dbSynctipRef0) /40.0);            }            else            {                dbSetup = 7.5 * (double)(dbSynctipRef0) / 40.0;                dbYgain = 219.0 / (92.5 * (double)(dbSynctipRef0) / 40.0);            }            break;        case (DEC_PAL):        case (DEC_SECAM):            dbYgain = 219.0 / ( 100.0 * (double)(dbSynctipRef0) /43.0);            break;        default:            break;    }    wBrightness = (CARD16) (16.0 * ((dbBrightness-dbSetup) + (16.0 / (dbContrast * dbYgain))));    WriteRT_fld (fld_LP_BRIGHTNESS, wBrightness);    /*RT_SetSaturation (t->iSaturation); */    return;} /* RT_SetBrightness ()... *//**************************************************************************** * RT_SetSharpness (CARD16 wSharpness)                                        * *  Function: sets the sharpness level for the Rage Theatre video in        * *    Inputs: CARD16 wSharpness - the sharpness value to be set.              * *   Outputs: NONE                                                          * ****************************************************************************/void RT_SetSharpness (TheatrePtr t, CARD16 wSharpness){    switch (wSharpness)    {        case DEC_SMOOTH :            WriteRT_fld (fld_H_SHARPNESS, RT_NORM_SHARPNESS);            t->wSharpness = RT_NORM_SHARPNESS;            break;        case DEC_SHARP  :            WriteRT_fld (fld_H_SHARPNESS, RT_HIGH_SHARPNESS);            t->wSharpness = RT_HIGH_SHARPNESS;            break;        default:            break;    }    return;} /* RT_SetSharpness ()... *//**************************************************************************** * RT_SetContrast (int Contrast)                                            * *  Function: sets the contrast level for the Rage Theatre video in         * *    Inputs: int Contrast - the contrast value to be set.                  * *   Outputs: NONE                                                          * ****************************************************************************/void RT_SetContrast (TheatrePtr t, int Contrast){    double dbSynctipRef0=0, dbContrast=0;    double dbYgain=0;    CARD8   bTempContrast=0;    /* VALIDATE CONTRAST LEVEL */    if (Contrast < -1000)    {        Contrast = -1000;    }    else if (Contrast > 1000)    {        Contrast = 1000;    }    /* Save contrast value */    t->iContrast = Contrast;    dbSynctipRef0 = ReadRT_fld (fld_SYNCTIP_REF0);    dbContrast = (double) (Contrast+1000.0) / 1000.0;    switch (t->wStandard & 0x00FF)    {        case (DEC_NTSC):            if ((t->wStandard & 0xFF00) == (extNTSC_J))            {                dbYgain = 219.0 / ( 100.0 * (double)(dbSynctipRef0) /40.0);            }            else            {                dbYgain = 219.0 / ( 92.5 * (double)(dbSynctipRef0) /40.0);            }            break;        case (DEC_PAL):        case (DEC_SECAM):            dbYgain = 219.0 / ( 100.0 * (double)(dbSynctipRef0) /43.0);            break;        default:            break;    }    bTempContrast = (CARD8) ((dbContrast * dbYgain * 64) + 0.5);    WriteRT_fld (fld_LP_CONTRAST, (CARD32)bTempContrast);    /* Save value for future modification */    t->dbContrast = dbContrast;    return;} /* RT_SetContrast ()... *//**************************************************************************** * RT_SetInterlace (CARD8 bInterlace)                                        * *  Function: to set the interlacing pattern for the Rage Theatre video in  * *    Inputs: CARD8 bInterlace                                               * *   Outputs: NONE                                                          * ****************************************************************************/void RT_SetInterlace (TheatrePtr t, CARD8 bInterlace){    switch(bInterlace)     {        case (TRUE):    /*DEC_INTERLACE */                        WriteRT_fld (fld_V_DEINTERLACE_ON, 0x1);                        t->wInterlaced = (CARD16) RT_DECINTERLACED;                        break;       case (FALSE):    /*DEC_NONINTERLACE */                        WriteRT_fld (fld_V_DEINTERLACE_ON, RT_DECNONINTERLACED);                        t->wInterlaced = (CARD16) RT_DECNONINTERLACED;                        break;       default:                        break;     }    return;} /* RT_SetInterlace ()... *//**************************************************************************** * GetStandardConstants (double *LPeriod, double *FPeriod,                  * *                          double *Fsamp, CARD16 wStandard)                  * *  Function: return timing values for a given standard                     * *    Inputs: double *LPeriod - *            double *FPeriod - *            double *Fsamp - sampling frequency used for a given standard  * *            CARD16 wStandard - input standard (NTSC, PAL, SECAM)            * *   Outputs: NONE                                                          * ****************************************************************************/static void GetStandardConstants (double *LPeriod, double *FPeriod,                           double *Fsamp, CARD16 wStandard){    *LPeriod = 0.0;    *FPeriod = 0.0;    *Fsamp   = 0.0;    switch (wStandard & 0x00FF)    {        case (DEC_NTSC): /*NTSC GROUP - 480 lines*/            switch (wStandard & 0xFF00)            {                case  (extNONE):                case  (extNTSC):                case  (extNTSC_J):                    *LPeriod = (double) 63.5555;                    *FPeriod = (double) 16.6833;                    *Fsamp = (double) 28.63636;                    break;                case  (extPAL_M):                    *LPeriod = (double) 63.492;                    *FPeriod = (double) 16.667;                    *Fsamp = (double) 28.63689192;                    break;                default:                    return;            }            break;        case (DEC_PAL):            if(  (wStandard & 0xFF00) == extPAL_N )            {                *LPeriod = (double) 64.0;                *FPeriod = (double) 20.0;                *Fsamp = (double) 28.65645;            }            else            {                *LPeriod = (double) 64.0;                *FPeriod = (double) 20.0;                *Fsamp = (double) 35.46895;            }            break;        case (DEC_SECAM):            *LPeriod = (double) 64.0;            *FPeriod = (double) 20.0;            *Fsamp = (double) 35.46895;            break;    }    return;} /* GetStandardConstants ()...*//**************************************************************************** * RT_SetStandard (CARD16 wStandard)                                          * *  Function: to set the input standard for the Rage Theatre video in       * *    Inputs: CARD16 wStandard - input standard (NTSC, PAL, SECAM)            * *   Outputs: NONE                                                          * ****************************************************************************/void RT_SetStandard (TheatrePtr t, CARD16 wStandard){    double dbFsamp=0, dbLPeriod=0, dbFPeriod=0;    CARD16   wFrameTotal = 0;    double dbSPPeriod = 4.70;    xf86DrvMsg(t->VIP->scrnIndex,X_INFO,"Rage Theatre setting standard 0x%04x\n",    		wStandard);    t->wStandard = wStandard;    	    /* Get the constants for the given standard. */        GetStandardConstants (&dbLPeriod, &dbFPeriod, &dbFsamp, wStandard);    wFrameTotal = (CARD16) (((2.0 * dbFPeriod) * 1000 / dbLPeriod) + 0.5);    /* Procedures before setting the standards: */    WriteRT_fld (fld_VIN_CLK_SEL, RT_REF_CLK);    WriteRT_fld (fld_VINRST, RT_VINRST_RESET);    RT_SetVINClock (t, wStandard);    WriteRT_fld (fld_VINRST, RT_VINRST_ACTIVE);    WriteRT_fld (fld_VIN_CLK_SEL, RT_PLL_VIN_CLK);    /* Program the new standards: */    switch (wStandard & 0x00FF)    {        case (DEC_NTSC): /*NTSC GROUP - 480 lines */            WriteRT_fld (fld_STANDARD_SEL,     RT_NTSC);            WriteRT_fld (fld_SYNCTIP_REF0,     RT_NTSCM_SYNCTIP_REF0);            WriteRT_fld (fld_SYNCTIP_REF1,     RT_NTSCM_SYNCTIP_REF1);            WriteRT_fld (fld_CLAMP_REF,         RT_NTSCM_CLAMP_REF);            WriteRT_fld (fld_AGC_PEAKWHITE,    RT_NTSCM_PEAKWHITE);            WriteRT_fld (fld_VBI_PEAKWHITE,    RT_NTSCM_VBI_PEAKWHITE);            WriteRT_fld (fld_WPA_THRESHOLD,    RT_NTSCM_WPA_THRESHOLD);            WriteRT_fld (fld_WPA_TRIGGER_LO,   RT_NTSCM_WPA_TRIGGER_LO);            WriteRT_fld (fld_WPA_TRIGGER_HIGH, RT_NTSCM_WPA_TRIGGER_HIGH);            WriteRT_fld (fld_LOCKOUT_START,    RT_NTSCM_LP_LOCKOUT_START);            WriteRT_fld (fld_LOCKOUT_END,      RT_NTSCM_LP_LOCKOUT_END);            WriteRT_fld (fld_CH_DTO_INC,       RT_NTSCM_CH_DTO_INC);            WriteRT_fld (fld_PLL_SGAIN,        RT_NTSCM_CH_PLL_SGAIN);            WriteRT_fld (fld_PLL_FGAIN,        RT_NTSCM_CH_PLL_FGAIN);            WriteRT_fld (fld_CH_HEIGHT,        RT_NTSCM_CH_HEIGHT);            WriteRT_fld (fld_CH_KILL_LEVEL,    RT_NTSCM_CH_KILL_LEVEL);            WriteRT_fld (fld_CH_AGC_ERROR_LIM, RT_NTSCM_CH_AGC_ERROR_LIM);            WriteRT_fld (fld_CH_AGC_FILTER_EN, RT_NTSCM_CH_AGC_FILTER_EN);            WriteRT_fld (fld_CH_AGC_LOOP_SPEED,RT_NTSCM_CH_AGC_LOOP_SPEED);            WriteRT_fld (fld_VS_FIELD_BLANK_START,  RT_NTSCM_VS_FIELD_BLANK_START);            WriteRT_fld (fld_VS_FIELD_BLANK_END,   RT_NTSCM_VS_FIELD_BLANK_END);            WriteRT_fld (fld_H_ACTIVE_START,   RT_NTSCM_H_ACTIVE_START);            WriteRT_fld (fld_H_ACTIVE_END,   RT_NTSCM_H_ACTIVE_END);            WriteRT_fld (fld_V_ACTIVE_START,   RT_NTSCM_V_ACTIVE_START);            WriteRT_fld (fld_V_ACTIVE_END,   RT_NTSCM_V_ACTIVE_END);            WriteRT_fld (fld_H_VBI_WIND_START,   RT_NTSCM_H_VBI_WIND_START);            WriteRT_fld (fld_H_VBI_WIND_END,   RT_NTSCM_H_VBI_WIND_END);            WriteRT_fld (fld_V_VBI_WIND_START,   RT_NTSCM_V_VBI_WIND_START);            WriteRT_fld (fld_V_VBI_WIND_END,   RT_NTSCM_V_VBI_WIND_END);            WriteRT_fld (fld_UV_INT_START,   (CARD8)((0.10 * dbLPeriod * dbFsamp / 2.0) + 0.5 - 32));            WriteRT_fld (fld_VSYNC_INT_TRIGGER , (CARD16) RT_NTSCM_VSYNC_INT_TRIGGER);            WriteRT_fld (fld_VSYNC_INT_HOLD, (CARD16) RT_NTSCM_VSYNC_INT_HOLD);            switch (wStandard & 0xFF00)            {                case (extPAL_M):                case (extNONE):                case (extNTSC):                    WriteRT_fld (fld_CR_BURST_GAIN,        RT_NTSCM_CR_BURST_GAIN);                    WriteRT_fld (fld_CB_BURST_GAIN,        RT_NTSCM_CB_BURST_GAIN);                    WriteRT_fld (fld_CRDR_ACTIVE_GAIN,     RT_NTSCM_CRDR_ACTIVE_GAIN);                    WriteRT_fld (fld_CBDB_ACTIVE_GAIN,     RT_NTSCM_CBDB_ACTIVE_GAIN);                    WriteRT_fld (fld_VERT_LOCKOUT_START,   RT_NTSCM_VERT_LOCKOUT_START);                    WriteRT_fld (fld_VERT_LOCKOUT_END,     RT_NTSCM_VERT_LOCKOUT_END);                    break;                case (extNTSC_J):                    WriteRT_fld (fld_CR_BURST_GAIN,        RT_NTSCJ_CR_BURST_GAIN);                    WriteRT_fld (fld_CB_BURST_GAIN,        RT_NTSCJ_CB_BURST_GAIN);                    WriteRT_fld (fld_CRDR_ACTIVE_GAIN,     RT_NTSCJ_CRDR_ACTIVE_GAIN);                    WriteRT_fld (fld_CBDB_ACTIVE_GAIN,     RT_NTSCJ_CBDB_ACTIVE_GAIN);                    WriteRT_fld (fld_CH_HEIGHT,            RT_NTSCJ_CH_HEIGHT);                    WriteRT_fld (fld_CH_KILL_LEVEL,        RT_NTSCJ_CH_KILL_LEVEL);                    WriteRT_fld (fld_CH_AGC_ERROR_LIM,     RT_NTSCJ_CH_AGC_ERROR_LIM);                    WriteRT_fld (fld_CH_AGC_FILTER_EN,     RT_NTSCJ_CH_AGC_FILTER_EN);                    WriteRT_fld (fld_CH_AGC_LOOP_SPEED,    RT_NTSCJ_CH_AGC_LOOP_SPEED);                    WriteRT_fld (fld_VERT_LOCKOUT_START,   RT_NTSCJ_VERT_LOCKOUT_START);

⌨️ 快捷键说明

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