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

📄 chips.c

📁 车载电子影音系统dvd播放系统原程序代码
💻 C
📖 第 1 页 / 共 5 页
字号:
//#define         W99AV_DM_PROLOGIC_OCTRL         0x00de4 //default : 0x1b0
    
    //Kevin1.24, add protection
    if (! (__bSupportFeature & SUPPORT_FEATURE_PROLOGIC))
        __SetupInfo.bAudioPrologic = SETUP_AUDIO_PROLOGIC_OFF;         

    switch (__SetupInfo.bAudioPrologic)
    {  	
        case SETUP_AUDIO_PROLOGIC_PROLOGIC:
            _dwCHIPSTemp= 0<<3;
            _bCHIPSTmp = 1; 
            break;

        case SETUP_AUDIO_PROLOGIC_VIRTUAL:
            _dwCHIPSTemp= 1<<3;
            _bCHIPSTmp = 0;
            break;

        case SETUP_AUDIO_PROLOGIC_MUSIC:
            _dwCHIPSTemp= 2<<3;
            _bCHIPSTmp = 0; 
            break;

        case SETUP_AUDIO_PROLOGIC_MOVIE:
            _dwCHIPSTemp= 3<<3;
            _bCHIPSTmp = 1;            
            break;

        case SETUP_AUDIO_PROLOGIC_MATRIX:
            _dwCHIPSTemp= 4<<3;
            _bCHIPSTmp = 0;
            break;
    
        case SETUP_AUDIO_PROLOGIC_OFF:
        default:
            W99AV_WriteDM(W99AV_DM_PROLOGIC_ENABLE, 0);  	
            return;
    }


    switch (__SetupInfo.bAudioAnalogOut)
    {
        case SETUP_AUDIO_ANALOG_OUT_2CH: //Kevin1.10-2, disable Prologic for 2CH output
            W99AV_WriteDM(W99AV_DM_PROLOGIC_ENABLE, 0);  	
            return;            

	    case SETUP_AUDIO_ANALOG_OUT_51CH:
            if (__SetupInfo.bAudioCenter==SETUP_AUDIO_CENTER_ON && __SetupInfo.bAudioRear==SETUP_AUDIO_REAR_ON)
                _dwCHIPSTemp |= 7;
            else if (__SetupInfo.bAudioCenter==SETUP_AUDIO_CENTER_ON && __SetupInfo.bAudioRear==SETUP_AUDIO_REAR_OFF) 
                _dwCHIPSTemp |= 3;
            else if (__SetupInfo.bAudioCenter==SETUP_AUDIO_CENTER_OFF && __SetupInfo.bAudioRear==SETUP_AUDIO_REAR_ON) 
                _dwCHIPSTemp |= 6;
            else
            {
                W99AV_WriteDM(W99AV_DM_PROLOGIC_ENABLE, 0);  	
                return;
            }
    }

    W99AV_ReadInfo(W99AV_INFO_AUDIOFREQ, &__dwTemp);

    if (__dwTemp<AUDIO_FREQ_44K)
        _dwCHIPSTemp |= (2<<6); //32K
    else if (__dwTemp<AUDIO_FREQ_48K)
        _dwCHIPSTemp |= (1<<6); //44K  
    //else 
        //_dwCHIPSTemp |= (0<<6); //48K
    
    //Kevin2.37, conflicts w/ AC3 
    //W99AV_WriteDM(W99AV_DM_PROL_SUR_DELAY, (DWORD)_bCHIPSTmp);
    W99AV_WriteDM(W99AV_DM_PROL_SUR_DELAY, 0);
                
    W99AV_WriteDM(W99AV_DM_PROLOGIC_OCTRL, 0x1b0);
    W99AV_WriteDM(W99AV_DM_PROLOGIC_OCFG, _dwCHIPSTemp);
    W99AV_WriteDM(W99AV_DM_PROLOGIC_ENABLE, 1);
    
    //Kevin1.24, let Prologic & Surround mutual exclusive
    if (__bSurround)
    {
       __bSurround=0;
       OSD_Output(MSG_SURROUND, __bSurround, 0x0);
    }

}



//  *********************************************************************
//  Description :   set HDCD DM 
//  Arguments   :   None      
//  Return      :   None
//  *********************************************************************
//Kevin2.37, support HDCD
void    CHIPS_ControlHDCD(void)
{
	if ( __bCDDA_DTS==CDDA_PURE || __bCDDA_DTS==CDDA_HDCD || __bCDDA_DTS==CDDA_CDG)
    {    
        W99AV_WriteDM(W99AV_DM_HDCD_OCTRL, 0x613c);

        if ( (__bCDDA_DTS==CDDA_HDCD) && (__bSupportFeature&SUPPORT_FEATURE_HDCD) )         
            W99AV_WriteDM(W99AV_DM_HDCD_ENABLE, 1);
        else
            W99AV_WriteDM(W99AV_DM_HDCD_ENABLE, 0); //CDDA needs to write 0       
    } 

    //HDCD + Prologic => performance issue    
    if (__SetupInfo.bAudioPrologic != SETUP_AUDIO_PROLOGIC_OFF)
        W99AV_WriteDM(W99AV_DM_HDCD_ENABLE, 0);
}



//  *********************************************************************
//  Function    :   CHIPS_Surround
//  Description :   It will do surround according to the parameter
//  Arguments   :   bKey:      The type of command
//                      CHIPS_UP : control up 1 level
//                      CHIPS_DOWN : control down 1 level
//                      CHIPS_NORMAL : set to default level
//                      CHIPS_TOGGLE : toggle between levels in range
//                      CHIPS_LEVEL : return current level
//                      CHIPS_SUPPORT : return if this function supported
//  Return      :   TRUE : Supported/Succeeded
//              :   FALSE : Not supported
//  Change      :   Will turn off key control
//  Side Effect :   Only MP3 doesn't support surround
//  *********************************************************************
BYTE    CHIPS_Surround(BYTE bSurd)
{
    //Kevin2.81, Filter if the desired function is supported or not in one place
    if (!_CHIPS_FilterFunSupport(CHIPS_SURROUND))
        return FALSE;

    //Kevin0.84a, surround & key can coexist  
    /*
    if (__cKeyShift)
    {
        __cKeyShift=0;
        OSD_OUTPUT_MACRO(MSG_KEY, __cKeyShift, 0);
    }
    */
    
    //Kevin1.24, let Prologic & Surround mutual exclusive
    W99AV_WriteDM(W99AV_DM_PROLOGIC_ENABLE, 0);


    //Kevin0.86, add to fix the "KEY_SURROUND but mute is not canceled" bug
    // surround will open volume
    if (__btMute)
    {
       __btMute= FALSE;
       OSD_OUTPUT_MACRO(MSG_MUTE, __btMute, 0 );
    }

    switch(bSurd)
    {
        case CHIPS_UP :
            if (__bSurround <CHIPS_SURROUND_TYPE)
                __bSurround ++ ;
            break ;

        case CHIPS_DOWN :
            if (__bSurround > CHIPS_SURROUND_NONE)
                __bSurround -- ;
            break ;

        case CHIPS_NORMAL :
            __bSurround = CHIPS_SURROUND_NONE ;
            break ;

        case CHIPS_TOGGLE :
            __bSurround ++ ;
#ifdef KARAOKE  // TCC022 for karaoke use
            __bSurround %= 9 ;
#else
            __bSurround %= (CHIPS_SURROUND_TYPE+1) ;
#endif
            break ;

        case CHIPS_LEVEL :
            return  __bSurround ;

        case CHIPS_SUPPORT :
            return TRUE ;

        default :
            break ;
    }
#ifdef KARAOKE  // WWH_HC2500
    KARAOKE_KeyShift(NORMALKEY_OFFSET);
    KARAOKE_SurroundControl(__bSurround);
#endif  //#else
    CHIPS_OpenAudio ( TRUE );
//#endif

    OSD_OUTPUT_MACRO(MSG_KEY, (WORD)(__cKeyShift+ NORMALKEY_OFFSET), 0);
    OSD_OUTPUT_MACRO(MSG_MUTE, __btMute, 0x0); // ***LLY.042
    OSD_OUTPUT_MACRO(MSG_SURROUND, __bSurround, 0x3);
    return TRUE ;
}

//  *********************************************************************
//  Function    :   CHIPS_Echo
//  Description :   It will do echo according to the parameter
//                  w9922qf doesn't support echo
//  Arguments   :   bEcho:      The type of command
//                      CHIPS_UP : control up 1 level
//                      CHIPS_DOWN : control down 1 level
//                      CHIPS_NORMAL : set to default level
//                      CHIPS_TOGGLE : toggle between levels in range
//                      CHIPS_LEVEL : return current level
//                      CHIPS_SUPPORT : return if this function supported
//  Return      :   TRUE : Supported/Succeeded
//              :   FALSE : Not supported
//  Change      :
//  Side Effect :
//  *********************************************************************
BYTE    CHIPS_Echo(BYTE bEcho)
{
    //Kevin2.81, Filter if the desired function is supported or not in one place
    if (!_CHIPS_FilterFunSupport(CHIPS_ECHO))
        return FALSE;

#ifdef  KARAOKE
    switch(bEcho)
    {
        case CHIPS_UP :
            if (++__bEchoLevel > ECHO_LEVEL) __bEchoLevel = ECHO_LEVEL;     // WWH_HC2500
            break ;

        case CHIPS_DOWN :
            if (__bEchoLevel > 0) __bEchoLevel--;           // WWH_HC2500
            break ;

        case CHIPS_NORMAL :
            __bEchoLevel = CHIPS_DEFAULT_ECHO ;       // WWH_HC2500
            break ;

        case CHIPS_TOGGLE :
            break ;

        case CHIPS_LEVEL :
            return __bEchoLevel ;

        case CHIPS_SUPPORT :
            return TRUE;

        default :
            break ;
    }
    KARAOKE_EchoLevel(__bEchoLevel);
    OSD_OUTPUT_MACRO(MSG_ECHO, __bEchoLevel, 0x3);
    return TRUE;
#else
    switch(bEcho)
    {
        case CHIPS_UP :
            if (++__bEchoLevel > ECHO_LEVEL) __bEchoLevel = ECHO_LEVEL;
            break ;

        case CHIPS_DOWN :
            if (__bEchoLevel > 0) __bEchoLevel--;
            break ;

        case CHIPS_NORMAL :
            __bEchoLevel = CHIPS_DEFAULT_ECHO ;
            break ;

        case CHIPS_TOGGLE :
            break ;

        case CHIPS_LEVEL :
            return __bEchoLevel ;

        case CHIPS_SUPPORT :
            return TRUE;

        default :
            break ;
    }
    //Kevin1.05, modify
	//W99AV_WriteDM(W99AV_DM_ECHO_CR0, (((WORD)0x5B*__bEchoLevel/ECHO_LEVEL)<<4) | 0x4 );  //scaling factor = 4/16 
	if (!__bEchoLevel)
		W99AV_WriteDM(W99AV_DM_ECHO_CR0, 0x808); //disable echo
	else
		W99AV_WriteDM(W99AV_DM_ECHO_CR0, (((WORD)0x5B*__bEchoLevel/ECHO_LEVEL)<<4) | 0x8 );  //scaling factor = 8/16 

    OSD_OUTPUT_MACRO(MSG_ECHO, __bEchoLevel, 0x3);
    return TRUE;

#endif
}


//  *********************************************************************
//  Function    :   CHIPS_DownMixMode
//  Description :   set AC3 downmix mode at run time 
//  Arguments   :   bMode:      
//                      DOWNMIX_LORO : LoRo
//                      DOWNMIX_LTRT : LtRt
//  Return      :   None
//  Side Effect :   None
//  *********************************************************************
//Kevin1.07, create
void    CHIPS_DownMixMode(BYTE bMode)
{
    switch(bMode)
    {
        case AC3_DOWNMIX_LORO :
            W99AV_WriteDM(W99AV_DM_DOWNMIX_MODE, 0);  	//LoRo
            break ;

        case AC3_DOWNMIX_LTRT :
        default :
            W99AV_WriteDM(W99AV_DM_DOWNMIX_MODE, 1);  	//LoRo
            break ;
    }
}


//  *********************************************************************
//  Function    :   CHIPS_VoiceCancel
//  Description :   It will cancel the human voice
//              :   w9922qf doesn't support voice cancel
//  Arguments   :   CHIPS_TOGGLE, toggle the voice cancel on/off
//  Return      :   TRUE : Supported/Succeeded
//              :   FALSE : Not supported
//  Change      :
//  Side Effect :
//  *********************************************************************
BYTE    CHIPS_VoiceCancel(BYTE bCancel)
{
//WWC_HC2500
#ifdef KARAOKE          // WWH_HC2500
    switch(bCancel)
    {
        case CHIPS_TOGGLE :
             __btVoiceCancel = !__btVoiceCancel;
            break ;
        case CHIPS_SUPPORT :
            return TRUE ;

        default :
            return FALSE;
    }

    KARAOKE_VoiceCancel(__btVoiceCancel);
    OSD_OUTPUT_MACRO ( MSG_VOICECANCEL, __btVoiceCancel, 0x3 );    // clear Digest
    return TRUE;
#else
        // Not supported by W9922QF
    //OSD_OUTPUT_MACRO ( MSG_VOICECANCEL, __btVoiceCancel, 0x3 );    // clear Digest
#endif
    return FALSE ;
}
//  *********************************************************************
//  Function    :   CHIPS_Change3DLevel
//  Description :   Set the parameters for different 3D effect
//                  w9922qf doesn't support 3d
//  Arguments   :   bChangeLevel :
//                      CHIPS_TOGGLE, toggle between 3D level
//  Return      :   TRUE, 3D function is supported and carried out
//  Change      :
//  Side Effect :
//  *********************************************************************
BYTE   CHIPS_Change3DLevel(BYTE bChangeLevel)
{
#ifdef KARAOKE          // WWH_HC2500
    //static _b3DLevel=0;
    switch (bChangeLevel)
    {
        case CHIPS_TOGGLE :

⌨️ 快捷键说明

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