dsp3_config.c

来自「Sunplus 8202S source code.」· C语言 代码 · 共 615 行 · 第 1/2 页

C
615
字号
        extern UINT32 coding_mode_now;

	//extern BYTE isSPDIFBitstream;

	//BYTE	*q;

  //if( (coding_mode_now==AUDIF_CODING_MODE_DTS)&&(isSPDIFBitstream==0) )
  if(coding_mode_now==AUDIF_CODING_MODE_DTS)//terry,2004/3/26 11:13AM
     abv_size      = DTS_AUDIO_BITSTREAM_LEN*3;
#ifdef LPCM_EXTEND_BUF
  else if(coding_mode_now==AUDIF_CODING_MODE_LPCM)
     abv_size      = LPCM_AUDIO_BITSTREAM_LEN*3;
#endif
#ifdef MP3_JPEG_COWORK
  else if(coding_mode_now==AUDIF_CODING_MODE_MP3) //ycwen 2005/1/21 allocate 48K bytes for mp3 when mp3_jpeg_cowork
     abv_size      = MP3_AUDIO_BITSTREAM_LEN*3;  
#endif
  else
     abv_size      = AUDIO_BITSTREAM_LEN*3;

  if(coding_mode_now!=AUDIF_CODING_MODE_JPG)
  {
     //q = get_dsp3_pm_ptr();
     write24(1,abv_size/3);
  }
}

/**************************************************************************
 *  Function Name: reset_audio_buf
 *  Purposes:
 *    Reset audio buffer size, and set Dump/Barrier pointer to 0
 *  Descriptions:
 *
 *  Arguments:
 *
 *  Returns:
 *
 *  See also:
 *
 **************************************************************************/
//
// FUNCTION
// reset_audio_buf
//
void
reset_audio_buf(void)
{
#ifdef	MP3_JPEG_COWORK//screen the operation when in JPEG side
    if(pFsJpeg->gifsFuncBtn!=FS_FUNC_JPEG)//mark the action of reseting buffer
#endif
    {
        abv_start     = get_dsp3_dm_ptr() + AUDIO_BITSTREAM_START*3;
        set_aud_buf_size();
        AudioSetBytePtr(0);
        AudioSetDumpPointer(0);
    }
}

/**************************************************************************
 *  Function Name: setup_eq_display
 *  Purposes:
 *    Turn on or turn off EQ display
 *  Descriptions:
 *
 *  Arguments:
 *    val in : 0 - off, 1 - on
 *  Returns:
 *
 *  See also:
 *
 **************************************************************************/
void setup_eq_display(UINT8 val)
{//terry,2003/9/26 04:42PM
  bEqDisplay = val;
//wanghaoying add 2003-12-11 9:56
//Problem: when change sound page or close sound menu, the effect shut off.
#if 1//!defined(YUXING_SOUND)&&!defined(REMB_3DSOUND)//yanlb add REMB_3DSOUND 2004-07-11 16:00
  AUDIF_Set_EQType(bEqDisplay);//2004AUDDRV AudioSetEQType(bEqDisplay);
#endif
}

/**************************************************************************
 *  Function Name: dsp3_config
 *  Purposes:
 *    Set dsp3 memory space, memory based arguments. (through DM)
 *  Descriptions:
 *
 *  Arguments:
 *
 *  Returns:
 *
 *  See also:
 *    Documents such as DSPProtocol.doc in /doc
 **************************************************************************/
//
// FUNCTION
// dsp3_config
//
// DESCRIPTION
// setup dsp3 memory space, memory based arguments.
//
extern  const short DTSrom[];

#ifdef CHANGE_DSP_SPDIF_OFF//nono 2003-10-21 21:06
extern BYTE audioNotContinuous;
#endif

void    dsp3_config(void)
{
  int	i, v;
  //BYTE *q;

  // reset all DSP24 mailbox ports
  //for (i=0;i<16;i++) regs0->dsp24_port[i] = 0; //Jeff 20011029

// reset risc32 audio buffer pointers
  reset_audio_buf();

#if !defined(NO_DTS_OUTPUT)||defined(FORCE_NO_DTS_OUTPUT)//nono 4-5-5 13:50
  DTSSetRomLocation((UINT32)DTSrom);
#endif

  //q = get_dsp3_pm_ptr();

  // clear configs
  for (i=0;i<64;i++) write24(i,0);

  // write configs
  write24(0,AUDIO_BITSTREAM_START);
  write24(1,abv_size/3);
  //write24(2,0);

  // write configs
  write24(3, setupGetSetting(3) );     //Time of Mic auto on after sound detect on
  write24(4, setupGetSetting(4) );     //Time of Mic auto off after sound detect off
  write24(5, setupGetSetting(5) );     //Mic sound detect gain threshold
  write24(6, setupGetSetting(6) );     //Mic switch
  write24(7, setupGetSetting(7) );     //Aduio gain
  write24(8, setupGetSetting(8) );     //MIC gain
  write24(9, setupGetSetting(9) );     //Key shift
  write24(10,setupGetSetting(10));     //Echo delay
  write24(11,setupGetSetting(11));     //Echo gain
  write24(12,setupGetSetting(12));     //3D surround
  write24(13,setupGetSetting(13));     //subwoof

    // 14
    v = setupGetSetting(14);
#ifdef CHANGE_DSP_SPDIF_OFF
    if( (power_on_mute==0)&&(audioNotContinuous==0) ) {//2003-8-15 20:56 for avoid SPDIF noise when power on.
#else//#ifdef CHANGE_DSP_SPDIF_OFF
    if(power_on_mute==0) {//2003-8-15 20:56 for avoid SPDIF noise when power on.
#endif//#ifdef CHANGE_DSP_SPDIF_OFF

#if !defined(DTS_CD_OUT_RAW_A)&&!defined(NO_DTS_OUTPUT)//NONO 20040117
        if ( (cd_type_loaded==CDDA) && (setup_IsSet2SPDIF_Bitstream()) )
        {
            if (force_set_cd_md==0)
                v = 2;
            else
                v = 1;
        }
#endif
        if (v==1 && is_dts_force_spdif_bitstream()) v=2;
        write24(14,v);   //PCM mode
    }

  write24(15,setupGetSetting(15));     //EQ
  write24(16,setupGetSetting(16));     //SPDIF

  //Jeff 20020521
  write24(17,DACFORMAT);               //audio DAC format
  write24(18,DAC_INVERT);              //dac polarity
  //DAC output mapping
  write24(19,DACOUTLm);
  write24(20,DACOUTRm);
  write24(21,DACOUT0L);
  write24(22,DACOUT0R);
  write24(23,DACOUT1L);
  write24(24,DACOUT1R);
  write24(25,DACOUT2L);
  write24(26,DACOUT2R);

  // Bass Management
  // 0: Out 1, No Bass Management for 5 full-range spks and subwoofer output
  // 1: Out 2, Configuration 1 for 5 satellites spks
  // 2: Out 3, Simplified Bass Management for multi-channel source products
  //           with fixed to L/R
    #ifdef AC3_BASS_MANAGEMENT
	write24(27,setupGetSetting(27));     //Bass Management
    #else
	//write24(27,0);
    #endif

    #if 1//def SPDIF_PLUS_ANALOG
	write24(28,1);
    #else
	//write24(28,0);
    #endif


    if (cd_type_loaded==CDDA) { //Jeff update 20031223
#ifdef DTS_CD_OUT_RAW_A
         if ( (force_set_cd_md==0) && (cd_subtype==CD_DTS))

#else
        if ( (force_set_cd_md==0) &&
             ( (setup_IsSet2SPDIF_Bitstream()) || (cd_subtype==CD_DTS) )
           )
#endif
        {
            UINT32  dtscdbstmidx=0;

            if (smp_rate_now==FS_44K)
                dtscdbstmidx=1;
            else if (smp_rate_now==FS_48K)
                dtscdbstmidx=2;
            else if (smp_rate_now==FS_32K)
                dtscdbstmidx=3;

            write24(29,dtscdbstmidx);
        } //else {
            //write24(29,0);
        //}
    } //else {
        //write24(29,0);
    //}

/*
#ifdef USE_FREQ_MASK
    setup_SetFreqMaskConfig();//terry,2003/12/15 11:07AM
#else
    AUDIF_Set_FrqMsk(FREQ_MASK_DEFAULT);//2004AUDDRV audif_set_frequency_mask(FREQ_MASK_DEFAULT);
#endif
*/
	//20041222 JSLin	// always goest to setup_SetFreqMaskConfig()
	setup_SetFreqMaskConfig();

    //write24(31,0);

    //set_dsp3_pcm_value(32, frequency_multiple);
    write24(32,frequency_multiple);

    write24(33,setupGetSetting(33));
#ifdef SUPPORT_PROLOGIC_II
    write24(35,setupGetSetting(35));
#endif

    // ADC config ( default: 0)
    // 0: Select Line_in L/R capability,but only mix right channel
    // 1: Select Mic_Amp capability (only left channel capability)
    // 2: Select Line_in L/R capability,mix left channel
    // 3: Select Line_in L/R capability, Stereo ADC mic function
    //write24(36,0);
    write24(36,ADC_CONFIG_MODE);//nono 20030730

    //CD pcm content under DTSCD and HDCD (default: 0)
    // bit0: 1: If DTSCD is not allowable for customer,do not mute PCM output.
    //       0: mute
    // bit1: 1: Force CD type to do HDCD filter.
    //       0: CD PCM output do not any modify.
    // bit2: 1: HDCD function disable.
    //       0: HDCD function enable.

    //write24(37,0);

#if defined(PLAY_HDCD_AS_CD)
        write24(37,4);   //heqiang add for Ngailik, output with CD format when HDCD is loaded 4-2-23 17:38
#endif


    //RISC set ADC gain for custumer request (default:2)
    // DSP will range it between 1~5
    #ifdef ENHANCE_MIC_VOL_4   //axel add to enhancing MIC VOL 2003/11/26 11:46am
    write24(38,4);
    #else
    write24(38,2);
    #endif

    write24(39, setupGetSetting(39) ); //Left channel gain , Jeff 20030901
    write24(40, setupGetSetting(40) ); //Right channel gain
    write24(41, setupGetSetting(41) ); //Left surround channel gain
    write24(42, setupGetSetting(42) ); //Right surround channel gain
    write24(43, setupGetSetting(43) ); //Center channel gain
    write24(44, setupGetSetting(44) ); //MIC-2 gain
    write24(46, setupGetSetting(46) ); //Sub-woofer channel gain, Jeff 20031028

    //write24(47, setupGetSetting(46) ); //DTS/DVD-Audio Enable

    #ifdef DTS_94_24_CFG
    write24(48, DTS_94_24_CFG ); //DTS 96/24 function (0: disable, 1:enable, default 0)
    #endif

    #ifdef LmRm_CFG
    write24(49, LmRm_CFG ); //Lm/Rm channel mapping to the same with L/R (0: disable, 1:enable, default 0)
    #endif

    #ifdef SPHE8202//terry,2004/4/9 10:39AM
    write24(50,SPHE8202);
    #endif
    #ifdef SPHE1000 //MIKEY 2004.07.15 for SPDIF
    write24(50,1);
    #endif

#ifdef SUPPORT_RECEIVER
    write24(52,1); /*for tuner ADC gain,range 1--5*/
#endif
     #ifdef SUPPORT_TESTSPK   // benson     2004/7/2 04:37

⌨️ 快捷键说明

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