sound.c
上传用户:caisangzi8
上传日期:2013-10-25
资源大小:15756k
文件大小:59k
源码类别:

DVD

开发平台:

C/C++

  1. /*****************************************************
  2. Creater: Terry
  3. Date   : 2001/5/11 12:49PM
  4. Description: Setup menu using 
  5. *****************************************************/
  6. #include "global.h"
  7. #include "func.h"
  8. #include "ircmd.h"
  9. #include "memmap.h"
  10. #include "dsp3_if.h"
  11. #include "auddrv.h" //2004AUDDRV oliver 20041012 for using audio driver purpose
  12. #include "stdlib.h"
  13. #include "osd.h"
  14. #include "osdsup.h"
  15. #include "cchar.h"
  16. #ifdef DVD_SETUP_REENG
  17. #include "setup_VA.h"
  18. #else
  19. #include "setup_page.h"
  20. #endif
  21. #include "audcodec.h"
  22. //#define MONE_sound
  23. #ifdef OSD_BMP_SOUND
  24. #include "osd_BmpUI.h"
  25. #endif
  26. #define DISP_R                  0
  27. #define SURROUND_R              2
  28. #ifdef OSD_BMP_SOUND
  29. #define EQ_R 4
  30. #define BAND_R 4
  31. #else
  32. #define EQ_R                    3
  33. #define BAND_R                  3
  34. #endif
  35. #define BAND_NO                 5
  36. void SettingEqLevel(BYTE *);
  37. void SettingEQType(BYTE type);
  38. void EQ_init(void);
  39. void sound_draw_title(BYTE ,BYTE , BYTE);
  40. void sound_draw_tab(void);
  41. void sound_func_set_EQ(BYTE EQitem);//nono 4-7-22 18:10
  42. void sound_set_EQ_again(void);//nono 4-7-22 18:10
  43. #ifdef OSD_BMP_SOUND
  44. #define SRND_PAGE 0
  45. #define EQ_PAGE 1
  46. #define BAND_PAGE 2
  47. #define KEY_PAGE 3
  48. #define ITEM_NUM 6
  49. void ShowBmpSoundPage(void);
  50. void sound_bmp_draw_tab(void);
  51. void sound_bmp_draw_item_cursor(void);
  52. void sound_bmp_func_right(void);
  53. void sound_bmp_func_left(void);
  54. void sound_bmp_func_up(void);
  55. void sound_bmp_func_down(void);
  56. void sound_bmp_func_select(void);
  57. void OSD_LayoutSoundRegionA(void);
  58. void OSD_LayoutSoundRegionB(void);
  59. void OSD_LayoutSoundRegionD(void);
  60. void OSD_LayoutSoundRegionE(void);
  61. void OSD_LayoutSoundRegionF(void);
  62. void show_bmp_band(void);
  63. void EQ_bmp_init(void);
  64. void sound_bmp_draw_key(UINT8 up_down, UINT8 refresh);
  65. const OSD_REGIONA_LAYOUT_S g_aOsdSoundRegionA =
  66. {
  67. //sound 3d osd
  68. OSD_BG_BMP_A,//Bg bmp,
  69. SOUND_LINE1_A, //Line Left,
  70. OSD_DOWN_BG_BMP_A, //Down Bg bmp,
  71. SOUND_LINE2_A, // Line Right,
  72. SOUND_SHADOW_A, // Shadow rect
  73. };    
  74. const OSD_REGIONB_LAYOUT_S g_aOsdSoundRegionB = 
  75. {
  76. SOUND_RECT_BG_B,
  77. SOUND_BG_LINE_B,//Bg Line    
  78. SOUND_LINE1_B, //Line Left
  79. SOUND_DOWN_B, //Down bg
  80. OSD_CURSOR_1_BMP_B,//Curosr 1
  81. SOUND_SEL_STR_B, //selected string
  82. SOUND_UNSEL_STR_B, //unselected string
  83. SOUND_LINE2_B, //right line
  84. SOUND_SHADOW_B,//shadow
  85. };
  86. const OSD_REGIOND_LAYOUT_S g_aOsdSoundRegionD = 
  87. {
  88. OSD_4_1_BMP_D,//Left bg
  89. OSD_4_2_BMP_D,//Middle bg   
  90. SOUND_LINE1_D, //Line left
  91. SOUND_DOWN_D, //Down bg rect
  92. OSD_CURSOR_2_BMP_D,//Curosr 2
  93. SOUND_LINE2_D, //right line
  94. SOUND_SHADOW_D,//shadow
  95. OSD_4_3_BMP_D,//RightBg
  96. };
  97. const OSD_REGIONE_LAYOUT_S g_aOsdSoundRegionE= 
  98. {
  99. OSD_5_1_BMP_E, //left bg
  100. SOUND_BG_RECT_E4,    //middle bg
  101. OSD_5_3_BMP_E, //right bg
  102. };
  103. const OSD_REGIONF_LAYOUT_S g_aOsdSoundRegionF = 
  104. {
  105. OSD_6_1_BMP_F,
  106. OSD_6_2_BMP_F,
  107. OSD_6_3_BMP_F,
  108. };
  109. #endif
  110. #ifdef PROLOGICII_3D_MUTEX
  111. BYTE soundGetSurroundType(void);
  112. BYTE soundGetEQType(void);
  113. BYTE soundGetEQType(void);
  114. #endif//PROLOGICII_3D_MUTEX
  115. #ifdef DYNAMIC_SPECTRUM 
  116. void Show3dspectrum(void);  //fengjl 3-10-30 14:58
  117. void ClearShowSpectrum(void);
  118. extern void SetEQ(void);
  119. #endif
  120. #define MAX_PAGE_ITEM   4
  121. #define MAX_ITEM_SEL    11
  122. #define MIN_ITEM_SEL    2
  123. #define MAX_BAND        7
  124. #ifdef SEVEN_OPTIONS_IN_EQ
  125. #define MAX_MUSIC       7
  126. #else
  127. #define MAX_MUSIC       5
  128. #endif
  129. extern void InitSW_region(void);
  130. extern void osd_print_eq_setting(UINT8 r,UINT8 unSele);
  131. extern void osd_print_eq(UINT8 r,BYTE *p);
  132. #ifndef OSD_BMP
  133. extern void osd_DrawRegionString(BYTE xStart, BYTE yStart, BYTE *str, BYTE fontColor, BYTE bkColor, BYTE r);
  134. #endif
  135. extern void osd_DrawRegionLine(UINT32 xStart, UINT32 yStart, UINT32 xEnd, UINT32 yEnd, BYTE color, BYTE lineWidth, BYTE r);
  136. extern void osd_draw_region_rect(UINT32 xStart, UINT32 yStart, UINT32 xLen, UINT32 yLen, BYTE bkColor, BYTE r);
  137. extern void osd_draw_sound_button(BYTE xStart, BYTE yStart, BYTE xLen, BYTE color, BYTE bDown);
  138. extern int IsOSDChinese();
  139. extern UINT8 setup_sel[7][8];
  140. extern void run_save_romChk_cmd(void);
  141. extern void run_save_unChk_cmd(void);
  142. //extern int CheckDspCtrlRdy();
  143. //extern void osd_restore();
  144. extern void run_save_sel_cmd(BYTE, BYTE);
  145. extern void setup_eq_display(UINT8 val);
  146. /***********   Item description  **********************
  147.   BYTE function
  148.   0 mode(MSB 4bits)  ==>show direction picture
  149. 0x0:no effect
  150. 0x1:basic select function
  151. 0x2:can enter number
  152. 0x3:need run function by osd id
  153.   1 title  ---sw region 1
  154.   2~6 select item ---sw region 2
  155.   
  156. ******************************************************/
  157. enum
  158. {
  159.     SET_NE=0,
  160.     SET_BS=0x1,
  161.     SET_FUNC=0x2,
  162.     SET_CHART=0x3,
  163.     SET_SCALE=0x4
  164. };
  165. #ifdef SUPPORT_3DSOUND
  166. UINT8 sound_sel[MAX_PAGE_ITEM]={2, 2, 0,6};//Item number
  167. const UINT8 sound_item[MAX_PAGE_ITEM][MAX_ITEM_SEL]=
  168. {
  169.     {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},
  170. #ifdef BBK_DVD
  171. {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},
  172. #else
  173.     {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},
  174. #endif//end  BBK_DVD
  175.     {SET_CHART,STR_OS_BAND,0,0,0,0,0,0,0,0,0},
  176. #ifndef SOUND_NO_KEYPAGE     //wanghaoying 2003-9-10 10:59
  177.     {SET_SCALE,STR_OS_KEY,0,0,0,0,0,0,0,0,0}
  178. #endif
  179. };
  180. const UINT8 music_osd_set[MAX_MUSIC][MAX_BAND]=
  181. {
  182.     //These EQ setting is from WinAmp
  183.     //   0 1 2 3 4 5 6 7
  184.     {13,13,13,13,13,13,13},//standard
  185.     //{23,18,7,5,7,18,23},//classic
  186.     {13,13,13,13,13,10,3},//classic
  187.     //{23,18,7,2,7,18,23},//rock
  188.     //{21,21,15,13,11,13,23},//rock //WinAmp
  189.     {21,21,15,11,7,11,23},//rock
  190.     //{3,7,18,23,18,7,3},//jazz
  191.     //{21,19,16,13,18,13,23},//jazz //WinAmp
  192.     {21,19,16,9,18,9,23},//jazz
  193.     //{18,23,18,16,7,15,18},//pop
  194.     //{15,19,11,13,19,15,13},//pop //WinAmp
  195.     {15,21,7,13,21,15,11},//pop
  196. #ifdef SEVEN_OPTIONS_IN_EQ
  197.     {14,13,12,13,15,17,19},// electric //johnwu
  198.     {17,14,10,13,17,19,19},// soft //johnwu
  199. #endif //SEVEN_OPTIONS_IN_EQ axel 2004/2/17 09:52AM    
  200. };
  201. UINT8 user_osd_set[MAX_BAND]={13,13,13,13,13,13,13};
  202. #define SW_REGION1 0x10
  203. #define SW_REGION2 0x20
  204. #define SW_REGION3 0x30
  205. #define SW_REGION_ANTI  0x20
  206. #define SW_REGION_OFF 0x10
  207. UINT8 id,sel;
  208. BYTE page=0,sound_level=1; // 0:tab       1:item selection        2:EQ adjustment
  209. #ifdef REMB_3DSOUND       //define it to remember 3D Sound yanlb 2004/07/06
  210. #define Addr_REMB_3D 0xD0
  211. #define SAVE_NUM 2
  212. void run_sound_save(BYTE *p)
  213. {
  214.     #ifdef MONE_sound 
  215.     UINT8 i;
  216.     for (i=0;i<SAVE_NUM;i++)
  217.        printf("run_sound_save:sound_save:%2d,,,,,,,,,,,n",*(p+i));
  218.     #endif
  219.  
  220.     
  221. //save surround&eq page,but not user setup
  222.     WriteToI2c(0xa0,Addr_REMB_3D,  p, SAVE_NUM);
  223.     #ifdef GBM_DVD
  224.     if(1)  //modified by wangwei,2004-9-17 16:04(save 3Dsound EQ user setting whenever)
  225.     #else
  226.     if(p[1]==MAX_MUSIC+2)  //save user set  
  227.     #endif
  228.     {
  229. p=(UINT8 *)user_osd_set;
  230. WriteToI2c(0xa0,Addr_REMB_3D+SAVE_NUM,  p, MAX_BAND);
  231. #ifdef MONE_sound
  232. ReadFromI2c(0xa0,Addr_REMB_3D+SAVE_NUM, p, MAX_BAND);
  233.     for (i=0;i<MAX_MUSIC;i++)
  234.             printf("run_sound_save-user_osd_set:%2d,,,,,,,,,,,n",(p+i));
  235.         #endif
  236. }
  237. }
  238. //parameter: save_3d--user set sound;band_set--user_osd_set
  239. //return 
  240. int load_3Dsound(UINT8 *save_3d,UINT8 *band_set)
  241. {
  242.     #ifdef MONE_sound
  243.         printf("load 3Dsound,inn");
  244.     #endif
  245.     int iResult=-1;
  246.     UINT8 *p;
  247.     p=(BYTE *)save_3d;
  248.     //load surround&eq page,but not user setup
  249.     iResult=ReadFromI2c(0xa0,Addr_REMB_3D, p, SAVE_NUM);
  250. #ifdef MONE_sound 
  251. UINT8 i;
  252. for (i=0;i<SAVE_NUM;i++)
  253.            printf("load_3Dsound-sound_saved:%2dn",save_3d[i]);
  254.     #endif
  255.     if (iResult==-1)
  256.     {
  257.      #ifdef MONE_sound
  258.          printf("load_3Dsound-ReadFromI2c fail!!n");
  259.      #endif
  260.     return iResult;
  261.     }
  262.     
  263.     #ifdef GBM_DVD
  264.     if(1)  //modified by wangwei,2004-9-17 16:04(load 3Dsound EQ user setting whenever)
  265.     #else
  266.     if(save_3d[1]==MAX_MUSIC+2)  //load user setup
  267.     #endif
  268.     {
  269.      p=(UINT8 *)band_set;
  270.      iResult=ReadFromI2c(0xa0,Addr_REMB_3D+SAVE_NUM, p, MAX_BAND);
  271.     }
  272.     #ifdef MONE_sound 
  273. for (i=0;i<MAX_BAND;i++)
  274.            printf("load_3Dsound-sound_saved:%2dn",band_set[i]);
  275.     #endif
  276.     if (iResult==-1)
  277.     {
  278.      #ifdef MONE_sound
  279.          printf("load_user set-ReadFromI2c fail!!n");
  280.      #endif
  281.     return iResult;
  282.     }
  283.      return iResult=1;
  284. }
  285. void exe_3Dsound(UINT8 *sound_save,UINT8 *user_osd_set)
  286. {
  287.     if (sound_save[0]>2){
  288.     AUDIF_Set_Surround(sound_save[0]-2);//2004AUDDRV AudioSetSurround(sound_save[0]-2);
  289.     AUDIF_Set_EQType(0);//2004AUDDRV AudioSetEQType(0);
  290. #ifdef MONE_sound
  291.          printf("  1===============Load 3Dsound Surround!===============n");
  292.      #endif 
  293.         }
  294.      else if((sound_save[1]>2)&&(sound_save[1]<MAX_MUSIC+2)){
  295.     AUDIF_Set_EQType(sound_save[1]-2);//AudioSetEQType(sound_save[1]-2);
  296. AUDIF_Set_Surround(0);//2004AUDDRV AudioSetSurround(0);
  297.     #ifdef MONE_sound
  298.      printf("  2==============Load 3Dsound EQ!===============n");
  299.      #endif 
  300.     }
  301.      else {
  302.      SettingEqLevel(user_osd_set);
  303.      SettingEqLevel(user_osd_set); //for cover err
  304.      AUDIF_Set_Surround(0);//2004AUDDRV AudioSetSurround(0);
  305.     #ifdef MONE_sound
  306.      printf("  3==============Load 3Dsound BAND!===============n");
  307.      #endif 
  308.      }
  309. }
  310. #endif    //#ifdef  REMB_3DSOUND  yanlb 2004/07/07
  311. void sound_init(void)
  312. {
  313. // initialize page and sound_level, in order to dsiplay correctly next time ShowSoundPage
  314.     page=0;
  315.     sound_level=0;
  316.     sound_sel[3]=(UINT8)(6-audio_key);
  317.     OSD1000ISP_STATUS((page<<6)|(sound_level<<4)|(sound_sel[page]&0x0f), OSDIR_3D);
  318. }
  319. #ifdef SOUND_NO_KEYPAGE     //wanghaoying 2003-9-10 11:00
  320. void sound_init_2(void)
  321. {
  322. // initialize page and sound_level, in order to dsiplay correctly next time ShowSoundPage
  323.     page=1;
  324.     sound_level=0;
  325.     sound_sel[3]=(UINT8)(6-audio_key);
  326.     
  327. }
  328. #endif
  329. void show_band(void)
  330. {
  331.     char str[6];
  332.     memcpyS(&RegionValStr[BAND_R], user_osd_set, MAX_BAND);
  333.     osd_print_eq_setting(BAND_R, index_x*2);
  334.     if ((index_y-13)<-9)
  335.         psprintf(str,"%d DB", (index_y-13));
  336.     else if ((index_y-13)<0)
  337.         psprintf(str,"%d DB ", (index_y-13));
  338.     else if ((index_y-13)>9)
  339.         psprintf(str," %d DB", (index_y-13));
  340.     else
  341.         psprintf(str," %d DB ", (index_y-13));
  342.     osd_DrawRegionString(80,6,str,7,11,3);
  343. }
  344. #define SBLACKCOLOR             11
  345. #define SWHITECOLOR             2
  346. #ifdef SETUP_COLOR_TYPE2           //3-10-16 8:37张宇P
  347. #ifdef NINTAUS_DVD
  348. #define SDISABLECOLOR         14//0
  349. #else//#ifdef NINTAUS_DVD
  350. #define SDISABLECOLOR         0
  351. #endif//#ifdef NINTAUS_DVD
  352. #else
  353. #define SDISABLECOLOR         1
  354. #endif
  355. #define SBGCOLOR         6
  356. #define SANTIBGCOLOR            5
  357. #define BUTTON_UP         0
  358. #define BUTTON_DOWN         1
  359. void sound_draw_key(UINT8 up_down, UINT8 refresh)
  360. {
  361.     BYTE buf[15];
  362.     BYTE fnColor, bgColor;
  363.     if (up_down) {
  364.         fnColor=SWHITECOLOR;
  365.         bgColor=SANTIBGCOLOR;
  366.     } else {
  367.         fnColor=SBLACKCOLOR;
  368.         bgColor=SBGCOLOR;
  369.     }
  370.     if (refresh) {
  371. osd_draw_region_rect(140, 14, 180, 194, bgColor,EQ_R);
  372. osd_draw_button_outline(140,14,320,208,up_down,0x0f,EQ_R);
  373. psprintf(buf, " -    %s", Ch_ukey);
  374. osd_DrawRegionString(9, 6, buf, fnColor, bgColor, EQ_R);
  375. psprintf(buf, " -    - +4");
  376. osd_DrawRegionString(9, 12, buf, fnColor, bgColor, EQ_R);
  377. buf[9]='2';//psprintf(buf, " -    - +2");
  378. osd_DrawRegionString(9, 18, buf, fnColor, bgColor, EQ_R);
  379. psprintf(buf, " -    -  0");
  380. osd_DrawRegionString(9, 24, buf, fnColor, bgColor, EQ_R);
  381. psprintf(buf, " -    - -2");
  382. osd_DrawRegionString(9, 30, buf, fnColor, bgColor, EQ_R);
  383. buf[9]='4';//psprintf(buf, " -    - -4");
  384. osd_DrawRegionString(9, 36, buf, fnColor, bgColor, EQ_R);
  385. psprintf(buf, " -    %s", Ch_dkey);
  386. osd_DrawRegionString(9, 42, buf, fnColor, bgColor, EQ_R);
  387.     } else {
  388. UINT32 y=35+sound_sel[page]*12;
  389. //osd_draw_region_rect(188, y-18, 40, 48, bgColor,EQ_R);
  390. osd_draw_region_rect(188, y-14, 40, 40, bgColor,EQ_R); // alan, 2003/10/21 10:41