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

📄 msapi_audio.c

📁 mstar 776 开发的车载dvd
💻 C
📖 第 1 页 / 共 4 页
字号:
    }

#endif //#if (AUDIO_SYSTEM_SEL == AUDIO_SYSTEM_BTSC) // use TV_SYSTEM be the condition in the future
}

U8 msAPI_AUD_GetCurrentSoundMode(void)
{
    return bCurrentSoundMode;
}

//******************************************************************************
//Function name:        msAPI_AUD_SifSetSoundMode
//Passing parameter:    sound mode type
//Return parameter:     success / fail
//Description:          Set sound mode type
//  [Doxygen]
/// Set sound mode type
/// @param enSifSoundMode \b IN sound mode type
/// @return success / fail
//******************************************************************************
BOOLEAN msAPI_AUD_SifSetSoundMode(EN_SOUND_MTS_TYPE enSifSoundMode)
{
#if( (AUDIO_SYSTEM_SEL == AUDIO_SYSTEM_BTSC) || (AUDIO_SYSTEM_SEL == AUDIO_SYSTEM_A2) )
    bPreviousSoundMode = bCurrentSoundMode;
#endif

    if ( enSifSoundMode != enCurSifSoundMode )
    {
        switch ( enSifSoundMode )
        {
            case SOUND_MTS_MONO:
                MDrv_AuSifSetSoundMode(AU_MODE_MONO |AU_MODE_AUTO);
                break;

            case SOUND_MTS_STEREO:
            default:
                MDrv_AuSifSetSoundMode(AU_MODE_STEREO|AU_MODE_AUTO);
                break;

            #if (TV_SYSTEM == TV_NTSC)
            case SOUND_MTS_SAP:
                MDrv_AuSifSetSoundMode(AU_MODE_SAP|AU_MODE_AUTO);
                break;
            #else
            case SOUND_MTS_I:
                MDrv_AuSifSetSoundMode(AU_MODE_LANG_A|AU_MODE_AUTO);
                break;
            case SOUND_MTS_II:
                MDrv_AuSifSetSoundMode(AU_MODE_LANG_B|AU_MODE_AUTO);
                break;
            #endif

            case SOUND_MTS_LANG_AB:
                MDrv_AuSifSetSoundMode(AU_MODE_LANG_AB|AU_MODE_AUTO);
                break;

            case SOUND_MTS_NICAM:
                MDrv_AuSifSetSoundMode(AU_MODE_NICAM|AU_MODE_AUTO);
                break;

            case SOUND_MTS_AUTO:
                MDrv_AuSifSetSoundMode(AU_MODE_AUTO);
                break;
        }

        enSifSoundMode = enCurSifSoundMode;
    }

    AUD_DEBUG(printf("apiAud>> enCurSifSoundMode = %bu\n", (U8)enCurSifSoundMode));
    return TRUE;
}

//******************************************************************************
//Function name:    msAPI_AUD_SifGetSystem
//Passing parameter:    carrier type
//Return parameter:     system type
//Description:          using for detectind standard in PAL system
//  [Doxygen]
/// using for detectind standard in PAL system
/// @param carrier_type \b IN carrier type
/// @return system type
//******************************************************************************
#if( (AUDIO_SYSTEM_SEL == AUDIO_SYSTEM_BTSC) || (AUDIO_SYSTEM_SEL == AUDIO_SYSTEM_A2) )
En_SIF_systemType msAPI_AUD_SifGetSystem(BYTE carrier_type)
{
    switch ( carrier_type )
    {
        case AUDIO_SYSTEM_BTSC:
            return AU_SYS_M_BTSC;

        case AUDIO_SYSTEM_A2:
            return AU_SYS_M_A2;

        case AUDIO_SYSTEM_EIAJ:
            return AU_SYS_M_EIAJ;

        default:
            return AU_SYS_NOT_READY;
    }
}
#else // PAL
En_SIF_systemType msAPI_AUD_SifGetSystem(EnuTVColorSystem ucColorSys)
{
    U8  AUD_Tmp;

    if ( ucColorSys == TV_COLOR_SECAM )
    {
        AUD_Tmp = MDrv_AuSifGetMainSystem(AU_CARRIER1_IGNORE|AU_CARRIER2_L);
    }
    else
    {
        AUD_Tmp =  MDrv_AuSifGetMainSystem(AU_CARRIER1_IGNORE|AU_CARRIER2_DK);
    }

    return(AUD_Tmp);
}
#endif

//******************************************************************************
//Function name:    msAPI_AUD_SifSetSystem
//Passing parameter:    system type
//Return parameter:     void
//Description:          Set SIF standard
//  [Doxygen]
/// Set SIF standard
/// @param system_type \b IN system type
//******************************************************************************
void msAPI_AUD_SifSetSystem(En_SIF_systemType system_type)
{
    // TODO
    //if ( system_type != enCurSifSystem )
    //{
    MDrv_AuProcessSetMute(AUDIO_PATH_0, TRUE);
    MDrv_AuProcessSetMute(AUDIO_PATH_1, TRUE);

    if ( system_type != MSAPI_AUD_SIF_SYS_NOT_READY )
    {
        MDrv_AuSifSetSystem(system_type|AU_MODE_AUTO);
    }

    enCurSifSystem = system_type;
    //}

    #if (CHANNEL_SCAN_AUTO_TEST == 0)
    //printf("apiAud>> system_type %bu enCurSifSystem = %bu\n", (U8)system_type, (U8)enCurSifSystem);
    #endif

    AUD_DEBUG(printf("apiAud>> system_type %bu enCurSifSystem = %bu\n", (U8)system_type, (U8)enCurSifSystem));
}

//******************************************************************************
//Function name:    msAPI_AUD_Initialize
//Passing parameter:    MS_SoundSettingType* stSoundSetting: Sound setting structure pointer
//Return parameter:     none
//Description:      Audio initialization
//  [Doxygen]
/// Audio initialization
/// @param stSoundSetting \b IN Sound setting structure pointer
//******************************************************************************
void msAPI_AUD_Initialize(stUserSoundSettingType* stSoundSetting)
{
    BINFORMAT BinInfo;

    AUD_DEBUG(printf("msAPI_AUD_Initialize\n"));
    msAPI_AUD_SetDecCommand(MSAPI_AUD_STOP);

    XBYTE[0x2CE5] = 0x00;	// ADC Power on
    XBYTE[0x2CE4] = 0x00;	// ADC Power on
    XBYTE[0x2CE7] = 0x30;	// ADC Power on
    XBYTE[0x2CE6] = 0x00;	// ADC Power on
    // The following code would be removed to Audio Driver hereafter
    XBYTE[0x2CC1] &= 0xE7;         // turn on SIF ADC
    XBYTE[0x2CC0] &= 0xF3;          // turn on SIF ADC
    XBYTE[0x2CC2] &= 0xFC;        // turn on SIF ADC Vref Gen.
    XBYTE[0x2CD2] &= 0xEF;         // turn on SIF PLL
    XBYTE[0x2CC2] &= 0xFC;
    XBYTE[0x2CD2] &= 0xEF;

    BinInfo.B_ID = BIN_ID_CODE_AUDIO;

    if ( msAPI_MIU_Get_BinInfo(&BinInfo) != PASS )
    {
        AUD_DEBUG(printf("Audio: could not find Audio binary on flash.\r\n"));
        return;
    }

    MDrv_AudioSetBaseAddress(BinInfo.B_FAddr, MAD_BASE_BUFFER_ADR);

    // 0: AC3, 1:MPEG, 2:SIF BTSC
    MDrv_AudioInit(1);//, MAD_BASE_BUFFER_ADR);

    // keep the following reload functions - bj // TODO
    //MDrv_AuDvbReLoadCode(AU_DVB_STANDARD_MPEG);
    //MDrv_AuDvbReLoadCode(AU_DVB_STANDARD_AC3);
    //MDrv_AuSifReLoadCode(AU_STANDARD_BTSC);

    // set sound effect by user settings
    msAPI_AUD_SetBass(stSoundSetting->astSoundModeSetting[stSoundSetting->SoundMode].Bass);
    msAPI_AUD_SetTreble(stSoundSetting->astSoundModeSetting[stSoundSetting->SoundMode].Treble);
    msAPI_AUD_SetBalance(stSoundSetting->astSoundModeSetting[stSoundSetting->SoundMode].Balance);
    msAPI_AUD_SetSurround(SURROUND_MODE_MOUNTAIN);
    msAPI_AUD_SetAutoVolume(stSoundSetting->bEnableAVC);
    msAPI_AUD_SetSubwooferCutFreq(100);

    // init variables
    enCurAuInputSel = MSAPI_AUD_INPUT_DECORDER;
    enCurSoundMode = MSAPI_AUD_DVB_SOUNDMODE_NONE;
    enCurSifSoundMode = SOUND_MTS_NONE;

#if (AUDIO_DSP_CODE_SEL == AUDIO_DSP_CODE_DVB)
    enCurDecSystem = MSAPI_AUD_DVB_MPEG;
    enCurSifSystem = MSAPI_AUD_SIF_SYS_NOT_READY;
#else
    enCurDecSystem = MSAPI_AUD_DVB_NONE;
    #if (AUDIO_SYSTEM_SEL==AUDIO_SYSTEM_A2)
    enCurSifSystem = MSAPI_AUD_SIF_SYS_M_A2;
    #elif (AUDIO_SYSTEM_SEL==AUDIO_SYSTEM_EIAJ)
    enCurSifSystem = MSAPI_AUD_SIF_SYS_M_EIAJ;
    #else
    enCurSifSystem = MSAPI_AUD_SIF_SYS_M_BTSC;
    #endif
#endif

    MDrv_AuSetSPDIF_Path(1);

    // remove pop noise
    // Audio_Amplifier_ON();

    // keep MVD status
    enDecoderStatus = MSAPI_AUD_DVB_DECCMD_STOP;

    /* fine tune SAP detection for U02 */
    XBYTE[0x2CCF] = 0x28;

    XBYTE[0x2CC1] |= 0x02;
    //2CC0[9]=1                    (ENC=1)

    XBYTE[0x2CC5] |= 0x10;
    //2CC4[12]=1                   (AU_ADCREF_OV=1)

    XBYTE[0x2CC5] &= 0xF7;
    //2CC4[11]=0                   (AU_GSHIFT=0)

    XBYTE[0x2CC4] |= 0x80;
    //2CC4[7]=1                    (AU_AAF_CTRL_SEL=1)

    XBYTE[0x2CC7] = 0x10;
    //2CC6[15:8]=0001,0000         (ADC_BP[7:0]=0001,0000)

    XBYTE[0x2CC8] = 0x90;
    //2CC8[7:0]=1001,0000          (ADC_BM[7:0]=1001,0000)

    XBYTE[0x2CCA] = 0x55;
    XBYTE[0x2CCB] = 0x15;
    //2CCA[13:0]=01,0101,0101,0101 (ASIF_ICTRL[13:0]=01,0101,0101,0101)

    XBYTE[0x2CD1] = 0x6C;
    XBYTE[0x2CD0] = 0x00;
    //2CD0[15:13]=011              (ADC_VCTRL=011)
    //2CD0[11:0]=1100,0000,0000    (ASIF_ADCREF[11:0]=1100,0000,0000)
    /* end of SAP detection for U02 */
 #if ( MS_BOARD_TYPE_SEL == BD_CUS1X_03)
    Audio_Lineout_nonStb();
    Audio_Lineout_ON();
    MDrv_Timer_Delayms(50);
    Audio_Amplifier_nonStb();
  #endif
}


//******************************************************************************
//Function name:    msAPI_AUD_AudioHandler
//Passing parameter:    none
//Return parameter:     none
//Description:
//  [Doxygen]
///
//******************************************************************************
void msAPI_AUD_AudioHandler(void)
{
	MDrv_AudioHandler();
}


//******************************************************************************
//Function name:    msAPI_AUD_SetSubwooferCutFreq
//Passing parameter:    Cut Off Freq
//Return parameter:     none
//Description:      Set Subwoofer cut off frequency
//  [Doxygen]
/// Set Subwoofer cut off frequency
/// @param cutOff_freq \b IN Cut Off Freq
//******************************************************************************
void msAPI_AUD_SetSubwooferCutFreq( U16 cutOff_freq )
{
    U8 cutOff_mode;

    AUD_DEBUG(printf("apiAud>> cutOff_freq = %u\n", cutOff_freq));

    cutOff_mode = (cutOff_freq - 50) / 50;

    if ( (cutOff_mode < 0) || (cutOff_mode > 15) )
    {
        cutOff_mode = 1;
    }

    MDrv_AuProcessSetSubwooferCutFreq(cutOff_mode);
}

//******************************************************************************
//Function name:    msAPI_AUD_SetAutoVolume
//Passing parameter:
//Return parameter:     none
//Description:      enable/disable AVC
//  [Doxygen]
/// enable/disable AVC
/// @param enAVC \b IN 1: enable , 0: disable
//******************************************************************************
void msAPI_AUD_SetAutoVolume( U8 enAVC )

⌨️ 快捷键说明

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