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

📄 msapi_audio.c

📁 mstar 776 开发的车载dvd
💻 C
📖 第 1 页 / 共 4 页
字号:
    if ( bFlag )
    {
        Audio_Amplifier_OFF();
		g_u8MuteStatus |= 0x80;
    }
    else
    {
        Audio_Amplifier_ON();
		g_u8MuteStatus &= 0x7F;
    }
}

//******************************************************************************
//Function name:    msAPI_AUD_GetStdard
//Passing parameter:    Get Audio SIF Stardard Mode
//Return parameter:     none
//Description:   none
//******************************************************************************
U8 msAPI_AUD_GetStdard(void)
{
    U8 aud_get_sif_std;

    aud_get_sif_std = MDrv_AuSif_GetStandard();

    return (aud_get_sif_std);
}


//******************************************************************************
//Function name:    msAPI_AUD_SPDIF_Path_Sel
//Passing parameter:    SPDIF OUTPUT Source Select
//Return parameter:     none
//Description:          none
//******************************************************************************
void msAPI_AUD_SPDIF_Path_Sel(U8 spdif_output_sel)
{
    // 0: TV Source,
    // 1: SPDIF_IN,
    // 2: ADC,
    // 3: I2S,
    MDrv_AuSetSPDIF_Path(spdif_output_sel);
}

//******************************************************************************
//Function name:    msAPI_AUD_SPDIF_Path_Sel
//Passing parameter:    SPDIF OUTPUT Source Select
//Return parameter:     none
//Description:          none
//                      MDrv_AuReadPaser : read reg 0x2D36[0]
//                      MDrv_AuSetPaser  : set reg 0x2D36[0]
//******************************************************************************
U8 msAPI_AUD_ReportAC3Status(void)
{
    // 0: AC3 not exist,
    // 1: AC3 exist,
    BYTE PaserCmd_tmp;

    PaserCmd_tmp = MDrv_AuReadPaser();

    MDrv_AuSetPaser(MSAPI_AUD_PASER_PLAY);
    MDrv_Timer_Delayms(5);                    // Wait CRC check

    if ((MDrv_AuDvbRpt_DTVES()&0x80) && (MDrv_AuDvbRpt_DTVES()&0x01) )
        return(1);
    else
        return(0);

    MDrv_AuSetPaser(PaserCmd_tmp);

}

//******************************************************************************
//Function name:    msAPI_AUD_SPDIF_Path_Sel
//Passing parameter:    SPDIF OUTPUT Source Select
//Return parameter:     none
//Description:          none
//******************************************************************************
U8 msAPI_AUD_ReportMPEGStatus(void)
{
    // 0: MPEG not exist,
    // 1: MPEG exist,
    if ((MDrv_AuDvbRpt_DTVES()&0x40) && (MDrv_AuDvbRpt_DTVES()&0x01) )
        return(1);
    else
        return(0);
}
//******************************************************************************
//Function name:        msAPI_AUD_SetADCThreshold
//Passing parameter:    threshold
//Return parameter:     none
//Description:          none
//******************************************************************************
void msAPI_AUD_SetADCThreshold(U8 threshold)
{
    MDrv_AuProcessSetADCThreshold(threshold);
}

#if 0 // TODO
//******************************************************************************
//Function name:    msAPI_AUD_SRAM_DMOV1_TST
//Return parameter:     none
//Description:          SRAM dm_overlay1 test to enhance SRAMBIST check fail part
//******************************************************************************
U8 msAPI_AUD_SRAM_DMOV1_TST(void)
{
    return(MDrv_AuSRAM_DMOV1_TST());
}
#endif

//******************************************************************************
//Function name:    msAPI_AUD_SIF_SetMONOThr
//Return parameter: none
//Description:      set SIF BTSC MONO Thr
//                       default value : BTSC_MONO_ON_Thr = 0x16b0 (Fluke 37 dBuV)
//                                       BTSC_MONO_OFF_Thr= 0x2490 (Fluke 32 dBuV)
//*************************************************************************
void msAPI_AUD_SIF_BTSC_SetMONOThr(U8 mono_on_thr_hi, U8 mono_on_thr_lo, U8 mono_off_thr_hi, U8 mono_off_thr_lo)
{
	mono_on_thr_hi = mono_on_thr_hi;
	mono_on_thr_lo = mono_on_thr_lo;
	mono_off_thr_hi = mono_off_thr_hi;
	mono_off_thr_lo = mono_off_thr_lo;

//    MDrv_AuSif_BTSC_setMonoThr(mono_on_thr_hi, mono_on_thr_lo, mono_off_thr_hi, mono_off_thr_lo);
}

//*************************************************************************
//Function name:    msAPI_AUD_SIF_SetStereoThr
//Return parameter: none
//Description:      set SIF BTSC STEREO Thr
//                  default value : BTSC_STEREO_ON_Thr = 0x3900 (Fluke 37 dBuV)
//                                  BTSC_STEREO_OFF_Thr= 0x5b00 (Fluke 32 dBuV)
//*************************************************************************
void msAPI_AUD_SIF_BTSC_SetSTEREOThr(U8 stereo_on_thr_hi, U8 stereo_on_thr_lo, U8 stereo_off_thr_hi, U8 stereo_off_thr_lo)
{
	stereo_on_thr_hi = stereo_on_thr_hi;
	stereo_on_thr_lo = stereo_on_thr_lo;
	stereo_off_thr_hi = stereo_off_thr_hi;
	stereo_off_thr_lo = stereo_off_thr_lo;

//    MDrv_AuSif_BTSC_setStereoThr(stereo_on_thr_hi, stereo_on_thr_lo, stereo_off_thr_hi, stereo_off_thr_lo);
}

//*************************************************************************
//Function name:    msAPI_AUD_SIF_SetSAPThr
//Return parameter: none
//Description:      set SIF BTSC SAP Thr
//                  default value : BTSC_SAP_ON_Thr = 0x1a20 (Fluke 37 dBuV)
//                                  BTSC_SAP_OFF_Thr= 0x2eb0 (Fluke 32 dBuV)
//*************************************************************************
void msAPI_AUD_SIF_BTSC_SetSAPThr(U8 sap_on_thr_hi, U8 sap_on_thr_lo, U8 sap_off_thr_hi, U8 sap_off_thr_lo)
{
	sap_on_thr_hi = sap_on_thr_hi;
	sap_on_thr_lo = sap_on_thr_lo;
	sap_off_thr_hi = sap_off_thr_hi;
	sap_off_thr_lo = sap_off_thr_lo;
//    MDrv_AuSif_BTSC_setSapThr(sap_on_thr_hi, sap_on_thr_lo, sap_off_thr_hi, sap_off_thr_lo);
}


//*************************************************************************
//Function name:    msAPI_AUD_GetDecStatus
//Return parameter: MSAPI_AUD_DVB_DECCMD_STOP or MSAPI_AUD_DVB_DECCMD_PLAY
//Description:      get decoder's status
//*************************************************************************
En_DVB_decCmdType msAPI_AUD_GetDecStatus(void)
{
    return enDecoderStatus;
}

//*************************************************************************
//Function name:    msAPI_AUD_GetDecStatus
//Return parameter: MSAPI_AUD_DVB_DECCMD_STOP or MSAPI_AUD_DVB_DECCMD_PLAY
//Description:      get decoder's status
//*************************************************************************
void msAPI_AUD_SetPaser(U8 paser_stpen)
{
    MDrv_AuSetPaser(paser_stpen);
}

//*************************************************************************
//Function name:    msAPI_AUD_HDMI_Monitor
//Return parameter: non-PCM --> 0x2C0C[7:6]= 0x1
//                  PCM     --> 0x2C0C[7:6]= 0x0
//Description:      This function report HDMI non-PCM or PCM format (0x2C0C)
//*************************************************************************
BYTE msAPI_AUD_HDMI_Monitor(void)
{
    return(MDrv_AuHDMI_Monitor());
}

//*************************************************************************
//Function name:    msAPI_PCM_NONPCM_Set
//Return parameter: none
//Description:      This function setting non-PCM or PCM relational register
//*************************************************************************
void msAPI_PCM_NONPCM_Set(BYTE nonPCM_en)
{
    if (nonPCM_en)
    {
        msAPI_AUD_SetDecCommand( MSAPI_AUD_STOP );
        msAPI_AUD_SifSetSystem( MSAPI_AUD_SIF_SYS_NOT_READY );
        msAPI_AUD_SetDecSystem( MSAPI_AUD_DVB_AC3 );
        msAPI_AUD_SetDecCommand( MSAPI_AUD_PLAY );
        //printf("API-nonPCM\r\n");
    }
    MDrv_AuPCM_NONPCM_Set(nonPCM_en);
    if (nonPCM_en)
    {
        MDrv_AuSetNormalPath(AUDIO_PATH_0, AUDIO_DSP1_DVB_INPUT, AUDIO_AUOUT0_OUTPUT);
        MDrv_AuSetNormalPath(AUDIO_PATH_1, AUDIO_DSP1_DVB_INPUT, AUDIO_AUOUT1_OUTPUT);
        MDrv_AuSetNormalPath(AUDIO_PATH_2, AUDIO_DSP1_DVB_INPUT, AUDIO_SPDIF_OUTPUT);
    }
    else
    {
        MDrv_AuSetNormalPath(AUDIO_PATH_0, AUDIO_HDMI_INPUT, AUDIO_AUOUT0_OUTPUT);
        MDrv_AuSetNormalPath(AUDIO_PATH_1, AUDIO_HDMI_INPUT, AUDIO_AUOUT1_OUTPUT);
        MDrv_AuSetNormalPath(AUDIO_PATH_2, AUDIO_HDMI_INPUT, AUDIO_SPDIF_OUTPUT);
    }
}

//*************************************************************************
//Function name:    msAPI_AUD_ISR1_CNT
//Return parameter: none
//Description:      return Audio CH1 counter
//*************************************************************************
U8 msAPI_AUD_ISR1_CNT(void)
{
    return(MDrv_AuReadByte(0x2D56));
}

//*************************************************************************
//Function name:    msAPI_AUD_SIF_SetSAPThr
//Return parameter: none
//Description:      return Audio Main Loop counter
//*************************************************************************
U8 msAPI_AUD_MAIN_CNT(void)
{
    return(MDrv_AuReadByte(0x2D54));
}

//*************************************************************************
//Function name:    msAPI_AUD_PLAY_Status
//Return parameter: none
//Description:      return Audio Play/Stop Status
//*************************************************************************
U8 msAPI_AUD_Dec_Status(void)
{
    return(MDrv_AuReadByte(0x2DEC));
}

//*************************************************************************
//Function name:    msAPI_AUD_RebootDSP
//Return parameter: none
//Description:      Reboot audio DSP
//Arguments:		u8RebootType:   0: only reset DSP,  1: load code and reset DSP
//*************************************************************************
void msAPI_AUD_RebootDSP(U8 u8RebootType)
{
    MDrv_AuRebootDSP(u8RebootType);
}

#if AEON_TO_51_MAILBOX
void msAPI_AUD_Process_Aeon251Mailbox(U8 *u8AeonMailBox)
{
    U32 u32Addr;
    U32 u32LoopCounts;
    U32 u32Length;

    if (u8AeonMailBox[1]==0)    // stop, play, resync
    {
        switch (u8AeonMailBox[2])
        {
            case MSAPI_AUD_AEON_CMD_51_DECCMD_STOP:
                msAPI_AUD_SetDecCommand(MSAPI_AUD_DVB_DECCMD_STOP);
                printf("AUD STOP\n");
                break;
            case MSAPI_AUD_AEON_CMD_51_DECCMD_PLAY:
                msAPI_AUD_SetDecCommand(MSAPI_AUD_DVB_DECCMD_PLAY);
                printf("AUD PLAY\n");
                break;
            case MSAPI_AUD_AEON_CMD_51_DECCMD_RESYNC:
                msAPI_AUD_SetDecCommand(MSAPI_AUD_DVB_DECCMD_RESYNC);
                printf("AUD RESYNC\n");
                break;
            default:
                break;
        }
    }
    else if (u8AeonMailBox[1]==1)   //playfile
    {
        switch (u8AeonMailBox[2])
        {
            case MSAPI_AUD_AEON_CMD_51_DECCMD_PLAYFILE:
                // loop
                u32LoopCounts = (((U32)u8AeonMailBox[3])<<24)|(((U32)u8AeonMailBox[4])<<16)|(((U32)u8AeonMailBox[5])<<8)|u8AeonMailBox[6];
                msAPI_AUD_SetDecCommand(MSAPI_AUD_DVB_DECCMD_PLAYFILE);
                printf("AUD PLAYFILE loop %u\n", u32LoopCounts);
                break;
            case MSAPI_AUD_AEON_CMD_51_DECCMD_PLAYFILE_PARAM:
                // just get param, don't cmd MAD to do something
                // addr
                u32Addr = (((U32)u8AeonMailBox[3])<<24)|(((U32)u8AeonMailBox[4])<<16)|(((U32)u8AeonMailBox[5])<<8)|u8AeonMailBox[6];
                // length
                u32Length = (((U32)u8AeonMailBox[7])<<24)|(((U32)u8AeonMailBox[8])<<16)|(((U32)u8AeonMailBox[9])<<8)|u8AeonMailBox[10];
                printf("AUD PLAYFILE %Lu, %Lu\n", u32Addr, u32Length);
                break;
            default:
                break;
        }
    }
}

#endif

#undef _MSAPI_AUDIO_C_

⌨️ 快捷键说明

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