www.pudn.com > sunplus-DVDsetup.rar > str_os_aud_out.inc, change:2004-06-28,size:23357b
#include "user_init.h"
#include "global.h"
#include "osd.h"
#include "audif.h"
void
str_os_aud_out(int sub_id)
{
audif_set_sample_rate(smp_rate_now); //we use 48K SPDIF/BITSTREAM output when play 96K voide, Jeff 20020718
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;
DSPReset();
}
else {
#ifndef DIVIDE_AC3_DTS_SPDIF_OUTPUTS
if ( (cd_type_loaded==CDDA) && (cd_subtype==CD_DTS) ) { //Jeff 20020415
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) )
{
DSPReset();
AudioSetPause(); //test 20021018
AudioSetPlay(); //test 20021018
}
#endif//SDRAM_16Mb_Mode
AudioSetSPDIF(0); //S-PDIF off mode command to DSP(0:off)
#ifndef DIVIDE_AC3_DTS_SPDIF_OUTPUTS
//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
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) {
AudioSetOutputMode(0x08, 0); //Set Output mode(8:AC3 downmix Lt/Rt)
} else if (SETUP_SPK_DOWNMIX==DOWNMIXSTEREO)
{
AudioSetOutputMode(0x07, 0); //Set Output mode(7:AC3 downmix L0 R0)
} else if (SETUP_SPK_DOWNMIX==DOWNMIXVSRND) {
AudioSetOutputMode(0x09, 0); //Set Output mode(9:2 channel, surround effect)
}
}
}
#endif//#ifndef DIVIDE_AC3_DTS_SPDIF_OUTPUTS
}
#ifdef USE_MIC_ECHO_PARAM
AudioSetEchoPara(echo_level);
#else
AudioSetEcho(echo_level, echo_level);
#endif
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
AudioSetMICVol(mic_volume);
}
else if(id==STR_OS_MIC_VOL_2)
{
//mic_volume=SETUP_MIC_VOL_2;
AudioSetMICVol_2(mic_volume);
}
#else
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;
DSPReset();
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's DSP decoder
printf("DTS-CD set to BITSTREAM mode,cd_subtype:%x\n",cd_subtype);
audif_set_coding_mode(AUDIF_CODING_MODE_PCM);
AudioSetSPDIF(2); //S-PDIF bitstream mode command to DSP(2:DTS-CD BITSTREAM mode) //Jeff 20020417
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)
}
}
} 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
/*if (isSPDIFBitstream==1) {
isSPDIFBitstream=0;
DSPReset();
} else*/
{
#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_coding_mode(AUDIF_CODING_MODE_DTSCD);
#else
if (!check_chipinfo(2))
audif_set_coding_mode(AUDIF_CODING_MODE_PCM); // RAW
else
audif_set_coding_mode(AUDIF_CODING_MODE_DTSCD); // PCM
#endif
#ifdef DTS_CD_OUT_RAW_A//terry,2004/1/9 09:57AM
AudioSetSPDIF(1); //S-PDIF bitstream mode command to DSP(1:pcm)
#else
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;
DSPReset();
AudioSetSPDIF(2);
}
#else//#ifdef FORCE_NO_DTS_OUTPUT//nono 4-5-5 13:31
audif_set_coding_mode(AUDIF_CODING_MODE_PCM);
AudioSetSPDIF(2); //S-PDIF bitstream mode command to DSP(2:DTS-CD BITSTREAM mode) //Jeff 20020417
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;
DSPReset();
#endif
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
}
#ifdef ONLY_SOUND_FIELD_KEY
if (GetCurrentFileType() == CDROM_WMA) //nono 2004-03-20 20:43
DSPReset();
#endif //ONLY_SOUND_FIELD_KEY
AudioSetSPDIF(1); //S-PDIF bitstream mode command to DSP(1:pcm)
/*
//Force to do down-mix load when some decoders with multi-spk ability Jeff 20020415
if (coding_mode_now&(AUDIF_CODING_MODE_AC3
#ifndef DIVIDE_AC3_DTS_SPDIF_OUTPUTS
|AUDIF_CODING_MODE_DTS|
AUDIF_CODING_MODE_DTSCD)
#endif//#ifndef DIVIDE_AC3_DTS_SPDIF_OUTPUTS
)
{
AudioSetOutputMode(7, 0); //Set Output mode(7:2 channel)
}
*/
}
}
} else {
//off
if (isSPDIFBitstream==1) {
isSPDIFBitstream=0;
DSPReset();
} else {
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¤W¤È
// if (cd_subtype!=CD_DTS) //wangap 2004/3/3
if (full_scrn & SETUP)
ShowSetupPage(2);
#endif
}
#ifdef DIVIDE_AC3_DTS_SPDIF_OUTPUTS
void
str_os_ac3_out(int sub_id)
{
audif_set_sample_rate(smp_rate_now); //we use 48K SPDIF/BITSTREAM output when play 96K voide, Jeff 20020718
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;
DSPReset();
}
#ifdef SDRAM_16Mb_Mode//nono 20031213
if(coding_mode_now&(AUDIF_CODING_MODE_AC3) )
{
DSPReset();
AudioSetPause(); //test 20021018
AudioSetPlay(); //test 20021018
}
#endif//SDRAM_16Mb_Mode
AudioSetSPDIF(0); //S-PDIF off mode command to DSP(0:off)
#ifdef USE_MIC_ECHO_PARAM
AudioSetEchoPara(echo_level);
#else
AudioSetEcho(echo_level, echo_level);
#endif
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
AudioSetMICVol(mic_volume);
}
else if(id==STR_OS_MIC_VOL_2)
{
//mic_volume=SETUP_MIC_VOL_2;
AudioSetMICVol_2(mic_volume);
}
#else
AudioSetMICVol(mic_volume); //Jeff 20020619
#endif
} else
#endif//#ifndef HIMAGE_CANADA_CUS
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;
DSPReset();
AudioSetSPDIF(2);
} else {
#ifndef DTS_CD_OUT_RAW_A
if ( (cd_type_loaded==CDDA) && (cd_subtype==CD_DTS) ) { //Jeff 20020415
//DTS-CD SPDIF/BITSTREAM mode, load CDDA as it's DSP decoder
printf("DTS-CD set to BITSTREAM mode,cd_subtype:%x\n",cd_subtype);
audif_set_coding_mode(AUDIF_CODING_MODE_PCM);
AudioSetSPDIF(2); //S-PDIF bitstream mode command to DSP(2:DTS-CD BITSTREAM mode) //Jeff 20020417
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)
}
}
} else
#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
/*if (isSPDIFBitstream==1) {
isSPDIFBitstream=0;
DSPReset();
} else*/
{
#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_coding_mode(AUDIF_CODING_MODE_DTSCD);
#else
if (!check_chipinfo(2))
audif_set_coding_mode(AUDIF_CODING_MODE_PCM); // RAW
else
audif_set_coding_mode(AUDIF_CODING_MODE_DTSCD); // PCM
#endif
#ifdef DTS_CD_OUT_RAW_A//terry,2004/1/9 09:57AM
AudioSetSPDIF(1); //S-PDIF bitstream mode command to DSP(1:pcm)
#else
AudioSetSPDIF(2); //S-PDIF bitstream mode command to DSP(2:DTS-CD pcm)
#endif
#else
//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;
DSPReset();
AudioSetSPDIF(2);
}
#else//#ifdef FORCE_NO_DTS_OUTPUT//nono 4-5-5 13:31
audif_set_coding_mode(AUDIF_CODING_MODE_PCM);
AudioSetSPDIF(2); //S-PDIF bitstream mode command to DSP(2:DTS-CD BITSTREAM mode) //Jeff 20020417
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 {
#ifdef NO_DTS_OUTPUT
isSPDIFBitstream = 1;
DSPReset();
#endif
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
}
#ifdef ONLY_SOUND_FIELD_KEY
if (GetCurrentFileType() == CDROM_WMA) //nono 2004-03-20 20:43
DSPReset();
#endif //ONLY_SOUND_FIELD_KEY
AudioSetSPDIF(1); //S-PDIF bitstream mode command to DSP(1:pcm)
/*
//Force to do down-mix load when some decoders with multi-spk ability Jeff 20020415
if (coding_mode_now&(AUDIF_CODING_MODE_AC3|
AUDIF_CODING_MODE_DTS|
AUDIF_CODING_MODE_DTSCD)
)
{
AudioSetOutputMode(7, 0); //Set Output mode(7:2 channel)
}
*/
}
}
} else {
//off
if (isSPDIFBitstream==1) {
isSPDIFBitstream=0;
DSPReset();
} else {
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¤W¤È
// if (cd_subtype!=CD_DTS) //wangap 2004/3/3
if (full_scrn & SETUP)
ShowSetupPage(2);
#endif
}
void
str_os_dts_out(int sub_id)
{
audif_set_sample_rate(smp_rate_now); //we use 48K SPDIF/BITSTREAM output when play 96K voide, Jeff 20020718
printf("setup audio out2\n");
#ifndef HIMAGE_CANADA_CUS
if(sub_id==STR_OS_SIMULATE)
{
printf("setup audio out,spdif off\n");
if (isSPDIFBitstream==1) {
isSPDIFBitstream=0;
DSPReset();
} else {
if ( (cd_type_loaded==CDDA) && (cd_subtype==CD_DTS) ) { //Jeff 20020415
audif_set_coding_mode(AUDIF_CODING_MODE_DTSCD);
//AudioSetPause(); //test 20021018,terry,mark it,2004/2/9 06:26PM
}
AudioSetSPDIF(0); //S-PDIF off mode command to DSP(0:off)
//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
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) {
AudioSetOutputMode(0x08, 0); //Set Output mode(8:AC3 downmix Lt/Rt)
} else if (SETUP_SPK_DOWNMIX==DOWNMIXSTEREO)
{
AudioSetOutputMode(0x07, 0); //Set Output mode(7:AC3 downmix L0 R0)
} else if (SETUP_SPK_DOWNMIX==DOWNMIXVSRND) {
AudioSetOutputMode(0x09, 0); //Set Output mode(9:2 channel, surround effect)
}
}
}
}
#ifdef USE_MIC_ECHO_PARAM
AudioSetEchoPara(echo_level);
#else
AudioSetEcho(echo_level, echo_level);
#endif
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
AudioSetMICVol(mic_volume);
}
else if(id==STR_OS_MIC_VOL_2)
{
//mic_volume=SETUP_MIC_VOL_2;
AudioSetMICVol_2(mic_volume);
}
#else
AudioSetMICVol(mic_volume); //Jeff 20020619
#endif
} else
#endif//#ifndef HIMAGE_CANADA_CUS
if(
(sub_id==STR_OS_BITSTREAM)
)
{
if (
AUDIF_CODING_MODE_DTS
#ifdef DTS_CD_OUT_RAW_A
|AUDIF_CODING_MODE_DTSCD
#endif
)
{
//audif_set_SPDIF_BITSTREAM();
isSPDIFBitstream = 1;
DSPReset();
AudioSetSPDIF(2);
} else {
#ifndef DTS_CD_OUT_RAW_A
if ( (cd_type_loaded==CDDA) && (cd_subtype==CD_DTS) ) { //Jeff 20020415
//DTS-CD SPDIF/BITSTREAM mode, load CDDA as it's DSP decoder
printf("DTS-CD set to BITSTREAM mode,cd_subtype:%x\n",cd_subtype);
audif_set_coding_mode(AUDIF_CODING_MODE_PCM);
AudioSetSPDIF(2); //S-PDIF bitstream mode command to DSP(2:DTS-CD BITSTREAM mode) //Jeff 20020417
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)
}
}
}
else {
//off
if (isSPDIFBitstream==1) {
isSPDIFBitstream=0;
DSPReset();
} else {
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¤W¤È
// if (cd_subtype!=CD_DTS) //wangap 2004/3/3
if (full_scrn & SETUP)
ShowSetupPage(2);
#endif
}
#endif//#ifdef DIVIDE_AC3_DTS_SPDIF_OUTPUTS