www.pudn.com > dv981-hd.rar > AUD_CTRL.H
/**********************************************************************/
/*************** MTK CONFIDENTIAL & COPYRIGHTED ****************/
/*************** ****************/
/*************** $Modtime:: 03/10/01 6:05p $ ****************/
/*************** $Revision: 5.0 $ ****************/
/*************** ****************/
/*************** Description : Audio Control ****************/
/*************** Interface Header File ****************/
/*************** ****************/
/*************** Company : MediaTek Inc. ****************/
/*************** Programmer : ****************/
/**********************************************************************/
#ifndef _AUD_CTRL_H_
#define _AUD_CTRL_H_
#include ".\dsp\adsp.h"
// *********************************************************************
// Default values
// *********************************************************************
#define AUD_DEFAULT_VOL 20
#define AUD_VSURR_GAIN_DEFAULT 12
#define AUD_VSURR_WGAIN_DEFAULT 12
#define AUD_VSURR_DELAY_DEFAULT 5
#define AUD_BASS_BOOST_GAIN_DEFAULT 20
#define AUD_BASS_PIPE_DELAY_DEFAULT 5
#define AUD_TREBLE_BOOST_GAIN_DEFAULT 20
#define AUD_REVERB_GAIN_DEFAULT 16
#define SPDIF_CHANGE_SWITCH_CNT 50 // 1.0 seconds
#define SPDIF_CHANGE_UNMUTE_CNT 25 // 0.5 seconds
#define PCM_FREQ_CHANGE_SWITCH_CNT 50 // 1.0 seconds
#define PCM_FREQ_CHANGE_UNMUTE_CNT 25 // 0.5 seconds
#define AST_NORMAL_CHANGE_CNT 25 // 0.5 seconds
#define AST_NORMAL_CHANGE_UNMUTE_CNT 50 // 1 seconds
#define AST_PCM_CHANGE_UNMUTE_CNT 25 // 0.5 seconds
#ifdef MIC_AUTOMUTE
#define MIC_AUTOMUTE_CNT 25 // continuous low level counts
#define MIC_AUTOMUTE_ON_CNT 0xff
#endif
// *********************************************************************
// Control Mode
// *********************************************************************
#define DM_STEREO 0
#define DM_L_MONO 1
#define DM_R_MONO 2
#define DM_M_MONO 3
#define ADSP_OFF 0
#define ADSP_ON 1
#define KARA_MODE_DISABLE 0
#define KARA_MODE_ENABLE 1
#define MIC_EQ_DISABLE 0
#define MIC_EQ_ENABLE 1
#define PROLOGIC_DISABLE 0
#define PROLOGIC_ENABLE 1
#define PROLOGIC_AUTO 2
/* for SPDIF config, in setup menu option sequence */
#define SPDIF_OFF 0x00
#define SPDIF_RAW 0x10
#define SPDIF_PCM 0x20
#define SPDIF_MANUAL 0x40
#define SPDIF_PCM_LR SPDIF_IEC_LR
#define SPDIF_PCM_LS_RS SPDIF_IEC_LS_RS
#define SPDIF_PCM_C_LFE SPDIF_IEC_C_LFE
#define SPDIF_PCM_CH78 SPDIF_IEC_CH78
/* for vAdspSpdifManualSet() */
#define SPDIF_CDDA 0
#define SPDIF_AC3 1
#define SPDIF_DTS 2
#define SPDIF_MPEG 3
#define SPDIF_TYPE_MAX 4
/* for temp use */
#define KOK_DISABLE 0
#define KOK_LRMIX 1
#define KOK_VMUTE 2
#define AUDIO_KEY_RESUME 0
#define AUDIO_KEY_PLUS 1
#define AUDIO_KEY_MINUS 2
#define VOCAL_NO_ASSIST 0
/* for voice cancel */
#define VOCAL_VOICE_CANCEL 1
/* for L/R switch */
#define VOCAL_LEFT 2
#define VOCAL_RIGHT 3
/* for stream switch */
#define VOCAL_AUDIO1 4
#define VOCAL_AUDIO2 5
/* for AC3 karaoke mode */
#define VOCAL_NONE 6
#define VOCAL_V1 7
#define VOCAL_V2 8
#define VOCAL_BOTH 9
#if defined(INTERNAL_KARA)
#define VOCAL_MIC_ON 10
#define VOCAL_MIC_OFF 11
#endif
#if defined(INTERNAL_KARA)
#define VOL_MAIN_MODE 0
#define VOL_MIC_ON_MODE 0
#define VOL_TONE_MODE 1
#define VOL_ECHO_MODE 3
#define VOL_MIC_MODE 2
#define VOL_SSN_MODE 4
#define VOL_LM_MODE 4
#define VOL_RM_MODE 5
#define VOL_NON_MODE 6
#endif
#define fgIsAc3Vocal(bType) ((bType >= VOCAL_NONE) && (bType <= VOCAL_BOTH))
#define VOACL_TYPE_MAX 10
#define AUDIO_STEREO 0
#define AUDIO_MONO_LEFT 11
#define AUDIO_MONO_RIGHT 12
#define AUDIO_MONO_MIXED 13
#define AUD_MIC_VOL_1 0x01
#define AUD_MIC_VOL_2 0x02
#define AUD_MIC_VOL_BOTH 0x03
#define AUD_CH_EQ_CTRL 1
#define AUD_VSURR_CTRL 2
#define AUD_BASS_BOOST_CTRL 3
#define AUD_TREBLE_BOOST_CTRL 4
#define AUD_BASS_PIPE_CTRL 5
#define AUD_REVERB_CTRL 6
/* for vAdspReverbMode() */
#define AUD_REVERB_MODE_OFF 0
#define AUD_REVERB_MODE_MAX 7
// for DSP processing mode
#define AUD_BASS_TO_SUB 1
#define AUD_SPECTRUM 2
// for vAdspPostDRC()
#define AUD_DRC_POST_OFF 0
#define AUD_DRC_POST_ON 1
#define AUD_DRC_POST_AUTO 2
// for vSetPinkNoiseSp()
#define AUD_PN_OFF 0
#define AUD_PN_ON 1
#define AUD_PN_NEXT 2
#define PINK_NOISE_PERIOD 3
#define PN_SPK_OFF 0
#define PN_SPK_L 1
#define PN_SPK_C 2
#define PN_SPK_R 3
#define PN_SPK_RS 4
#define PN_SPK_LS 5
#define PN_SPK_LFE 6
#define PN_SPK_NS 6
// for vAdspVsurrCtrl()
#define AUD_VSURR_OFF 0
#define AUD_VSURR_MTK 1
#define AUD_VSURR_N22 2
// *********************************************************************
// For equalizer preset
// *********************************************************************
#define AUD_EQ_TYPE_NONE 0
#define AUD_EQ_ROCK 1
#define AUD_EQ_POP 2
#define AUD_EQ_LIVE 3
#define AUD_EQ_DANCE 4
#define AUD_EQ_TECHNO 5
#define AUD_EQ_CLASSIC 6
#define AUD_EQ_SOFT 7
#define AUD_EQ_TYPE_MAX 8
// *********************************************************************
// For audio control.
// *********************************************************************
typedef union
{
BYTE Byte;
struct
{
BYTE fgChEq:1;
BYTE bVsurrType:2;
BYTE fgBassBoost:1;
BYTE fgTrebleBoost:1;
BYTE fgBassPipe:1;
BYTE fgReverb:1;
BYTE bReserve:1;
} Bit;
} unionSurrType;
typedef struct
{
struct
{
BYTE bCurVol:6;
BYTE fgIsMute:1;
BYTE fgLower:1;
} sVol;
struct
{
BYTE bEcho:7;
BYTE fgMic:1;
} sEcho;
struct
{
/* BYTE 0 */
BYTE bVocalMode:6;
BYTE fgMelody:1;
BYTE fgVoiceCancel:1;
#ifdef VOCAL_ASSIST_MIC_CNT
/* BYTE 1 */
BYTE fgMicActive:1;
BYTE bMicCnt:7;
#endif
} sVocal;
struct
{
/* BYTE 0 */
BYTE fgDownmixOn:1;
BYTE fgKaraMode:1;
BYTE fgVocalAssist:1;
BYTE fgSpdifOn:1;
BYTE bPinkNoiseSpk:4;
/* BYTE 1 */
BYTE bSpkFormat:3;
BYTE fgDspStop:1;
BYTE bAudioInMode:2;
BYTE Reserve:2;
} sFlag;
unionSurrType uSurrType;
CHAR cCurKey; /* audio key */
BYTE bKaraMixRatioLR;
struct
{
/* BYTE 0 */
BYTE bCnt;
/* BYTE 1 */
BYTE bState:2;
BYTE bFormat:2;
BYTE bNextMode:2;
BYTE Reserve:2;
} sIEC;
#ifdef PCM_FREQ_CHANGE_MUTE
struct
{
/* BYTE 0 */
BYTE bCnt;
/* BYTE 1 */
BYTE bState:2;
BYTE bFreq:2;
BYTE Reserve:4;
} sPcmFreq;
#endif
#ifdef MIC_AUTOMUTE
BYTE bMicAutomuteCnt;
#endif
} strucAudioCtrl;
/* reduce the internal state, try to keep share memory info */
#ifdef _AUD_CTRL_C_
xdata strucAudioCtrl _rAudioCtrl;
#else
extern xdata strucAudioCtrl _rAudioCtrl;
#endif
// *********************************************************************
// For IEC switching state
// *********************************************************************
#define AUD_IEC_SW_IDLE 0
#define AUD_IEC_SW_CHG 1
#define AUD_IEC_SW_UNMUTE 2
#define fgIsIecSwitching() (_rAudioCtrl.sIEC.bState != AUD_IEC_SW_IDLE)
#define fgIsIecSwitched() (_rAudioCtrl.sIEC.bState == AUD_IEC_SW_UNMUTE)
#define vSetIecSwitching() \
{ \
_rAudioCtrl.sIEC.bCnt = SPDIF_CHANGE_SWITCH_CNT; \
_rAudioCtrl.sIEC.bState = AUD_IEC_SW_CHG; \
}
#define vResetIecSwitching() \
{ \
_rAudioCtrl.sIEC.bCnt = 0; \
_rAudioCtrl.sIEC.bState = AUD_IEC_SW_IDLE; \
}
// *********************************************************************
// For Audio in
// *********************************************************************
#define fgIsLineInMode() (_rAudioCtrl.sFlag.bAudioInMode == DSP_AIN_LINE)
#define fgIsSpdifInMode() (_rAudioCtrl.sFlag.bAudioInMode == DSP_AIN_SPDIF)
// *********************************************************************
// For PCM Frequency Switching State
// *********************************************************************
#define AUD_PCM_FREQ_IDLE 0
#define AUD_PCM_FREQ_CHG 1
#define AUD_PCM_FREQ_UNMUTE 2
#define fgIsPcmFreqSwitching() (_rAudioCtrl.sPcmFreq.bState != AUD_PCM_FREQ_IDLE)
#define fgIsPcmFreqSwitched() (_rAudioCtrl.sPcmFreq.bState == AUD_PCN_FREQ_UNMUTE)
#define vSetPcmFreqSwitching() \
{ \
_rAudioCtrl.sPcmFreq.bCnt = PCM_FREQ_CHANGE_SWITCH_CNT; \
_rAudioCtrl.sPcmFreq.bState = AUD_PCM_FREQ_CHG; \
}
#define vResetPcmFreqSwitching() \
{ \
_rAudioCtrl.sPcmFreq.bCnt = 0; \
_rAudioCtrl.sPcmFreq.bState = AUD_PCM_FREQ_IDLE; \
}
// *********************************************************************
// Get current Adsp state
// *********************************************************************
#define fgIsKaraMode() (_rAudioCtrl.sFlag.fgKaraMode == TRUE)
#define fgIsVocalAssistOn() (_rAudioCtrl.sFlag.fgVocalAssist == TRUE)
#define fgIsVoiceCancel() (_rAudioCtrl.sVocal.fgVoiceCancel == TRUE)
#define fgIsMute() (_rAudioCtrl.sVol.fgIsMute == TRUE)
#define fgIsVsurrOn() (_rAudioCtrl.uSurrType.Bit.bVsurrType != AUD_VSURR_OFF)
#define fgIsReverbOn() (_rAudioCtrl.uSurrType.Bit.fgReverb == TRUE)
// *********************************************************************
// Get current Adsp mode
// *********************************************************************
#define bAdspCurrVol() (_rAudioCtrl.sVol.bCurVol)
#define bAdspCurrSurr() (_rAudioCtrl.uSurrType.Byte)
#define bAdspCurrVocal() (_rAudioCtrl.sVocal.bVocalMode)
#ifdef MIC_AUTOMUTE
#define fgIsMicAutomuteOn() (_rAudioCtrl.bMicAutomuteCnt == MIC_AUTOMUTE_ON_CNT)
#endif
// *********************************************************************
// For channel equalizer paramters
// *********************************************************************
typedef struct {
union
{
BYTE Byte;
struct
{
BYTE Ch:4;
BYTE Band:4;
} Bit;
} Union;
} strucDspChBand;
// *********************************************************************
// For downmix mode config
// *********************************************************************
typedef struct {
BYTE Front:2; /* small/large */
BYTE Mode:2;
BYTE Sub:1;
BYTE Reserve:3;
} strucDownmixConfig;
/* for 2 channel downmix mode */
#define DOWNMIX_OFF 0x00
#define DOWNMIX_LO_RO 0x01
#define DOWNMIX_LT_RT 0x02
// *********************************************************************
// For multi-channel speaker config
// *********************************************************************
typedef struct {
BYTE Cntr:2; /* off/small/large */
BYTE Rear:2; /* off/small/large */
BYTE Fr:2; /* small/large */
BYTE Sub:1;
BYTE Reserve:1;
} strucSpkConfig;
/* for speaker config */
#define SPK_OFF 0x00
#define SPK_ON 0x01 /* for SUB/CB/CH7 */
#define SPK_SMALL 0x01
#define SPK_LARGE 0x02
/* for speaker config */
#define SPK_LR 0x01
#define SPK_LS 0x02
#define SPK_RS 0x04
#define SPK_LS_RS 0x06
#define SPK_CNTR 0x08
#define SPK_SUB 0x10
#define SPK_CB 0x20
#define SPK_CH7 0x40
#define UP_SAMP_1X 1
#define UP_SAMP_2X 2
#define UP_SAMP_4X 4
#define UP_SAMP_8X 8
#define MIC_STOP 0
#define MIC_REC 1
#define MIC_PLAY 2
// *********************************************************************
// For vAdspKaraLR()
// *********************************************************************
#define KARA_LEFT 0
#define KARA_RIGHT 1
#define KARA_STEREO 2
// *********************************************************************
// For vAdspKaraAC3()
// *********************************************************************
#define KARA_NONE 0
#define KARA_V1 1
#define KARA_V2 2
#define KARA_BOTH 3
// *********************************************************************
// Function prototypes
// *********************************************************************
void vInitAdspShareInfo(void) large;
void vAdspInit(BYTE bVolume) large;
void vAdspReset(void) large;
void vAdspAudioTypeChange(BYTE bAudioType, BYTE bDiscType, BYTE bInitState) large;
void vAdspPbcChange(BYTE bPbcState) large;
#if (!defined(SET_VSURR_IN_SPKCFG) && defined(PLAYER_SURROUND))
BOOL fgCheckIsVSurrValid(BYTE bAudioType, BYTE bDiscType, BYTE bInitState) large;
#endif
#if 0
void vAdspProcMode(BYTE bMode, BOOL fgOnoff) large;
#endif
#ifdef PLAYER_SURROUND
#ifndef NO_POST_DRC_ON_OFF
void vAdspPostDRC(BYTE bMode) large;
#endif
#endif
void vAdspVolume(BYTE bLevel) large;
void vAdspMute(BOOL fgOnOff, BYTE bTime) large;
void vAdspLR(BYTE bMode) large;
void vAdspSpkDownmix(strucDownmixConfig rSpk) large;
void vAdspAc3DualMono(BYTE bMode) large;
void vAdspDynamicRange(BYTE bLevel) large;
void vAdspSpdifMode(BYTE bMode) large;
void vAdspSpdifManualSet(BYTE bType, BYTE bMode) large;
#ifndef TWO_CHANNEL_ONLY
#ifdef SPDIF_PCM_CH_SELECT
void vAdspSpdifCh(BYTE bCh) large;
#endif
#ifdef SPDIF_PCM_FREQ_SELECT
void vAdspPcmFreq(BYTE bMode) large;
#endif
void vAdspSpkConfig(strucSpkConfig rSpk) large;
#ifdef CHANNEL_AUDIO_DELAY
void vAdspChDelay(BYTE bChannel, WORD wDelay) large;
#else
void vAdspChDelay(BYTE bChannel, BYTE bDelay) large;
#endif
void vAdspChDelayTime(BYTE bChannel, BYTE bTime) large;
#ifdef PLAYER_TRIM
void vAdspChTrim(BYTE bChannel, BYTE bLevel) large;
#endif
void vAdspDialogGain(BYTE bLevel) large;
#else
#ifdef BBK_MENU
#ifdef SPDIF_PCM_CH_SELECT
void vAdspSpdifCh(BYTE bCh) large;
#endif
#ifdef SPDIF_PCM_FREQ_SELECT
void vAdspPcmFreq(BYTE bMode) large;
#endif
#endif
#endif
#ifdef PLAYER_KARAOKE
void vAdspKaraMode(BYTE bMode) large;
void vAdspSetMicEq(BYTE bMode) large;
void vAdspVocalAssist(BYTE bMode) large;
#ifdef VOCAL_ASSIST_MIC_CNT
void vAdspKaraVC(BOOL fgOn) large;
#endif
void vAdspKaraLR(BYTE bMode) large;
#ifdef AC3_KARA_MODE
#ifdef AC3_KARA_MELODY
void vAdspKaraMelody(BOOL fgOn) large;
#endif
void vAdspKaraAC3(BYTE bMode) large;
#endif
void vAdspMicEq(BYTE bBand, BYTE bGain) large;
void vAdspMicVol(BYTE bChannel, BYTE bVol) large;
void vAdspMicThreshold(BYTE bLevel) large;
BOOL fgAdspIsMicOn(void) large;
#ifdef KARAOKE_SIMPLE_ECHO
void vAdspEchoLevel(BYTE bLevel) large;
#else /* original echo */
void vAdspEchoDelay(BYTE bMode) large;
void vAdspEchoDepth(BYTE bMode) large;
void vAdspEchoVol(BYTE bMode) large;
#endif /* original echo */
void vAdspMicMix(BYTE bCh, BYTE bMode) large;
#if 0
void vAdspEchoCtrl(BYTE bMode) large;
#endif
#ifdef KARAOKE_MIC_REC
void vAdspMicRec(BYTE bMode) large;
BYTE bAdspMicRecState(BYTE bMode) large;
#endif /* KARAOKE_MIC_REC */
#endif /* PLAYER_KARAOKE */
#if (defined(PLAYER_KARAOKE) || defined(USE_EXTERNAL_KARAOKE))
char cAdspAudKeyCtrl(BYTE bMode) large;
#endif
#ifdef PLAYER_SURROUND
void vAdspSurr(BYTE bMode, BYTE bOption) large;
void vAdspChEqBand(strucDspChBand rChBand, BYTE bLevel, BYTE fgNotify) large;
void vAdspChEqLoadPreset(BYTE bType) large;
#ifdef PLAYER_ADV_EQ
char cAdspChEqPresetParm(BYTE bType, BYTE bBand) large;
#endif
void vAdspVsurrGain(BYTE bLevel) large;
void vAdspVsurrWGain(BYTE bLevel) large;
void vAdspVsurrDelay(BYTE bLevel) large;
void vAdspBassBoostGain(BYTE bLevel) large;
void vAdspTrebleBoostGain(BYTE bLevel) large;
void vAdspBassPipeDelay(BYTE bLevel) large;
void vAdspReverbMode(BYTE bMode) large;
#if 0
void vAdspReverbGain(BYTE bLevel) large;
#endif
#elif (defined(SET_VSURR_IN_SPKCFG)) // not define PLAYER_SURROUND
void vAdspSurr(BYTE bMode, BYTE bOption) large;
#endif
#ifdef DOLBY_PROLOGIC
void vAdspPrologMode(BYTE bMode) large;
void vAdspPrologBal(BYTE bMode) large;
void vAdspPrologSurr(BYTE bMode) large;
#endif
#ifdef DOLBY_PROLOGIC2
#define AUD_PL2_SWITCH 0
#define AUD_PL2_MODE 1
#define AUD_PL2_PANORAMA 2
#define AUD_PL2_DIMENSION 3
#define AUD_PL2_C_WIDTH 4
void vAdspPL2Config(BYTE bCtrl, BYTE bMode) large;
#endif
#if (defined(HDCD_CERTIFICATION) || defined(HDCD_EN))
void vAdspHdcdMode(BYTE bMode, BYTE bDither) large;
void vAdspUpSamp(BYTE bLevel) large;
void vAdspDitherLvl(BYTE bLevel) large;
#ifdef AUDIO_IN_EN
void vAdspInputBLength(BYTE bLength) large;
#endif
#endif
#ifdef SETUP_ENABLE_TEST_TONE
BYTE bSetPinkNoiseSp(BYTE bMode) large;
#endif
#ifdef AUDIO_IN_EN
void vAdspAinSel(BYTE bCh) large;
#endif
void vAdspTimerJob(void) large;
#ifdef BBK//TONE_IN_SETUP //BillDen
void bToneChange(CHAR cToneValue) large;
#endif
#ifdef CHANNEL_AUDIO_DELAY
void bAudioDelay(CHAR cAudelayValue) large;
#endif
#if defined(PLAYER_KARAOKE) && defined(KARAOKE_SCORING)
void vAdspKScoreSw(BYTE bSw, BYTE bMaxScore, BYTE bMinScore) large;
BYTE bAdspGetKScore(void) large;
BOOL fgAdspKscoreSupport(void) large;
#ifdef KARAOKE_SCORE_TEST
void vAdspGetKSHitMiss(WORD *wHit0,WORD *wHit1,WORD *wMiss) large;
#endif
void vAdspResetKScore(void) large;
#endif
#endif /* _AUD_CTRL_H_ */