📄 msapi_audio.c
字号:
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 + -