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

📄 str_os_aud_out.inc

📁 Sunplus 8202S source code.
💻 INC
字号:
#include "user_init.h"
#include "global.h"
#include "osd.h"
#include "auddrv.h" //2004AUDDRV oliver 20041004 for using audio driver purpose
//#include "audif.h"

void
str_os_aud_out(int sub_id)
{
#ifdef DVD_SETUP_REENG
	UINT16 P=0;
	UINT16 I=0;
#endif 

		//we use 48K SPDIF/BITSTREAM output when play 96K voide, Jeff 20020718
        AUDIF_Set_SampleRate(smp_rate_now);//2004AUDDRV audif_set_sample_rate(smp_rate_now);

                printf("setup audio out1\n");
        #ifndef HIMAGE_CANADA_CUS
        if(sub_id==STR_OS_SIMULATE)     
        {
            printf("setup audio out,spdif off\n");
            if (isSPDIFBitstream==1) {
                isSPDIFBitstream=0;
                AUDIF_Reset_DSP();//2004AUDDRV DSPReset();
            } 
            else {
#ifndef DIVIDE_AC3_DTS_SPDIF_OUTPUTS   
                if ( (cd_type_loaded==CDDA) && (cd_subtype==CD_DTS) ) { //Jeff 20020415
                    AUDIF_Set_CodingMode(AUDIF_CODING_MODE_DTSCD);//2004AUDDRV audif_set_coding_mode(AUDIF_CODING_MODE_DTSCD);
                    //AudioSetPause(); //test 20021018,terry,mark it,2004/2/9 06:26PM
                }
#endif
                
#ifdef SDRAM_16Mb_Mode//nono 20031213
                if(coding_mode_now&(AUDIF_CODING_MODE_AC3) )
                {
                    AUDIF_Reset_DSP();//2004AUDDRV DSPReset();
                    AUDIF_Set_Pause();//2004AUDDRV AudioSetPause(); //test 20021018
                    AUDIF_Set_Play();//2004AUDDRV AudioSetPlay(); //test 20021018
                }
#endif//SDRAM_16Mb_Mode

                AUDIF_Set_SPDIF(0);//2004AUDDRV AudioSetSPDIF(0); //S-PDIF off mode command to DSP(0:off)

#ifndef DIVIDE_AC3_DTS_SPDIF_OUTPUTS
			#ifdef DVD_SETUP_REENG
                //recover multi-spk config JSLin 20040827
                P=setup_getItemPos(STR_OS_DOWNMIX_SETUP);
                I=P&0xff;
                P=P>>8;
                if (setup_item[P][I][setup_VA[SETUP_VA_DOWNMIX]]==STR_OS_OFF) 
                {
                	P=setup_getItemPos(STR_OS_AUD_OUT);
                	I=P&0xff;
                	P=P>>8;	
                    if ( (setup_item[P][I][setup_VA[SETUP_VA_AUD_OUT]]==STR_OS_STEREO_PCM) && (AUDIF_CODING_MODE_DTSCD) )
                    {
                        //Force to do down-mix load when some decoders with multi-spk ability Jeff 20020415
                        AUDIF_Set_OutputMode(OUT_51DownmixL0R0, 0);//2004AUDDRV AudioSetOutputMode(7, 0); //Set Output mode(7:2 channel)
                    }
                } else { //Jeff 20020822
                    if ( coding_mode_now&(AUDIF_CODING_MODE_DTSCD) ) 
                    {
                        if (setup_item[P][I][setup_VA[SETUP_VA_DOWNMIX]]==STR_OS_LTRT_SETUP) {
                            AUDIF_Set_OutputMode(OUT_51DownmixLtRt, 0);//2004AUDDRV AudioSetOutputMode(0x08, 0); //Set Output mode(8:AC3 downmix Lt/Rt)
                        } else if (setup_item[P][I][setup_VA[SETUP_VA_DOWNMIX]]==STR_OS_STEREO) {
                            AUDIF_Set_OutputMode(OUT_51DownmixL0R0, 0);//2004AUDDRV AudioSetOutputMode(0x07, 0); //Set Output mode(7:AC3 downmix L0 R0)
                        } else if (setup_item[P][I][setup_VA[SETUP_VA_DOWNMIX]]==STR_OS_VSURROUND_SETUP) {
                            AUDIF_Set_OutputMode(OUT_51DownmixLsRs, 0);//2004AUDDRV AudioSetOutputMode(0x09, 0); //Set Output mode(9:2 channel, surround effect)
                        }
                    }
                }			
			#else
                //recover multi-spk config Jeff 20020415
                if (SETUP_SPK_DOWNMIX==AC3DOWNMIXOFF) 
                {
                    if ( (SETUP_SPDIF==SPDIFPCM) && (AUDIF_CODING_MODE_DTSCD) )
                    {
                        //Force to do down-mix load when some decoders with multi-spk ability Jeff 20020415
                        AUDIF_Set_OutputMode(OUT_51DownmixL0R0, 0);//2004AUDDRV AudioSetOutputMode(7, 0); //Set Output mode(7:2 channel)
                    }
                } else { //Jeff 20020822
                    if ( coding_mode_now&(AUDIF_CODING_MODE_DTSCD) ) 
                    {
                        if (SETUP_SPK_DOWNMIX==DOWNMIXLTRT) {
                            AUDIF_Set_OutputMode(OUT_51DownmixLtRt, 0);//2004AUDDRV AudioSetOutputMode(0x08, 0); //Set Output mode(8:AC3 downmix Lt/Rt)
                        } else if (SETUP_SPK_DOWNMIX==DOWNMIXSTEREO) 
                        {
                            AUDIF_Set_OutputMode(OUT_51DownmixL0R0, 0);//2004AUDDRV AudioSetOutputMode(0x07, 0); //Set Output mode(7:AC3 downmix L0 R0)
                        } else if (SETUP_SPK_DOWNMIX==DOWNMIXVSRND) {
                            AUDIF_Set_OutputMode(OUT_51DownmixLsRs, 0);//2004AUDDRV AudioSetOutputMode(0x09, 0); //Set Output mode(9:2 channel, surround effect)
                        }
                    }
                }
            #endif	//end of DVD_SETUP_REENG    
#endif//#ifndef DIVIDE_AC3_DTS_SPDIF_OUTPUTS

            }

#ifdef USE_MIC_ECHO_PARAM
            AUDIF_Set_EchoPara(echo_level);//2004AUDDRV AudioSetEchoPara(echo_level);
#else
            AUDIF_Set_Echo(echo_level, echo_level);//2004AUDDRV AudioSetEcho(echo_level, echo_level);
#endif

            AUDIF_Set_Key(audio_key+8);//2004AUDDRV AudioSetKey(audio_key+8);

#ifdef    MIC_2CHANNEL
            if(id==STR_OS_MIC_VOL_1)
            {
                //mic_volume=SETUP_MIC_VOL;//wangfeng 2003-09-12 22:01
                AUDIF_Set_MICVol(mic_volume);//2004AUDDRV AudioSetMICVol(mic_volume);
            }    
            else if(id==STR_OS_MIC_VOL_2)
            {
                //mic_volume=SETUP_MIC_VOL_2;
                AUDIF_Set_MICVol2(mic_volume);//2004AUDDRV AudioSetMICVol_2(mic_volume);
            }    
#else
            AUDIF_Set_MICVol(mic_volume);//2004AUDDRV AudioSetMICVol(mic_volume); //Jeff 20020619
#endif
        } else
#endif//#ifndef HIMAGE_CANADA_CUS
 
#ifndef DIVIDE_AC3_DTS_SPDIF_OUTPUTS
            if(sub_id==STR_OS_BITSTREAM)
            {
                if ( coding_mode_now&(AUDIF_CODING_MODE_AC3
                    |AUDIF_CODING_MODE_DTS
#ifdef DTS_CD_OUT_RAW_A
					|AUDIF_CODING_MODE_DTSCD
#endif                                                              
                    )
                    )
                {
                    //audif_set_SPDIF_BITSTREAM();
                    isSPDIFBitstream = 1;
                    AUDIF_Reset_DSP();//2004AUDDRV DSPReset();
                    AUDIF_Set_SPDIF(2);//2004AUDDRV AudioSetSPDIF(2);
                    
                    
                } else {
#if !defined(DTS_CD_OUT_RAW_A)//&& !defined(DIVIDE_AC3_DTS_SPDIF_OUTPUTS)
                    if ( (cd_type_loaded==CDDA) && (cd_subtype==CD_DTS) ) { //Jeff 20020415
                        //DTS-CD SPDIF/BITSTREAM mode, load CDDA as it is DSP decoder
                        printf("DTS-CD set to BITSTREAM mode,cd_subtype:%x\n",cd_subtype);
#if defined(DTS_SPDIF_NO_OUTPUT)//nono 4-8-23 23:42 for eastech
                        AUDIF_Set_CodingMode(AUDIF_CODING_MODE_DTSCD);//2004AUDDRV audif_set_coding_mode(AUDIF_CODING_MODE_DTSCD);
#else//#if defined(DTS_SPDIF_NO_OUTPUT)                        
                        AUDIF_Set_CodingMode(AUDIF_CODING_MODE_PCM);//2004AUDDRV audif_set_coding_mode(AUDIF_CODING_MODE_PCM);
#endif//#if defined(DTS_SPDIF_NO_OUTPUT)
                        AUDIF_Set_SPDIF(2);//2004AUDDRV AudioSetSPDIF(2); //S-PDIF bitstream mode command to DSP(2:DTS-CD BITSTREAM mode) //Jeff 20020417                        
                        AUDIF_Set_Volume(0);//2004AUDDRV AudioSetVolume(0);
                        printf("DTS-CD set to BITSTREAM mode,cd_subtype:%x\n",cd_subtype);
                    } else
#endif                    
                     {
                        //AudioSetSPDIF(1); //S-PDIF bitstream mode command to DSP(1:pcm)
                        AUDIF_Set_SPDIF(2);//2004AUDDRV AudioSetSPDIF(2); //ycwen : 2004/09/01 : we don't need to use AudioSetSPDIF command to distinguish CDDA and DTS-CD now!
                    }
                }
            
            } else
#endif//#ifndef DIVIDE_AC3_DTS_SPDIF_OUTPUTS

	#ifdef HIMAGE_CANADA_CUS
    if ( (sub_id==STR_OS_STEREO_PCM)||(sub_id==STR_OS_SIMULATE) )
	#else
    if((sub_id==STR_OS_STEREO_PCM))    
	#endif
	{
#ifndef DIVIDE_AC3_DTS_SPDIF_OUTPUTS

#ifdef FORCE_NO_DTS_OUTPUT//nono 4-5-5 13:31
                if ( coding_mode_now&( AUDIF_CODING_MODE_DTS
#ifdef DTS_CD_OUT_RAW_A
                   |AUDIF_CODING_MODE_DTSCD
#endif//#ifdef DTS_CD_OUT_RAW_A                                                     
                    )
                )
#else//#ifdef FORCE_NO_DTS_OUTPUT//nono 4-5-5 13:31
                if ( (cd_type_loaded==CDDA) && (cd_subtype==CD_DTS) ) 
#endif//#ifdef FORCE_NO_DTS_OUTPUT//nono 4-5-5 13:31
                { //Jeff 20020415
#ifndef NO_DTS_OUTPUT

    #ifdef DTS_CD_OUT_RAW_A
        AUDIF_Set_CodingMode(AUDIF_CODING_MODE_DTSCD);//2004AUDDRV audif_set_coding_mode(AUDIF_CODING_MODE_DTSCD);
    #else
        if (!check_chipinfo(2))
            AUDIF_Set_CodingMode(AUDIF_CODING_MODE_PCM);//2004AUDDRV audif_set_coding_mode(AUDIF_CODING_MODE_PCM);   // RAW
        else
			AUDIF_Set_CodingMode(AUDIF_CODING_MODE_DTSCD);//2004AUDDRV audif_set_coding_mode(AUDIF_CODING_MODE_DTSCD); // PCM
    #endif

    #ifdef DTS_CD_OUT_RAW_A//terry,2004/1/9 09:57AM
                                AUDIF_Set_SPDIF(1);//2004AUDDRV AudioSetSPDIF(1); //S-PDIF bitstream mode command to DSP(1:pcm)
    #else                            
                                AUDIF_Set_SPDIF(2);//2004AUDDRV AudioSetSPDIF(2); //S-PDIF bitstream mode command to DSP(2:DTS-CD pcm)
    #endif
#else//#ifndef NO_DTS_OUTPUT
                            //AudioSetSPDIF(2); //S-PDIF off mode command to DSP(0:off)
                            printf("setup cdda\n");
    #ifdef FORCE_NO_DTS_OUTPUT//nono 4-5-5 13:31
                                {
                                    //audif_set_SPDIF_BITSTREAM();
                                    isSPDIFBitstream = 1;
                                    AUDIF_Reset_DSP();//2004AUDDRV DSPReset();
                                    AUDIF_Set_SPDIF(2);//2004AUDDRV AudioSetSPDIF(2);
                                }
    
    #else//#ifdef FORCE_NO_DTS_OUTPUT//nono 4-5-5 13:31

        #if defined(DTS_SPDIF_NO_OUTPUT)//nono 4-8-23 23:42 for eastech
                                AUDIF_Set_CodingMode(AUDIF_CODING_MODE_DTSCD);//2004AUDDRV audif_set_coding_mode(AUDIF_CODING_MODE_DTSCD);
        #else//#if defined(DTS_SPDIF_NO_OUTPUT)                        
                                AUDIF_Set_CodingMode(AUDIF_CODING_MODE_PCM);//2004AUDDRV audif_set_coding_mode(AUDIF_CODING_MODE_PCM);
        #endif//#if defined(DTS_SPDIF_NO_OUTPUT)

                            AUDIF_Set_SPDIF(2);//2004AUDDRV AudioSetSPDIF(2); //S-PDIF bitstream mode command to DSP(2:DTS-CD BITSTREAM mode) //Jeff 20020417
                            AUDIF_Set_Volume(0);//2004AUDDRV AudioSetVolume(0);
    #endif//#ifdef FORCE_NO_DTS_OUTPUT//nono 4-5-5 13:31
#endif//NO_DTS_OUTPUT                            
                            //AudioSetPause(); //test 20021018,terry,2004/2/9 06:26PM,mark it
                        } 
                  else 
#endif//#ifndef DIVIDE_AC3_DTS_SPDIF_OUTPUTS      
                  {
                        #ifdef NO_DTS_OUTPUT
                        isSPDIFBitstream = 1;
                        AUDIF_Reset_DSP();//2004AUDDRV DSPReset();
                        #endif

				#ifdef DVD_SETUP_REENG
					P=setup_getItemPos(STR_OS_DOWNMIX_SETUP);
					I=P&0xff;
					P=P>>8;
                   	if (coding_mode_now == AUDIF_CODING_MODE_AC3)//nono  4-5-26 21:49
                        {
                             exe_setup_function(setup_item[P][I][1],
                                setup_item[P][I][setup_VA[SETUP_VA_DOWNMIX]],0);//nono 2003-8-26 0:50
                        }                            					
				#else
                    	if (coding_mode_now == AUDIF_CODING_MODE_AC3)//nono  4-5-26 21:49
                        {
                             exe_setup_function(setup_item[MULTISPKPAGE][AC3DOWNMIXITEM][1],
                                setup_item[MULTISPKPAGE][AC3DOWNMIXITEM][ SETUP_SPK_DOWNMIX ],0);//nono 2003-8-26 0:50
                        }                            
                #endif	//end of DVD_SETUP_REENG
                            
                        setup_SetAC3PCMConfig();//nono 2004-8-4 11:24    

                            #ifdef ONLY_SOUND_FIELD_KEY
                            if (GetCurrentFileType() == CDROM_WMA)  //nono 2004-03-20 20:43
                                AUDIF_Reset_DSP();//2004AUDDRV DSPReset(); 
                            #endif  //ONLY_SOUND_FIELD_KEY
                            AUDIF_Set_SPDIF(1);//2004AUDDRV AudioSetSPDIF(1); //S-PDIF bitstream mode command to DSP(1:pcm)
                    }
            
                } else {
                    //off
                    if (isSPDIFBitstream==1) {
                        isSPDIFBitstream=0;
                        AUDIF_Reset_DSP();//2004AUDDRV DSPReset();
                    } else {
                        AUDIF_Set_SPDIF(0);//2004AUDDRV AudioSetSPDIF(0); //S-PDIF off mode command to DSP(0:off)
                    }
                }
                set_aud_buf_size();
                if (full_scrn & SETUP)
                    setup_ShowVolCtrlConfig();

#ifndef SETUP_ALL_VALID        // alan, 2003/7/18 10:49

⌨️ 快捷键说明

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