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

📄 sound.c

📁 Sunplus 8202S source code.
💻 C
字号:
/*****************************************************\
Creater: Terry
Date   : 2001/5/11 12:49PM
Description: Setup menu using 
\*****************************************************/

#include "global.h"
#include "func.h"
#include "ircmd.h"
#include "memmap.h"
#include "dsp3_if.h"
#include "auddrv.h" //2004AUDDRV oliver 20041012 for using audio driver purpose
#include "stdlib.h"

#include "osd.h"
#include "osdsup.h"
#include "cchar.h"

#ifdef DVD_SETUP_REENG
#include "setup_VA.h"
#else
#include "setup_page.h"
#endif

#include "audcodec.h"
//#define MONE_sound
#ifdef OSD_BMP_SOUND
#include "osd_BmpUI.h"
#endif

#define DISP_R                  0
#define SURROUND_R              2
#ifdef OSD_BMP_SOUND
#define EQ_R			4
#define BAND_R		4
#else
#define EQ_R                    3
#define BAND_R                  3
#endif
#define BAND_NO                 5	

void SettingEqLevel(BYTE *);
void SettingEQType(BYTE type);
void EQ_init(void);
void sound_draw_title(BYTE ,BYTE , BYTE);
void sound_draw_tab(void);

void sound_func_set_EQ(BYTE EQitem);//nono 4-7-22 18:10
void sound_set_EQ_again(void);//nono 4-7-22 18:10
#ifdef OSD_BMP_SOUND
#define SRND_PAGE	0
#define EQ_PAGE	1
#define BAND_PAGE	2
#define KEY_PAGE	3
#define ITEM_NUM	6
void ShowBmpSoundPage(void);
void sound_bmp_draw_tab(void);
void sound_bmp_draw_item_cursor(void);

void sound_bmp_func_right(void);
void sound_bmp_func_left(void);
void sound_bmp_func_up(void);
void sound_bmp_func_down(void);
void sound_bmp_func_select(void);

void OSD_LayoutSoundRegionA(void);
void OSD_LayoutSoundRegionB(void);
void OSD_LayoutSoundRegionD(void);
void OSD_LayoutSoundRegionE(void);
void OSD_LayoutSoundRegionF(void);
void show_bmp_band(void);
void EQ_bmp_init(void);
void sound_bmp_draw_key(UINT8 up_down, UINT8 refresh);


const OSD_REGIONA_LAYOUT_S g_aOsdSoundRegionA =
{
	//sound 3d osd
	OSD_BG_BMP_A,//Bg bmp,
	SOUND_LINE1_A, //Line Left,
	OSD_DOWN_BG_BMP_A, //Down Bg bmp,
	SOUND_LINE2_A, // Line Right,
	SOUND_SHADOW_A, // Shadow rect
};    

const OSD_REGIONB_LAYOUT_S g_aOsdSoundRegionB = 
{
	SOUND_RECT_BG_B,
	SOUND_BG_LINE_B,//Bg Line    
	SOUND_LINE1_B, //Line Left
	SOUND_DOWN_B, //Down bg
	OSD_CURSOR_1_BMP_B,//Curosr 1
	SOUND_SEL_STR_B, //selected string
	SOUND_UNSEL_STR_B, //unselected string
	SOUND_LINE2_B, //right line
	SOUND_SHADOW_B,//shadow
};

const OSD_REGIOND_LAYOUT_S g_aOsdSoundRegionD = 
{
	OSD_4_1_BMP_D,//Left bg
	OSD_4_2_BMP_D,//Middle bg   
	SOUND_LINE1_D, //Line left
	SOUND_DOWN_D, //Down bg rect
	OSD_CURSOR_2_BMP_D,//Curosr 2
	SOUND_LINE2_D, //right line
	SOUND_SHADOW_D,//shadow
	OSD_4_3_BMP_D,//RightBg
};

const OSD_REGIONE_LAYOUT_S g_aOsdSoundRegionE= 
{
	OSD_5_1_BMP_E,	//left bg
	SOUND_BG_RECT_E4,    //middle bg
	OSD_5_3_BMP_E,	//right bg
};

const OSD_REGIONF_LAYOUT_S g_aOsdSoundRegionF = 
{
	OSD_6_1_BMP_F,
	OSD_6_2_BMP_F,
	OSD_6_3_BMP_F,
};
#endif

#ifdef PROLOGICII_3D_MUTEX
BYTE soundGetSurroundType(void);
BYTE soundGetEQType(void);
BYTE soundGetEQType(void);
#endif//PROLOGICII_3D_MUTEX

#ifdef DYNAMIC_SPECTRUM 
void Show3dspectrum(void);  //fengjl 3-10-30 14:58
void ClearShowSpectrum(void);
extern void SetEQ(void);
#endif

#define MAX_PAGE_ITEM   4
#define MAX_ITEM_SEL    11
#define MIN_ITEM_SEL    2
#define MAX_BAND        7

#ifdef SEVEN_OPTIONS_IN_EQ
#define MAX_MUSIC       7
#else
#define MAX_MUSIC       5
#endif

extern void InitSW_region(void);
extern void osd_print_eq_setting(UINT8 r,UINT8 unSele);
extern void osd_print_eq(UINT8 r,BYTE *p);
#ifndef OSD_BMP
extern void osd_DrawRegionString(BYTE xStart, BYTE yStart, BYTE *str, BYTE fontColor, BYTE bkColor, BYTE r);
#endif
extern void osd_DrawRegionLine(UINT32 xStart, UINT32 yStart, UINT32 xEnd, UINT32 yEnd, BYTE color, BYTE lineWidth, BYTE r);
extern void osd_draw_region_rect(UINT32 xStart, UINT32 yStart, UINT32 xLen, UINT32 yLen, BYTE bkColor, BYTE r);
extern void osd_draw_sound_button(BYTE xStart, BYTE yStart, BYTE xLen, BYTE color, BYTE bDown);

extern int IsOSDChinese();
extern UINT8 setup_sel[7][8];

extern void run_save_romChk_cmd(void);
extern void run_save_unChk_cmd(void);
//extern int CheckDspCtrlRdy();
//extern void osd_restore();
extern void run_save_sel_cmd(BYTE, BYTE);

extern void setup_eq_display(UINT8 val);
/***********   Item description  **********************\

  BYTE	function
  0		mode(MSB 4bits)  ==>show direction picture	
		0x0:no effect
		0x1:basic select function		
		0x2:can enter number					
		0x3:need run function by osd id			
		
		  1		title 		---sw region 1
		  2~6		select item	---sw region 2
		  
\******************************************************/
enum
{
    SET_NE=0,
    SET_BS=0x1,
    SET_FUNC=0x2,
    SET_CHART=0x3,
    SET_SCALE=0x4
};

#ifdef SUPPORT_3DSOUND	

UINT8 sound_sel[MAX_PAGE_ITEM]={2, 2, 0,6};//Item number

const UINT8 sound_item[MAX_PAGE_ITEM][MAX_ITEM_SEL]=
{
    {SET_BS,STR_OS_SURR,STR_OS_OFF,STR_OS_CONCERT,STR_OS_CHURCH,STR_OS_PASSIVE,STR_OS_WIDE, STR_OS_LIVE,0,0,0},		
#ifdef BBK_DVD
	{SET_FUNC,STR_OS_EQ,STR_OS_STANDARD,STR_OS_CLASSIC,STR_OS_ROCK,STR_OS_JAZZ,STR_OS_POP, STR_OS_ELECTRON,STR_OS_LIGHT_MUSIC,0,0},
#else
    {SET_FUNC,STR_OS_EQ,STR_OS_STANDARD,STR_OS_CLASSIC,STR_OS_ROCK,STR_OS_JAZZ,STR_OS_POP, STR_OS_USER,0,0,0},
#endif//end  BBK_DVD
    {SET_CHART,STR_OS_BAND,0,0,0,0,0,0,0,0,0},
#ifndef SOUND_NO_KEYPAGE     //wanghaoying 2003-9-10 10:59
    {SET_SCALE,STR_OS_KEY,0,0,0,0,0,0,0,0,0}
#endif
};


const UINT8 music_osd_set[MAX_MUSIC][MAX_BAND]=
{
    //These EQ setting is from WinAmp
    //   0 1 2 3 4 5 6 7
    {13,13,13,13,13,13,13},//standard
    //{23,18,7,5,7,18,23},//classic
    {13,13,13,13,13,10,3},//classic
    //{23,18,7,2,7,18,23},//rock
    //{21,21,15,13,11,13,23},//rock //WinAmp
    {21,21,15,11,7,11,23},//rock
    //{3,7,18,23,18,7,3},//jazz
    //{21,19,16,13,18,13,23},//jazz //WinAmp
    {21,19,16,9,18,9,23},//jazz
    //{18,23,18,16,7,15,18},//pop
    //{15,19,11,13,19,15,13},//pop //WinAmp
    {15,21,7,13,21,15,11},//pop
#ifdef SEVEN_OPTIONS_IN_EQ
    {14,13,12,13,15,17,19},// electric //johnwu
    {17,14,10,13,17,19,19},// soft		//johnwu
#endif //SEVEN_OPTIONS_IN_EQ axel 2004/2/17 09:52AM    
};

UINT8 user_osd_set[MAX_BAND]={13,13,13,13,13,13,13};

#define SW_REGION1	0x10
#define SW_REGION2	0x20
#define SW_REGION3	0x30
#define SW_REGION_ANTI 	0x20
#define SW_REGION_OFF	0x10

UINT8 id,sel;
BYTE page=0,sound_level=1;	// 0:tab       1:item selection        2:EQ adjustment

#ifdef REMB_3DSOUND       //define it to remember 3D Sound yanlb 2004/07/06
#define Addr_REMB_3D 0xD0
#define SAVE_NUM 2


void run_sound_save(BYTE *p)
{
    #ifdef MONE_sound 
    UINT8 i;
    for (i=0;i<SAVE_NUM;i++)
       printf("run_sound_save:sound_save:%2d,,,,,,,,,,,\n",*(p+i));
    #endif
 
    
	//save surround&eq page,but not user setup
    WriteToI2c(0xa0,Addr_REMB_3D,  p, SAVE_NUM);
	
    #ifdef GBM_DVD
    if(1)  //modified by wangwei,2004-9-17 16:04(save 3Dsound EQ user setting whenever)
    #else
    if(p[1]==MAX_MUSIC+2)  //save user set  
    #endif
    {
		p=(UINT8 *)user_osd_set;
		WriteToI2c(0xa0,Addr_REMB_3D+SAVE_NUM,  p, MAX_BAND);

		#ifdef MONE_sound
		ReadFromI2c(0xa0,Addr_REMB_3D+SAVE_NUM, p, MAX_BAND);
   		for (i=0;i<MAX_MUSIC;i++)
           	printf("run_sound_save-user_osd_set:%2d,,,,,,,,,,,\n",(p+i));
        #endif
	}
}

//parameter: save_3d--user set sound;band_set--user_osd_set
//return 
int load_3Dsound(UINT8 *save_3d,UINT8 *band_set)
{
    #ifdef MONE_sound
        printf("load 3Dsound,in\n");
    #endif
    int iResult=-1;
    UINT8 *p;
    p=(BYTE *)save_3d;
	
    //load surround&eq page,but not user setup
    iResult=ReadFromI2c(0xa0,Addr_REMB_3D, p, SAVE_NUM);
	#ifdef MONE_sound 
	UINT8 i;
	for (i=0;i<SAVE_NUM;i++)
           printf("load_3Dsound-sound_saved:%2d\n",save_3d[i]);
    #endif
    if (iResult==-1)
    {
    	#ifdef MONE_sound
    	    printf("load_3Dsound-ReadFromI2c fail!!\n");
    	#endif
	    return iResult;
    }
    
    #ifdef GBM_DVD
    if(1)  //modified by wangwei,2004-9-17 16:04(load 3Dsound EQ user setting whenever)
    #else
    if(save_3d[1]==MAX_MUSIC+2)  //load user setup
    #endif
    {
    	p=(UINT8 *)band_set;
    	iResult=ReadFromI2c(0xa0,Addr_REMB_3D+SAVE_NUM, p, MAX_BAND);
    }
    #ifdef MONE_sound 
	for (i=0;i<MAX_BAND;i++)
           printf("load_3Dsound-sound_saved:%2d\n",band_set[i]);
    #endif
    if (iResult==-1)
    {
    	#ifdef MONE_sound
    	    printf("load_user set-ReadFromI2c fail!!\n");
    	#endif
	    return iResult;
    }
    	return iResult=1;
}

void exe_3Dsound(UINT8 *sound_save,UINT8 *user_osd_set)
{
	    if (sound_save[0]>2){
		    AUDIF_Set_Surround(sound_save[0]-2);//2004AUDDRV AudioSetSurround(sound_save[0]-2);
		    AUDIF_Set_EQType(0);//2004AUDDRV AudioSetEQType(0);
		#ifdef MONE_sound
    	    printf("  1===============Load 3Dsound Surround!===============\n");
    	#endif 
        }
    	else if((sound_save[1]>2)&&(sound_save[1]<MAX_MUSIC+2)){
		    AUDIF_Set_EQType(sound_save[1]-2);//AudioSetEQType(sound_save[1]-2);
			AUDIF_Set_Surround(0);//2004AUDDRV AudioSetSurround(0);
		    #ifdef MONE_sound
    			printf("  2==============Load 3Dsound EQ!===============\n");
    		#endif 
	    }
    	else {
    		SettingEqLevel(user_osd_set);
    		SettingEqLevel(user_osd_set); //for cover err
    		AUDIF_Set_Surround(0);//2004AUDDRV AudioSetSurround(0);
		    #ifdef MONE_sound
    			printf("  3==============Load 3Dsound BAND!===============\n");
    		#endif 
    	}
}
#endif    //#ifdef  REMB_3DSOUND  yanlb 2004/07/07

void sound_init(void)
{
	// initialize page and sound_level, in order to dsiplay correctly next time ShowSoundPage
    page=0;	
    sound_level=0;	
    sound_sel[3]=(UINT8)(6-audio_key);

    OSD1000ISP_STATUS((page<<6)|(sound_level<<4)|(sound_sel[page]&0x0f), OSDIR_3D);
}

#ifdef SOUND_NO_KEYPAGE     //wanghaoying 2003-9-10 11:00
void sound_init_2(void)
{
	// initialize page and sound_level, in order to dsiplay correctly next time ShowSoundPage
    page=1;	
    sound_level=0;	
    sound_sel[3]=(UINT8)(6-audio_key);
    
}
#endif

void show_band(void)
{
    char str[6];
    memcpyS(&RegionValStr[BAND_R], user_osd_set, MAX_BAND);
    osd_print_eq_setting(BAND_R, index_x*2);
	
    if ((index_y-13)<-9)
        psprintf(str,"%d DB", (index_y-13));
    else if ((index_y-13)<0)
        psprintf(str,"%d DB ", (index_y-13));		
    else if ((index_y-13)>9)
        psprintf(str," %d DB", (index_y-13));
    else
        psprintf(str," %d DB ", (index_y-13));
		
    osd_DrawRegionString(80,6,str,7,11,3);
}



#define SBLACKCOLOR             11
#define SWHITECOLOR             2
#ifdef SETUP_COLOR_TYPE2           //3-10-16 8:37张宇P

#ifdef NINTAUS_DVD
#define SDISABLECOLOR	        14//0
#else//#ifdef NINTAUS_DVD
#define SDISABLECOLOR	        0
#endif//#ifdef NINTAUS_DVD

#else
#define SDISABLECOLOR	        1
#endif
#define SBGCOLOR	        6
#define SANTIBGCOLOR            5

#define BUTTON_UP	        0
#define BUTTON_DOWN	        1


void sound_draw_key(UINT8 up_down, UINT8 refresh)
{
    BYTE buf[15];
    BYTE fnColor, bgColor;
	
    if (up_down) {
        fnColor=SWHITECOLOR;
        bgColor=SANTIBGCOLOR;		
    } else {
        fnColor=SBLACKCOLOR;
        bgColor=SBGCOLOR;		
    }
	
    if (refresh) {
		osd_draw_region_rect(140, 14, 180, 194, bgColor,EQ_R);
		osd_draw_button_outline(140,14,320,208,up_down,0x0f,EQ_R);
		psprintf(buf, " -    %s", Ch_ukey);
		osd_DrawRegionString(9, 6, buf, fnColor, bgColor, EQ_R);	
		psprintf(buf, " -    - +4");
		osd_DrawRegionString(9, 12, buf, fnColor, bgColor, EQ_R);	
		buf[9]='2';//psprintf(buf, " -    - +2");
		osd_DrawRegionString(9, 18, buf, fnColor, bgColor, EQ_R);	
		psprintf(buf, " -    -  0");
		osd_DrawRegionString(9, 24, buf, fnColor, bgColor, EQ_R);	
		psprintf(buf, " -    - -2");
		osd_DrawRegionString(9, 30, buf, fnColor, bgColor, EQ_R);	
		buf[9]='4';//psprintf(buf, " -    - -4");
		osd_DrawRegionString(9, 36, buf, fnColor, bgColor, EQ_R);	
		psprintf(buf, " -    %s", Ch_dkey);
		osd_DrawRegionString(9, 42, buf, fnColor, bgColor, EQ_R);
    } else {
		UINT32 y=35+sound_sel[page]*12;
		//osd_draw_region_rect(188, y-18, 40, 48, bgColor,EQ_R);
		osd_draw_region_rect(188, y-14, 40, 40, bgColor,EQ_R);	// alan, 2003/10/21 10:41

⌨️ 快捷键说明

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