/****************************************************************************** *_Copyright (c) 2009 Digital Stream Technology Inc. All Rights Reserved. * * Module: dsthalaud.h * * Description * * @author * @version $Revision: 1.1 $ * ******************************************************************************/ #ifndef __DSTHAL_AUD_H__ #define __DSTHAL_AUD_H__ /****************************************************************************** * Audio Processor Type ******************************************************************************/ typedef enum { DHL_AUDIO_STA323W = 1, DHL_AUDIO_STA333W, DHL_AUDIO_STA333BW }DHL_AUD_PROC_TYPE; /****************************************************************************** * DHL Headphone Callback Source ******************************************************************************/ typedef enum { HPCALLBACK_UNKNOWN=0, HPCALLBACK_STATUS_CHANGE, /* Callback on acquisition start, DHL_FE_Start() */ HPCALLBACK_MAX } HPCallbackSource; typedef enum { HP_DETECT, HP_UNDETECT } HPNotificationState_t; typedef void (*P_DHL_HP_CALLBACK)(HPNotificationState_t eventSource, DS_U32 userArg); /****************************************************************************** * DHL - Headphone Status/Configuration ******************************************************************************/ typedef struct tag_DHL_HP { /* Callback Functions */ P_DHL_HP_CALLBACK fnHPCallback[HPCALLBACK_MAX-1]; DS_U32 HPCallbackUserArg[HPCALLBACK_MAX-1]; DS_U32 hpThreadId; volatile DS_BOOL bThreadActive; HPNotificationState_t NotifyState; /* Platform/Project Specific fields */ } *P_DHL_HP, DHL_HP; /****************************************************************************** * DHL Audio Configuration ******************************************************************************/ typedef struct tag_DHL_AUD_AUDIO { OS_MUTEX_ID Mutex; DS_U16 uVolLvl; // Audio Volume DS_U16 uHPVolLvl; int Balance; int Treble; int Bass; DS_S32 iAudioDelay; // Audio Delay in msec. DS_BOOL bCurI2SMute; //current audio mixer mute DS_BOOL bCurSpdifMute; //current spdif mute DS_BOOL bCurAuxMute; DHL_AUD_OUTPUT_FORMAT AudOutFormat; //audio output format - current audio output DHL_AUD_OUTPUT_FORMAT AudOutFormatNxt; //audio output format - next audio output DS_BOOL bAudioHWInit; DHL_HP mHeadPhone; } DHL_AUDIO_CONFIG, *P_DHL_AUDIO_CONFIG; #if defined __cplusplus extern "C" { #endif /****************************************************************************** * Audio Output Common APIs ******************************************************************************/ DHL_RESULT DHL_AUD_Init(void); DHL_RESULT DHL_AUD_Close(void); DHL_RESULT DHL_AUD_PresetAudProcessor(DHL_AUD_PROC_TYPE type); DHL_RESULT DHL_AUD_PresetAudOutput(P_DHL_AUDIO_CONFIG pAudConfig); DHL_RESULT DHL_AUD_ChangeAudOutFormat(DHL_AUD_OUTPUT_FORMAT UserAudOutFmt); DHL_AUD_OUTPUT_FORMAT DHL_AUD_GetAudOutFormat(void); /****************************************************************************** * Audio Output Volume ******************************************************************************/ DHL_RESULT DHL_AUD_SetVolume(DS_U16 uVolLvl); DHL_RESULT DHL_AUD_SetVolumeHP(DS_U16 uVolLvl); DHL_RESULT DHL_AUD_GetVolume(DS_U16 *puVolLvl, DS_BOOL *pbMute); DHL_RESULT DHL_AUD_SetAMPPower(int n); DHL_RESULT DHL_AUD_VolumeFadeInOut_I2S(DS_BOOL bFadeOut); DHL_RESULT DHL_AUD_VolumeFadeInOut_AMP(DS_BOOL bFadeOut); /****************************************************************************** * Audio Output Mute ******************************************************************************/ DHL_RESULT DHL_AUD_MuteMain(DS_BOOL bMute); DHL_RESULT DHL_AUD_MuteAUX(DS_BOOL bMute); DHL_RESULT DHL_AUD_MuteSPDIF(DS_BOOL bMute); DS_BOOL DHL_AUD_IsMainMuted(void); DS_BOOL DHL_AUD_IsSpdifMuted(void); DS_BOOL DHL_AUD_IsAuxMuted(void); /****************************************************************************** * Audio Output - Headphone ******************************************************************************/ DHL_RESULT DHL_AUD_SetHPCallback( HPCallbackSource eventSource,P_DHL_HP_CALLBACK fn, DS_U32 userArg ); /****************************************************************************** * Audio Processing APIs ******************************************************************************/ DHL_RESULT DHL_AUD_SetAudioDelay(DS_S32 offset); DHL_RESULT DHL_AUD_SetBalance(int Balance); DHL_RESULT DHL_AUD_GetBalance(int *pBalance); DHL_RESULT DHL_AUD_SetTreble(int Treble); DHL_RESULT DHL_AUD_GetTreble(int *pTreble); DHL_RESULT DHL_AUD_SetBass(int Bass); DHL_RESULT DHL_AUD_GetBass(int *pBass); DHL_RESULT DHL_AUD_SetAVL(DS_BOOL Enable); DHL_RESULT DHL_AUD_SetSRS(DS_BOOL Enable); #if defined __cplusplus } #endif #endif /* __DSTHAL_AUD_H__ */