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

📄 pictcont.c

📁 IT projecotr reference design.
💻 C
📖 第 1 页 / 共 4 页
字号:

int08 pictcont_SetGamma( uint08 gammaTable )
{
    DISP_SetFreeze(TRUE);
    if( IMG_GAM_LoadLut( gammaTable ) != PASS )
    {
        DISP_SetFreeze(FALSE);
        return FAIL;
    }
    DISP_SetFreeze(FALSE);
       
    return PASS;
}

/****************************************************************************/
/* Whitepeaking user controls                                               */
/****************************************************************************/
int08 pictcont_GetWhitePeaking( uint08 *value )
{
    *value = IMG_GetWhitePeaking();
    return PASS;
}

int08 pictcont_SetWhitePeaking( uint08 value )
{
    DISP_SetFreeze(TRUE);
    if( IMG_SetWhitePeaking( value ) != PASS )
    {
        DISP_SetFreeze(FALSE);
        return FAIL;
    }
    DISP_SetFreeze(FALSE);
       
    return PASS;
}

/****************************************************************************/
/* BrilliantColor(tm) user controls                                         */
/****************************************************************************/
int08 pictcont_SetBrilliantColor( uint08 enable )
{
    /* channel is 'don't care' */
    if( IMG_EnableAlgorithm( SRC_PRIMARY, IMG_ALG_BRICOLOR, enable ) != PASS )
        return FAIL;
    return PASS;
}

int08 pictcont_SetBrilliantColorLook(uint08 look)
{
    if( IMG_SetBrilliantColorLook( look ) != PASS )
        return FAIL;
    
    return PASS;
}

int08 pictcont_GetBrilliantColorLook( uint08 *look )
{
    *look = IMG_GetBrilliantColorLook();
    return PASS;
}



/****************************************************************************/
/* Noise Reduction user controls                                            */
/****************************************************************************/
int08 pictcont_GetNoiseReduction( uint08 *enable )
{   
    DP_SOURCEDESC *srcDesc;    
    
    datapath_GetSourceDesc( &srcDesc );
    if( srcDesc->sourceActive )
    {
        EE_GETVAR( UserMachine.ConnectorSettings[srcDesc->connector].NoiseReduction, enable );
        return PASS; 
    }
    else
        return FAIL;
}


int08 pictcont_SetNoiseReduction( uint08 enable )
{
    int08 spatial_retval = FAIL;
    int08 temporal_retval = FAIL;
    DP_SOURCEDESC *srcDesc;    
    
    datapath_GetSourceDesc( &srcDesc );
    
    if( srcDesc->sourceActive )
    {
	    if( enable == FALSE )
	    {
	        spatial_retval = ANR_Enable( TRUE, FALSE ); /* disable spatial */
	        temporal_retval = ANR_Enable( FALSE, FALSE ); /* disable temporal */
	    }
	    else
	    {
	        ANR_SetFilterStrength( TRUE, ANR_STRENGTH_8 ); 
	        ANR_SetFilterStrength( FALSE, ANR_STRENGTH_8 );

	        if( srcDesc->okToDeinterlace == TRUE )
	        {
	            /* sources using the deinterlacer use both spatial and temporal NR */
	            spatial_retval = ANR_Enable( TRUE, TRUE );  /* enable spatial */
	            temporal_retval = ANR_Enable( FALSE, TRUE ); /* enable temporal */
	        }
	        else
	        {
	            /* sources not using the deinterlacer can only use spatial NR */
	            spatial_retval = ANR_Enable( TRUE, TRUE );  /* enable spatial */
	            temporal_retval = ANR_Enable( FALSE, FALSE ); /* disable temporal */
	        }
	    }
	    if( spatial_retval != PASS || temporal_retval != PASS )
	        return FAIL;
    }
    else
        return FAIL;
            
    return PASS;
}
/****************************************************************************/
/* DDC/CI color controls                                                    */
/****************************************************************************/

void pictcont_RestoreColorDefaults( BOOL resetAll )
{       
    DP_SOURCEDESC *srcDesc;
    uint08 connectorNum;

    datapath_GetSourceDesc( &srcDesc );

    if( !resetAll )
    {
        if( srcDesc->sourceActive )
        {
            pictcont_writeColorDefaultstoEEPROM( srcDesc->connector );
        }
    }
    else
    {
        for( connectorNum = 0; connectorNum < NUM_CONNECTORS; connectorNum++ )
        {
            pictcont_writeColorDefaultstoEEPROM( connectorNum );
        }
    }
        /* update display with new values */
    pictcont_ConfigureForExternalSource();
    
}

void pictcont_writeColorDefaultstoEEPROM( DP_CONNECTOR connector )
{
    uint08 i;
    
    /* set all DDC/CI color default settings from flash to the EEPROM for the active connector */
    EE_PUTVAR( UserMachine.ConnectorSettings[connector].Brightness, 
               gpSettings->UserMachine.ConnectorSettings[connector].Brightness );
    EE_PUTVAR( UserMachine.ConnectorSettings[connector].Contrast, 
               gpSettings->UserMachine.ConnectorSettings[connector].Contrast );
    EE_PUTVAR( UserMachine.ConnectorSettings[connector].Hue, 
               gpSettings->UserMachine.ConnectorSettings[connector].Hue );
    EE_PUTVAR( UserMachine.ConnectorSettings[connector].Color, 
               gpSettings->UserMachine.ConnectorSettings[connector].Color );
    EE_PUTVAR( UserMachine.ConnectorSettings[connector].Sharpness, 
               gpSettings->UserMachine.ConnectorSettings[connector].Sharpness );
    EE_PUTVAR( UserMachine.ConnectorSettings[connector].ColorSpace, 
               gpSettings->UserMachine.ConnectorSettings[connector].ColorSpace );
    EE_PUTVAR( UserMachine.ConnectorSettings[connector].Gamma, 
               gpSettings->UserMachine.ConnectorSettings[connector].Gamma );
    EE_PUTVAR( UserMachine.ConnectorSettings[connector].WhitePeaking, 
               gpSettings->UserMachine.ConnectorSettings[connector].WhitePeaking );
    for( i = 0; i < NUM_HSG_COLORS; i++ )
    {
        EE_PUTVAR( UserMachine.ConnectorSettings[connector].HSGColorValues[i], 
                   gpSettings->UserMachine.ConnectorSettings[connector].HSGColorValues[i] );
    }
    EE_PUTVAR( UserMachine.ConnectorSettings[connector].HSGWhiteRedGain, 
               gpSettings->UserMachine.ConnectorSettings[connector].HSGWhiteRedGain );
    EE_PUTVAR( UserMachine.ConnectorSettings[connector].HSGWhiteGreenGain, 
               gpSettings->UserMachine.ConnectorSettings[connector].HSGWhiteGreenGain );
    EE_PUTVAR( UserMachine.ConnectorSettings[connector].HSGWhiteBlueGain, 
               gpSettings->UserMachine.ConnectorSettings[connector].HSGWhiteBlueGain );
    EE_PUTVAR( UserMachine.ConnectorSettings[connector].BrilliantColorLook, 
               gpSettings->UserMachine.ConnectorSettings[connector].BrilliantColorLook );
}

void pictcont_SetColorTempPresets( ColorTempEnum colorTemp )
{
    struct colorvaluesstruct colorTempcolorValues[NUM_HSG_COLORS];
    int16 redGain, greenGain, blueGain;
    uint08 i;
    DP_SOURCEDESC *srcDesc;
    
    datapath_GetSourceDesc( &srcDesc );
    
    if( srcDesc->sourceActive )
    {
    
        switch( colorTemp )
        {
            case COLORTEMP_NATIVE:
                /* set gains of individual colors for desired color temp */    
                colorTempcolorValues[HSG_RED].Gain            = 100;
                colorTempcolorValues[HSG_GREEN].Gain          = 100;
                colorTempcolorValues[HSG_BLUE].Gain           = 100;
                colorTempcolorValues[HSG_CYAN].Gain           = 100; 
                colorTempcolorValues[HSG_MAGENTA].Gain        = 100; 
                colorTempcolorValues[HSG_YELLOW].Gain         = 100; 
    
                /* set white gains for color temp */
                redGain   = 100;
                greenGain = 100;
                blueGain  = 100;
            
                break;
            
            case COLORTEMP_WARMEST:
                /* set gains of individual colors for desired color temp */    
                colorTempcolorValues[HSG_RED].Gain            = 100;
                colorTempcolorValues[HSG_GREEN].Gain          = 95;
                colorTempcolorValues[HSG_BLUE].Gain           = 90;
                colorTempcolorValues[HSG_CYAN].Gain           = 92; 
                colorTempcolorValues[HSG_MAGENTA].Gain        = 97; 
                colorTempcolorValues[HSG_YELLOW].Gain         = 95; 

                /* set white gains for color temp */
                redGain   = 100;
                greenGain = 90;
                blueGain  = 80;
            
                break;

            case COLORTEMP_WARMER:
                /* set gains of individual colors for desired color temp */    
                colorTempcolorValues[HSG_RED].Gain            = 100;
                colorTempcolorValues[HSG_GREEN].Gain          = 97;
                colorTempcolorValues[HSG_BLUE].Gain           = 95;
                colorTempcolorValues[HSG_CYAN].Gain           = 96; 
                colorTempcolorValues[HSG_MAGENTA].Gain        = 98; 
                colorTempcolorValues[HSG_YELLOW].Gain         = 97; 

                /* set white gains for color temp */
                redGain   = 100;
                greenGain = 95;
                blueGain  = 90;
            
                break;
  
            case COLORTEMP_COOLER:
                /* set gains of individual colors for desired color temp */    
                colorTempcolorValues[HSG_RED].Gain            = 95;
                colorTempcolorValues[HSG_GREEN].Gain          = 97;
                colorTempcolorValues[HSG_BLUE].Gain           = 100;
                colorTempcolorValues[HSG_CYAN].Gain           = 98; 
                colorTempcolorValues[HSG_MAGENTA].Gain        = 96; 
                colorTempcolorValues[HSG_YELLOW].Gain         = 97; 

                /* set white gains for color temp */
                redGain   = 90;
                greenGain = 95;
                blueGain  = 100;
            
                break;

            case COLORTEMP_COOLEST:
                /* set gains of individual colors for desired color temp */    
                colorTempcolorValues[HSG_RED].Gain            = 90;
                colorTempcolorValues[HSG_GREEN].Gain          = 95;
                colorTempcolorValues[HSG_BLUE].Gain           = 100;
                colorTempcolorValues[HSG_CYAN].Gain           = 97; 
                colorTempcolorValues[HSG_MAGENTA].Gain        = 95; 
                colorTempcolorValues[HSG_YELLOW].Gain         = 92; 

                /* set white gains for color temp */
                redGain   = 80;
                greenGain = 90;
                blueGain  = 100;
            
                break;

            default:
                break;
            
        }
    
    
        /* set hue and saturation values to nominal for all color temperatures */
        colorTempcolorValues[HSG_RED].Hue             = 0;
        colorTempcolorValues[HSG_RED].Saturation      = 100;
        colorTempcolorValues[HSG_GREEN].Hue           = 0;           
        colorTempcolorValues[HSG_GREEN].Saturation    = 100;
        colorTempcolorValues[HSG_BLUE].Hue            = 0;
        colorTempcolorValues[HSG_BLUE].Saturation     = 100;
        colorTempcolorValues[HSG_CYAN].Hue            = 0;
        colorTempcolorValues[HSG_CYAN].Saturation     = 100; 
        colorTempcolorValues[HSG_MAGENTA].Hue         = 0;
        colorTempcolorValues[HSG_MAGENTA].Saturation  = 100; 
        colorTempcolorValues[HSG_YELLOW].Hue          = 0; 
        colorTempcolorValues[HSG_YELLOW].Saturation   = 100;            

        pictcont_SetAllHSGColorValues( colorTempcolorValues );
        pictcont_SetAllHSGWhiteGains( redGain, greenGain, blueGain );
    
        /* update EEPROM */
        for( i = 0; i < NUM_HSG_COLORS; i++ )
        {
            EE_PUTVAR( UserMachine.ConnectorSettings[srcDesc->connector].HSGColorValues[i], colorTempcolorValues[i] );
        }
        EE_PUTVAR( UserMachine.ConnectorSettings[srcDesc->connector].HSGWhiteRedGain, redGain );
        EE_PUTVAR( UserMachine.ConnectorSettings[srcDesc->connector].HSGWhiteGreenGain,greenGain );
        EE_PUTVAR( UserMachine.ConnectorSettings[srcDesc->connector].HSGWhiteBlueGain, blueGain );
    }
    
}

uint08 pictcont_GetColorTempPresets( void )
{
    return lastSetColorTempEnum;
}

/****************************************************************************/
/* Screen Capture                                                           */
/****************************************************************************/
int08 pictcont_ScreenCapture(void)
{ 
    GUIMSG newmsg;
    uint32 time;    
    uint32 Imagesize;
    uint32 userAddress;
    uint08 endUserSplashNumber = 1;        /* End user splash location in flash. (Splash Screen 2 in flash builder) */
    ScreenCaptureStateEnum nextState = SCREEN_CAPTURE_ADDRESS;
   
    dbmsg_ftrace( DBM_DPATH, "Splash Capture Started. \r\n" );
    
    do
    {
        switch(nextState)
        {
            case SCREEN_CAPTURE_ADDRESS:
                /* bring up OSD status screen */
                guiScreenCaptureStatusMessage( GUI_SCREENCAPTURESTART );
                guiStyle_StartMenu( MENU_SCREENCAPTUREPROGRESSMENU, &newmsg );
                /* Splash Screen 2 must be setup in flash builder with a default image and must be on a 64K byte boundary. */
                /* Get the address from the flash table for splash location 2 */    
                if( PASS != FLASH_GetFlashAddr( SPLASH_DATA, endUserSplashNumber, &userAddress ))
                {           
                    dbmsg_ftrace( DBM_DPATH, "Splash Capture Address Error!\r\n" );
                    return FAIL;                    
                }
                nextState = SCREEN_CAPTURE_EXECUTE;
                break;
                
            case SCREEN_CAPTURE_EXECUTE:
                /* Splash_Store_Immediate is set to FALSE, so capture will occur in background */
                /* Background color is set to 0xff which is blue. */
                time = 0;/* Zero the timer */
                if( PASS == ( nextState = (ScreenCaptureStateEnum)SPLASH_CaptureImage((uint32*)userAddress, FALSE, 0xff, &Imagesize)) )
                    nextState = SCREEN_CAPTURE_PROGRESS;
                    
                break;
                
            case SCREEN_CAPTURE_PROGRESS:
                dbmsg_ftrace( DBM_DPATH, "Splash Capture in Progress...\r\n" );
                /* Wait 2 sec */
                RTA_TaskDelay(TMR_ConvertMSToTicks(2000));
                /* Get the status */
                nextState = (ScreenCaptureStateEnum)SPLASH_GetImageCaptureStatus();
                
                /* if it is not done in 2 minutes, exit. */
                if(120000 < (time += 2000) )
                {   /* If it was still inprogress when timeout occured, then fail, */
                    if( nextState == SCREEN_CAPTURE_PROGRESS )
                    {
                        nextState = SCREEN_CAPTURE_FAIL;
                    }
                }                
                break;
                
            case SCREEN_CAPTURE_INSUFFICIENT_SPACE_IN_FLASH:
                dbmsg_ftrace( DBM_ALWAYS, "Splash Capture insufficient space!\r\n" );
                nextState = SCREEN_CAPTURE_FAIL;
                break;
                
            case SCREEN_CAPTURE_WRITE_TO_FLASH_COMPLETE:
                guiScreenCaptureStatusMessage( GUI_SCREENCAPTURESUCCESS );            
                dbmsg_ftrace( DBM_ALWAYS, "Splash Capture completed. Splash size: %d\r\n", Imagesize );
                return PASS;
            
                break;
                
            case SCREEN_CAPTURE_FAIL:
            case SCREEN_CAPTURE_NOT_SUPPORTED:
            case SCREEN_CAPTURE_UNSUCCESSFUL:
                guiScreenCaptureStatusMessage( GUI_SCREENCAPTUREERROR );
                dbmsg_ftrace( DBM_ALWAYS, "Splash Capture FAILED!\r\n" );
                return FAIL;
                
                break;
                
            default:
                guiScreenCaptureStatusMessage( GUI_SCREENCAPTUREERROR );
                dbmsg_ftrace( DBM_ALWAYS, "Splash Capture FAILED!\r\n" );            
                return FAIL;
                break;
                
        }
    } 
    while(1);

    return FAIL;
}




















⌨️ 快捷键说明

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