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

DVD

开发平台:

C/C++

  1. /*nono 2-5-20 17:25 modified for differenrt customer with different screen_saver */
  2. //terry,2004/2/6 11:42AM,test condition....
  3. #include "user_init.h"
  4. #include "memmap0.h"    // 2004/08/26 yltseng
  5. #include "global.h"
  6. #include "sio.h"
  7. #include "func.h"
  8. #include "kernel.h"
  9. #include "timer.h"
  10. #include "viddec.h"
  11. #include "setup.h"
  12. #include "osd.h"
  13. #include "vpp.h"
  14. //#undef  SAFE_WAIT_TIME
  15. //#define SAFE_WAIT_TIME 500
  16. //#undef SAFE_POWEROFF_WAIT_TIME
  17. //#define SAFE_POWEROFF_WAIT_TIME 500
  18. #ifdef REALCOLOR_QSI //liulifeng add 2004-7-12 13:00
  19. extern const UINT32 *osd__pal[];
  20. extern const UINT32 palette_256color_sreensaver[5][256];
  21. #endif
  22. #ifdef EASTWIN
  23. extern UINT8 bIS_LOWBAT; // Kevin Sep 10,04 
  24. #endif
  25. #ifndef NO_SHOW_PIC_SAVER//lizhx 20040505
  26. #ifdef SUNPLUS_DVD  
  27. #include ".\Customers\Sunplus\safe_sunplus.c" 
  28. #elif defined(AKI_DVD)          //fengjl  03/10/18
  29. #include ".\Customers\Aki\safe_aki.c" 
  30. #elif defined(APEX_DVD)         //Maoyong 2004.03.23
  31. #include ".\Customers\Apex\safe_apex.c"
  32. #elif defined(ATLAS_DVD)         //Maoyong 2004.03.23
  33. #include ".\Customers\atlas\safe_atlas.c"
  34. #elif defined(BBK_DVD)                 //fengjl  03/10/17
  35. #include ".\Customers\Bbk\safe_bbk.c" 
  36. #elif defined(SMT_DVD)                 //fengjl  3-10-23 18:44
  37. #include ".\Customers\Smt\safe_smt.c" 
  38. #elif defined(ZhengTai_DVD)                 //fengjl  3-10-23 18:44
  39. #include ".\Customers\ZhengTai\safe_zhengtai.c" 
  40. #elif defined(JIEKE_DVD)
  41. #include ".\Customers\jieke\safe_jieke.c" 
  42. #elif defined(YADAI_DVD)                 
  43. #include ".\Customers\Yadai\safe_yadai.c" 
  44. #elif defined(YUXING_DVD)
  45. #include ".\Customers\Yuxing\safe_yuxing.c" 
  46. #elif defined(YUXING_MIDI_DVD)                              //xlluo add 04-6-11
  47. #include ".\Customers\Yuxing\safe_yuxing.c" 
  48. #elif defined(SANJING_MIDI_DVD)                              //ouyang add 05-01-27
  49. #include ".\Customers\Sanjing\safe_sanjing.c" 
  50. #elif defined(GAODASI_DVD)                 
  51. #include ".\Customers\Gaodasi\safe_gaodasi.c" 
  52. #elif defined(SAMSUNG1_DVD) 
  53. #include ".\Customers\Sunplus\safe_sunplus.c" 
  54. #elif defined(MUSTEK_DVD) 
  55. #include ".\Customers\Mustek\safe_mustek.c" 
  56. #elif defined(FUSS_DVD) 
  57. #ifdef FUSS_LIDE_DVD
  58. #include ".\Customers\fuss\lide\safe_fuss_lide.c" 
  59. #elif defined(FUSS_SHENGKE_DVD)
  60. #include ".\Customers\fuss\shengke\safe_fuss_shengke.c" 
  61. #elif defined(FUSS_SANYING_DVD)
  62. #include ".\Customers\Fuss\sanying\safe_fuss_sanying.c" 
  63. #elif defined(FUSS_MASCO_DVD)
  64. #include ".\Customers\Fuss\masco\safe_fuss_masco.c" 
  65. #elif defined(FUSS_FEIYANG_DVD)
  66. #include ".\Customers\Fuss\feiyang\safe_fuss_feiyang.c" 
  67. #elif defined(FUSS_SHUNJIAN_DVD)
  68. #include ".\Customers\Fuss\shunjian\safe_fuss_shunjian.c" 
  69. #else
  70. #include ".\Customers\Fuss\safe_fuss.c" 
  71. #endif
  72. #elif defined(HUAJIA_DVD) 
  73. #include ".\Customers\Huajia\safe_huajia.c" 
  74. #elif defined(NINTAUS_DVD) 
  75. #include ".\Customers\nintaus\safe_nintaus.c" 
  76. #elif defined(NINTAUS_MIDI_DVD) 
  77. #include ".\Customers\nintaus\safe_nintaus.c" 
  78. #elif defined(SVA_DVD) 
  79. #include ".\Customers\Sva\safe_sva.c"
  80. #elif defined(KONKA_DVD) 
  81. #include ".\Customers\Konka\safe_konka.c"
  82. #elif defined(GBM_DVD) 
  83. #include ".\Customers\Gbm\safe_gbm.c"
  84. #elif defined(GBM_PORTABLE_DVD)
  85. #include ".\Customers\gbm_portable\safe_gbmportable.c"
  86. #elif defined(GBM_AP_DVD) 
  87. #include ".\Customers\Gbm_ap\safe_gbm_ap.c"
  88. #elif defined(CNMOTOR_DVD) 
  89. #include ".\Customers\Cnmotor\safe_cnmotor.c"
  90. #elif defined(BMT_DVD) 
  91. #include ".\Customers\BMT\safe_BMT.c"
  92. #elif defined(SUOJIA_DVD) 
  93. #include ".\Customers\suojia\safe_suojia.c"
  94. #elif defined(OUR_MIND_DVD) 
  95. #include ".\Customers\ourmind\safe_ourmind.c"
  96. #elif defined(WEIKING_DVD_AMP) 
  97. #include ".\Customers\weiking\safe_weiking.c"
  98. #elif defined(APOLLO_DVD) 
  99. #include ".\Customers\apollo\safe_apollo.c"
  100. #elif defined(AVIQ_DVD) 
  101. #include ".\Customers\AViQ\safe_aviq.c"
  102. #elif defined(FUDI_DVD) 
  103. #include ".\Customers\fudi\safe_fudi.c"
  104. #elif defined(CONSER_DVD)
  105.     #if defined(CONSERproview_a)
  106.         #include ".\Customers\Sunplus\safe_sunplus.c" 
  107.     #else
  108.         #include ".\Customers\Sunplus\safe_sunplus.c" 
  109.     #endif
  110. #elif defined(PROVIEW_DVD)
  111.     #if defined(PROVIEW_288k)
  112.         #include ".\Customers\Sunplus\safe_sunplus.c" 
  113.     #else
  114.         #include ".\Customers\Sunplus\safe_sunplus.c" 
  115.     #endif
  116. #elif defined(ZIHUAN_DVD)
  117. #include ".\Customers\zihuan\safe_zihuan.c"
  118. #elif defined(QISHENG_DVD)
  119. #include ".\Customers\QiSheng\safe_qisheng.c"
  120. #elif defined(YAHSIN_DVD)
  121. #include ".\Customers\YaHsin\safe_yahsin.c"
  122. #elif defined(SKYWORTH_DVD)
  123. #include ".\Customers\SkyWorth\safe_skyworth.c"
  124. #elif defined(SKYTECH_DVD)
  125. #include ".\Customers\Skytech\safe_skytech.c"
  126. #elif defined(MICO_DVD)
  127. #include ".\Customers\mico\safe_mico.c"
  128. #elif defined (KSD_DVD)
  129. #include ".\Customers\TrendDigit\safe_ksd.c"
  130. #elif defined(DESAY_DVD)
  131. #include ".\Customers\Desay\safe_desay.c"
  132. #elif defined(MINTON_DVD)
  133. #include ".\Customers\Minton\safe_minton.c"
  134. #elif defined(IDALL_DVD)
  135. #include ".\Customers\IDall\safe_idall.c"
  136. #elif defined(EASTECH_DVD)    //2004-4-2 1:31 wsf
  137. #include ".\Customers\EASTECH\safe_eastech.c" 
  138. #elif defined(EVERSTAR_DVD)
  139. #include ".\Customers\everstar\safe_everstar.c"
  140. #elif defined(QISHENG_DVD)  // alan, 2003/8/29 12:32AM
  141. #include ".\Customers\qisheng\safe_qisheng.c"
  142. #elif defined(VTREK_DVD)    //wanghaoying 2003-9-10 20:56
  143. #include ".\Customers\Vtrek\safe_vtrek.c"
  144. #elif defined(INTECH_DVD)    //nono 3-9-25 14:14
  145. #include ".\Customers\intech\safe_intech.c"
  146. #elif defined(GENTEK_DVD)
  147. #include ".\Customers\Gentek\safe_gentek.c"
  148. #elif defined(HUIFENGYUAN_DVD)
  149. #include ".\Customers\HuiFengYuan\safe_huifengyuan.c"
  150. #elif defined(HENGCHEN_DVD)
  151. #include ".\Customers\HengChen\safe_hengchen.c"
  152. #elif defined(HARMA_DVD)    //3-10-24 1:38张宇P
  153. #include ".\Customers\HARMA\safe_harma.c"
  154. #elif defined(HANYANG_DVD)    //CAOH 2004-4-6 16:53
  155. #include ".\Customers\HANYANG\safe_HANYANG.c"
  156. #elif defined(ACTIMA_DVD)    //2004-9-14 09:22張宇M
  157. #include ".\Customers\actima\safe_actima.c"
  158. #elif defined(ARGUS_PORTABLE_DVD)
  159. #include ".\Customers\argus_portable\safe_argusportable.c"
  160. #elif defined(QSI_PORTABLE_DVD)//jhuang 2004/7/19
  161. #include ".\Customers\qsi_portable\safe_qsiportable.c"
  162. #elif defined(WYD_DVD)    //3-10-27 1:50张宇P
  163. #include ".\Customers\WYD\safe_WYD.c"
  164. #elif defined(HONGTU_DVD)    //2003-11-25 03:56张宇P
  165. #include ".\Customers\HONGTU\safe_HONGTU.c"
  166. #elif defined(KENLOON_DVD)    //2004-4-14 11:19张宇M
  167. #include ".\Customers\kenloon\safe_kenloon.c"
  168. #elif defined(SZMALATA_DVD)    //2004-2-3 01:18张宇P
  169. #include ".\Customers\SZMALATA\safe_SZMALATA.c"
  170. #elif defined(TONIC_DVD)    //2004-2-3 01:18张宇P
  171. #include ".\Customers\TONIC\safe_TONIC.c"
  172. #elif defined(MALATA_DVD)    //2003-11-25 03:56张宇P
  173. #include ".\Customers\MALATA\safe_MALATA.c"
  174. #elif defined(NEWFUSS_DVD)    //2003-11-25 03:56张宇P
  175. #include ".\Customers\NEWFUSS\safe_NEWFUSS.c"
  176. #elif defined(TIANKE_DVD)    //3-10-24 1:38张宇P
  177. #include ".\Customers\TIANKE\safe_TIANKE.c"
  178. #elif defined(WEICHENG_DVD)
  179. #include ".\Customers\weicheng\safe_weicheng.c"
  180. #elif defined(XUKE_DVD)
  181. #include ".\Customers\xuke\safe_xuke.c"
  182. #elif defined(XINGWEIKE_DVD)
  183. #include ".\Customers\XINGWEIKE\safe_xingweike.c"
  184. #elif defined(YANGYU_DVD)
  185. #include ".\Customers\YangYu\safe_yangyu.c"
  186. #elif defined(ALON_DVD)
  187. #include ".\Customers\Alon\safe_alon.c"
  188. #elif defined(TONGFANG_DVD)
  189. #include ".\Customers\TongFang\safe_tongfang.c"
  190. #elif defined(XINDE_DVD)
  191. #include ".\Customers\XinDe\safe_xinde.c" 
  192. #elif defined(XINGQIU_DVD)
  193. #include ".\Customers\xingqiu\safe_xingqiu.c"
  194. #elif defined(ORITRON_DVD)
  195.     #if defined(ORITRON_DVD4105)
  196.         #include ".\Customers\Oritron\safe_oritron_4105.c"
  197.     #else
  198. #include ".\Customers\Oritron\safe_oritron.c"
  199.     #endif
  200. #elif defined (ORIENTPOWER_DVD)
  201.     #include ".\Customers\Orientpower\safe_orientpower.c" 
  202. #elif defined(SYBER_DVD)    //2003-11-19 9:04 David
  203. #include ".\Customers\SYBER\safe_syber.c"
  204. #elif defined(SHIDELI_DVD)                      
  205. #include ".\Customers\SHIDELI\safe_shideli.c"        //gerry,2004-4-22 16:10
  206. #elif defined(THAKRAL_DVD) 
  207. #include ".\Customers\thakral\safe_thakral.c"        //suqiaoli,2004-9-16 
  208. #elif defined(EASTWIN_PORTABLE_DVD)                      
  209. #include ".\Customers\Eastwin\safe_eastwin.c"
  210. #elif defined(TEAC_PORTABLE_DVD)//TEAC
  211. #include ".\Customers\teac_portable\safe_teac.c"
  212. #else
  213. #include ".\Customers\Sunplus\safe_sunplus.c"     
  214. #endif
  215. #endif//NO_SHOW_PIC_SAVER
  216. //========================================================================
  217. // var. declare
  218. //========================================================================
  219. //slow down screen saver image moving speed
  220. UINT32 save_srn_start_t;
  221. UINT8  safe_on=0; //0:system is active, 1:system enter screen-saver, 2:exit screen-saver
  222. INT8   safeMode;
  223. BYTE   safeForceEnter=0;
  224. BYTE   safe_state=0;
  225. enum {
  226.     SAFE_INIT=0,
  227.     SAFE_DISPLAYING=1,
  228. };
  229. #ifdef NO_SHOW_PIC_SAVER//lizhx 20040505
  230. #undef OSD_SAVER_W
  231. #undef OSD_SAVER_H
  232. #define OSD_SAVER_W     56
  233. #define OSD_SAVER_H     24
  234. #endif
  235. /*
  236. #define NORMAL_HEADER   0
  237. #define EQ_HEADER       1
  238. #define SETUP_HEADER    2
  239. #define NES_HEADER      3
  240. */
  241. extern BYTE osd0_state;
  242. extern BYTE header_id;
  243. extern const UINT8 osd_header_offset[8];
  244. extern void wait_v_blank(void);
  245. extern void ENABLE_OSD(void);
  246. extern void DISABLE_OSD(void);
  247. extern void osd_create_region1(t_osd_region*, int, int, t_osd_region*, BYTE, BYTE);
  248. extern void DispPolling(BYTE bReset);
  249. extern int dsp3_decompress(const BYTE*, BYTE*);
  250. extern void SetOsdCol(UINT8, UINT8, UINT8, UINT32);
  251. extern void DispFadeOut();
  252. extern BYTE setup_GetSSaveType();
  253. #ifdef CD_PLAYER
  254. extern void osd_init_cdplayer();
  255. #endif
  256. #ifdef VIRTUAL_KEYBOARD
  257. extern BYTE KeyID;
  258. extern void osd_draw_virtual_keyboard(int xStart, int yStart,BYTE r);   
  259. extern void hl_keyboard_button(BYTE KeyID);
  260. #endif
  261. #ifdef NEWSTYLE_WINDOW
  262. extern void exit_browse_func(void);
  263. #endif
  264. extern void osd_init_screensaver(void);
  265. extern void osd_draw_256color_bmp(int,int,BYTE*,BYTE);
  266. void DrawOsdScreenSaver(UINT32 xPos, UINT32 yPos);
  267. void ChangeColorTable(void);
  268. void GetNewSaverLoc(void);
  269. void MovePointer(void);
  270. void SetMovePointer(UINT8 reg,UINT16 reg_x,UINT16 reg_y);//nono 2004-5-4 12:23
  271. void DisplayScreenSaver(void);
  272. void ExitOsdScreenSaver(void);
  273. void InitOsdScreenSaver(void);
  274. void ColorDisplay(void);
  275. #if (defined(DVB_SETUP)&&!defined(SUPPORT_DVD_OSD)&&defined(OSD_SCREEN_SAVER)) //xsyan add
  276. static void enable_osd_saver(void);
  277. #endif
  278. #define OSD_DATA_OFFSET(f)      (osd_header_offset[(f)&OSD_FORMAT_MASK])
  279. #define OBV_BASE                (SDRAM_BASE + regs0->osd_base_addr*1024)
  280. #define get_osdbuf_baseptr()    ((void *)OBV_BASE)
  281. static const BYTE Pattern_Saver[] =
  282. {
  283.     0xff,       //0000-->11111111
  284.     0xfd,       //0001-->11111101
  285.     0xf7,       //0010-->11110111
  286.     0xf5,       //0011-->11110101
  287.     0xdf,       //0100-->11011111
  288.     0xdd,       //0101-->11011101
  289.     0xd7,       //0110-->11010111
  290.     0xd5,       //0111-->11010101
  291.     0x7f,       //1000-->01111111
  292.     0x7d,       //1001-->01111101
  293.     0x77,       //1010-->01110111
  294.     0x75,       //1011-->01110101
  295.     0x5f,       //1100-->01011111
  296.     0x5d,       //1101-->01011101
  297.     0x57,       //1110-->01010111
  298.     0x55,       //1111-->01010101
  299. };
  300. #define __palette4F(G,B,R,A) 
  301.         (((UINT32)((G) & 0xff) << 24) | ((UINT32)((B) & 0xff) << 16) | ((UINT32)((R) & 0xff) << 8) | ((A) & 0xff))
  302. #ifdef COLORFUL_SCREENSAVER
  303. #define PAL4_YELLOW     __palette4F(198, 0, 198, 0xff)        //yellow
  304. #define PAL4_BLUE       __palette4F(128, 192, 0, 0xff)        //blue
  305. #define PAL4_GREEN1     __palette4F(255, 0, 0, 0xff)         //green
  306. #define PAL4_WHITE      __palette4F(129, 163, 242, 0xff)  //white
  307. #define PAL4_RED        __palette4F(10, 140, 216, 0xff)        //red
  308. #define PAL4_YELLOW     __palette4F(198, 0, 198, 0xff)        //yellow
  309. #define PAL4_ORAGNGE    __palette4F(103, 0, 206, 0xff)         //orange
  310. #define PAL4_GREEN2     __palette4F(255, 0, 0, 0xff)         //green
  311. #define PAL4_PINK       __palette4F(40,148,255, 0xff)       //pink        //xulf0721
  312. #define PAL4_PURPEL1    __palette4F(58,215,176, 0xff)         //purpel
  313. #define PAL4_PURPEL2    __palette4F(68,138,68, 0xff)        //purpel
  314. #else
  315. #define PAL4_ORIGIN     __palette4F(0xa2, 0x2c, 0x8e, 0xff)
  316. #define PAL4_WHITE      __palette4F(0xff, 0x80, 0x80, 0xff)
  317. #define PAL4_LGREEN     __palette4F(177, 141, 73, 0xff)
  318. #define PAL4_PURPEL     __palette4F(136, 165, 182, 0xff)
  319. #define PAL4_BLUE       __palette4F(107, 187, 115, 0xff)
  320. #endif
  321. int    *safeVar;
  322. BYTE   *gpImgAddr;
  323. #define nSaverLocX      (safeVar[0])
  324. #define nSaverLocY      (safeVar[1])
  325. #define nSaverW         (safeVar[2])
  326. #define nSaverH         (safeVar[3])
  327. #define nSaverOffsetX   (safeVar[4])
  328. #define nSaverOffsetY   (safeVar[5])
  329. #define nSaverColor     (safeVar[6])
  330. #define SAFEMAXVAR      (7)
  331. void SetMovePointer(UINT8 reg,UINT16 reg_x,UINT16 reg_y)
  332. {
  333.     UINT16* pOSDHeader1 = (UINT16*)(get_osdbuf_baseptr() + region[reg].osd_header[0] * 32);
  334.     UINT16* pOSDHeader2 = (UINT16*)(get_osdbuf_baseptr() + region[reg].osd_header[1] * 32); 
  335.     
  336.     wbe16(pOSDHeader1 + 4, reg_y);
  337.     wbe16(pOSDHeader2 + 4, reg_y);
  338.     wbe16(pOSDHeader1 + 5, reg_x);
  339.     wbe16(pOSDHeader2 + 5, reg_x);
  340. //  printf("pHeader1Row = %xn", pHeader1Row);
  341. //  printf("val = %xn", *pHeader1Row);
  342. }
  343. void MovePointer()
  344. {
  345.     UINT16 nCol, nRow;
  346.     nRow = nSaverLocY & 0x3ff; // Row
  347.     nCol = nSaverLocX & 0x3ff;
  348.     SetMovePointer(0,nCol,nRow);
  349. //  printf("pHeader1Row = %xn", pHeader1Row);
  350. //  printf("val = %xn", *pHeader1Row);
  351. }
  352. #ifdef REALCOLOR_SCREENSAVER
  353. void InitOsdScreenSaver(void)
  354. {
  355.     // force display off
  356.     while (!((osd0_state == 1) || (osd0_state == 0)))
  357.         DispPolling(1);
  358.     disable_video();
  359.     DISABLE_OSD();
  360.     safeVar = (int*)(SDRAM_BASE + (TEMPYA * 1024));
  361.     
  362.     // setup first free address
  363.     //osd_free = addr_vxvy(0,0);
  364.     // get saver size
  365.     nSaverW = OSD_SAVER_W;
  366.     nSaverH = OSD_SAVER_H;
  367.     if ((nSaverW % 16) != 0)
  368.         nSaverW = (nSaverW / 16 + 1) * 16;
  369.     if ((nSaverW % 2) != 0)
  370.         nSaverH += 1;
  371.     // reset saver offset
  372.     nSaverOffsetX = 1;
  373.     nSaverOffsetY = 1;
  374.     nSaverLocX = 2;
  375.     nSaverLocY = 2;
  376.     nSaverColor = 0;
  377.     osd__pal[4] = palette_256color_sreensaver[nSaverColor];//jhuang 2004/8/2
  378.     osd_init_screensaver();
  379. //  osd_create_region1(&region[0], 0, 0, NULL, OSD_FORMAT_4COLOR, OSD_NONINTERLACED);
  380.    
  381.     
  382.     osd_draw_256color_bmp(0, 0, (BYTE*)realcolor_saver,0);
  383.     
  384.     //SetOsdCol(0, 0, 0,0x000000ff);//black color
  385. #ifdef COLORFUL_SCREENSAVER       //xulf0722
  386.     ColorDisplay();
  387. #endif
  388. #if (defined(DVB_SETUP)&&!defined(SUPPORT_DVD_OSD)&&defined(OSD_SCREEN_SAVER)) //xsyan add
  389.     enable_osd_saver();
  390. #else
  391.     ENABLE_OSD();
  392. #endif
  393. }
  394. void DisplayScreenSaver(void)
  395. {
  396.     //change X, Y-axes position
  397.     GetNewSaverLoc();
  398. #ifndef REALCOLOR_QSI //liulifeng add 2004-7-12 13:00   
  399.     delay_1ms(8);
  400. #endif
  401.     //move start pointer
  402.     MovePointer();
  403. #ifdef SAFE_AUTO_POWEROFF
  404.     {
  405.         unsigned rtc,diff;      // zhangyu ,3-10-2 10:40
  406.         
  407.         rtc = get_rtc_val();
  408.         diff=rtc-save_srn_start_t;
  409.         if (diff > SAFE_POWEROFF_WAIT_TIME) ircmd_power();    
  410.     }
  411. #endif
  412. }
  413. #ifdef REALCOLOR_QSI //liulifeng add 2004-7-12 13:00
  414. //extern const UINT32 *osd__pal[];//jhuang move top 2004/8/2
  415. //extern const UINT32 palette_256color_sreensaver[5][256];//jhuang move top
  416. //const BYTE change_realcolor=0;
  417. void ChangeColor_256real ( void )
  418. {
  419.     int id;
  420.      nSaverColor++;
  421.     if (nSaverColor >= 5)
  422.         nSaverColor = 0;
  423.     osd__pal[4] = palette_256color_sreensaver[nSaverColor];
  424.     for ( id = 0 ;id < 256 ; id++)    SetOsdCol ( 0 , 0 , id , osd__pal[4][id] );
  425.     //osd_init_screensaver();
  426.     //delay_1ms(13);
  427.     delay_1ms(18);//jhuang 2004/8/2
  428.     osd_draw_256color_bmp(0, 0, (BYTE*)realcolor_saver[nSaverColor],0);
  429. }
  430. #endif
  431. void GetNewSaverLoc()
  432. {
  433.     //change X-axes position
  434.     if (nSaverOffsetX > 0)
  435.     {
  436.         if ((nSaverLocX + nSaverW / 2 + nSaverOffsetX) > (720 / 2 - 1))
  437.         {
  438.             nSaverOffsetX *= (-1);
  439.     #ifdef REALCOLOR_QSI //liulifeng add 2004-7-12 13:00
  440.             ChangeColor_256real ();
  441.             //change_realcolor=1;
  442.     #endif
  443.         }
  444.         nSaverLocX += nSaverOffsetX;
  445.     }
  446.     else
  447.     {
  448.         if ((nSaverLocX + nSaverOffsetX) < 1)
  449.         {
  450.             nSaverOffsetX *= (-1);
  451.         #ifdef REALCOLOR_QSI //liulifeng add 2004-7-12 13:00
  452.             ChangeColor_256real ();
  453.             //change_realcolor=1;
  454.         #endif
  455.         }
  456.         nSaverLocX += nSaverOffsetX;
  457.     }
  458.     //change Y-axes position
  459.     if (nSaverOffsetY > 0)
  460.     {
  461.         UINT32  ySize;
  462.         if ( getVPP_TVsystem()==1) { //Jeff 20030827
  463.             ySize = 576;
  464.         } else {
  465.             ySize = 480;
  466.         }
  467.         if (p_scan == 0)
  468.         {
  469.             if ((nSaverLocY + nSaverH / 2 + nSaverOffsetY) > (ySize / 2 - 1))
  470.             {
  471.                 nSaverOffsetY *= (-1);
  472.             #ifdef REALCOLOR_QSI //liulifeng add 2004-7-12 13:00
  473.             ChangeColor_256real ();
  474.             //change_realcolor=1;
  475.             #endif
  476.             }
  477.         }
  478.         else
  479.         {
  480.             if ((nSaverLocY + nSaverH + nSaverOffsetY) > (ySize - 1))
  481.             {
  482.                 nSaverOffsetY *= (-1);
  483.             #ifdef REALCOLOR_QSI //liulifeng add 2004-7-12 13:00
  484.             ChangeColor_256real ();
  485.             //change_realcolor=1;
  486.             #endif
  487.             }
  488.         }
  489.         nSaverLocY += nSaverOffsetY;
  490.     }
  491.     else
  492.     {
  493.         if ((nSaverLocY + nSaverOffsetY) < 1)
  494.         {
  495.             nSaverOffsetY *= (-1);
  496.         #ifdef REALCOLOR_QSI //liulifeng add 2004-7-12 13:00
  497.             ChangeColor_256real ();
  498.             //change_realcolor=1;
  499.         #endif
  500.         }
  501.         nSaverLocY += nSaverOffsetY;
  502.     }
  503. }
  504. #else
  505. void DecompressOSDPic()
  506. {
  507.     safeVar = (int*)(SDRAM_BASE + (TEMPYA * 1024));
  508.         
  509.     gpImgAddr = (BYTE*)(SDRAM_BASE + (TEMPYA * 1024) + SAFEMAXVAR *4 );
  510.     #ifndef NO_SHOW_PIC_SAVER//lizhx 20040505
  511.     dsp3_decompress((const BYTE *)romimg_OSDSaver, gpImgAddr);  
  512.     #endif
  513. }
  514. void InitOsdScreenSaver(void)
  515. {
  516.     // force display off
  517.     while (!((osd0_state == 1) || (osd0_state == 0)))
  518.         DispPolling(1);
  519.     disable_video();
  520.     DISABLE_OSD();
  521.     // setup first free address
  522.     osd_free = addr_vxvy(0,0);
  523.     DecompressOSDPic();
  524.     // get saver size
  525.     nSaverW = OSD_SAVER_W;
  526.     nSaverH = OSD_SAVER_H;
  527.     if ((nSaverW % 16) != 0)
  528.         nSaverW = (nSaverW / 16 + 1) * 16;
  529.     if ((nSaverW % 2) != 0)
  530.         nSaverH += 1;
  531.     // reset saver offset
  532.     nSaverOffsetX = 1;
  533.     nSaverOffsetY = 1;
  534.     nSaverLocX = 2;
  535.     nSaverLocY = 2;
  536.     nSaverColor = 0;
  537.     region[0].osd_w = nSaverW * 2 / 8; // bytes
  538.     region[0].osd_h = nSaverH;
  539.     
  540. #ifdef SCREENSAVER_ZOOM_IN_2
  541.         header_id = NES_HEADER;//NORMAL_HEADER;
  542. #else
  543.     header_id = NORMAL_HEADER;
  544. #endif
  545.     osd_create_region1(&region[0], 0, 0, NULL, OSD_FORMAT_4COLOR, OSD_INTERLACED);
  546. //  osd_create_region1(&region[0], 0, 0, NULL, OSD_FORMAT_4COLOR, OSD_NONINTERLACED);
  547.    
  548.     DrawOsdScreenSaver(0, 0);
  549.     SetOsdCol(0, 0, 0,0x000000ff);//black color
  550.     ColorDisplay();
  551. #if (defined(DVB_SETUP)&&!defined(SUPPORT_DVD_OSD)&&defined(OSD_SCREEN_SAVER)) //xsyan add
  552.     enable_osd_saver();
  553. #else
  554.     ENABLE_OSD();
  555. #endif
  556. }
  557. void DisplayScreenSaver(void)
  558. {
  559.     //change X, Y-axes position
  560.     GetNewSaverLoc();
  561.     //move start pointer
  562.     MovePointer();
  563. #ifdef SAFE_AUTO_POWEROFF
  564.     {
  565.         unsigned rtc,diff;      // zhangyu ,3-10-2 10:40
  566.         
  567.         rtc = get_rtc_val();
  568.         diff=rtc-save_srn_start_t;
  569.         if (diff > SAFE_POWEROFF_WAIT_TIME) ircmd_power();    
  570.     }
  571. #endif
  572. }
  573. void GetNewSaverLoc()
  574. {
  575.     //change X-axes position
  576.     if (nSaverOffsetX > 0)
  577.     {
  578.         if ((nSaverLocX + nSaverW / 2 + nSaverOffsetX) > (720 / 2 - 1))
  579.         {
  580.             nSaverOffsetX *= (-1);
  581.             ChangeColorTable();
  582.         }
  583.         nSaverLocX += nSaverOffsetX;
  584.         #ifdef NO_SHOW_PIC_SAVER//lizhx 20040505
  585.         PrintOsdMsg(STR_OS_DVD, REGION0, 1,0);
  586.         #endif
  587.     }
  588.     else
  589.     {
  590.         if ((nSaverLocX + nSaverOffsetX) < 1)
  591.         {
  592.             nSaverOffsetX *= (-1);
  593.             ChangeColorTable();
  594.         }
  595.         nSaverLocX += nSaverOffsetX;
  596.         #ifdef NO_SHOW_PIC_SAVER//lizhx 20040505
  597.         PrintOsdMsg(STR_OS_DVD, REGION0, 1,0);
  598.         #endif
  599.     }
  600.     //change Y-axes position
  601.     if (nSaverOffsetY > 0)
  602.     {
  603.         INT32  ySize;
  604.         if ( getVPP_TVsystem()==1) { //Jeff 20030827
  605.             ySize = 576;
  606.         } else {
  607.             ySize = 480;
  608.         }
  609.         if (p_scan == 0)
  610.         {
  611.             if ((nSaverLocY + nSaverH / 2 + nSaverOffsetY) > (ySize / 2 - 1))
  612.             {
  613.                 nSaverOffsetY *= (-1);
  614.                 ChangeColorTable();
  615.             }
  616.         }
  617.         else
  618.         {
  619.             if ((nSaverLocY + nSaverH + nSaverOffsetY) > (ySize - 1))
  620.             {
  621.                 nSaverOffsetY *= (-1);
  622.                 ChangeColorTable();
  623.             }
  624.         }
  625.         nSaverLocY += nSaverOffsetY;
  626.         #ifdef NO_SHOW_PIC_SAVER//lizhx 20040505
  627.         PrintOsdMsg(STR_OS_DVD, REGION0, 1,0);
  628.         #endif
  629.     }
  630.     else
  631.     {
  632.         if ((nSaverLocY + nSaverOffsetY) < 1)
  633.         {
  634.             nSaverOffsetY *= (-1);
  635.             ChangeColorTable();
  636.         }
  637.         nSaverLocY += nSaverOffsetY;
  638.         #ifdef NO_SHOW_PIC_SAVER//lizhx 20040505
  639.         PrintOsdMsg(STR_OS_DVD, REGION0, 1,0);
  640.         #endif
  641.     }
  642. }
  643. #endif
  644. void ExitOsdScreenSaver(void)
  645. {
  646.     enable_video();
  647. #ifdef DYNAMIC_SPECTRUM
  648.     if(bEqDisplay)
  649.         Show3dspectrum();
  650.     else
  651. #endif
  652.     osd_init();
  653. #ifndef SDRAM_16Mb_Mode//nono 2004-5-12 20:50 to avoid the bug when exit saver,show display incorrectly
  654.     t_disp = old_t_disp;
  655.     if (t_disp != 0)
  656.     {
  657.         //#ifdef SDRAM_16Mb_Mode
  658.     //to avoid the bug when exit saver,show display incorrectly
  659.     //zhaoyanhua add 2003-11-14 10:35
  660.         //    DispPolling(3);
  661.         //#else
  662.         osd0_state = 1;
  663.         //#endif
  664.     }
  665.     #endif
  666. }
  667. #ifdef COLORFUL_SCREENSAVER    
  668. const UINT32 col_tbl[ ]={PAL4_YELLOW, PAL4_BLUE, PAL4_PURPEL1,PAL4_ORAGNGE,PAL4_GREEN1, PAL4_WHITE,  PAL4_RED, PAL4_YELLOW, PAL4_ORAGNGE, PAL4_GREEN2, PAL4_PINK, PAL4_PURPEL2};
  669. #else
  670. const UINT32 col_tbl[5]={PAL4_ORIGIN,PAL4_WHITE,PAL4_LGREEN,PAL4_PURPEL,PAL4_BLUE}; 
  671. #endif//COLORFUL_SCREENSAVER    
  672. void ChangeColorTable()
  673. {
  674. #ifdef COLORFUL_SCREENSAVER     
  675.     
  676.     nSaverColor  = nSaverColor  +2;
  677.     if (nSaverColor >= 12)
  678.         nSaverColor = 0;
  679.     SetOsdCol(0, 0, 3, col_tbl[nSaverColor]);
  680.     SetOsdCol(0, 0, 2, col_tbl[nSaverColor+1]);
  681.     
  682. #else
  683.     nSaverColor++;
  684.     if (nSaverColor >= 5)
  685.         nSaverColor = 0;
  686.     
  687.     #ifdef BBK_DVD//zhaoyanhua add 03-10-28 13:43
  688.     SetOsdCol(0, 0, 3, col_tbl[nSaverColor]);
  689.     SetOsdCol(0, 0, 1, 0x000000ff);
  690.     #else
  691.     SetOsdCol(0, 0, 3, col_tbl[nSaverColor]);
  692.     #endif
  693. #endif
  694. }
  695. #ifdef COLORFUL_SCREENSAVER    
  696.  /*********************************
  697.    *Colorful ScreenSaver
  698.    *Added by xulf and zhaoyanhua 0721
  699.  **********************************/
  700. void ColorDisplay(void)
  701. {
  702.     if (p_scan == 0)
  703.     {
  704.         //display DVD color
  705.         ChangeColorValue(0, 30, 0, 21, 3, 2, 0); 
  706.         //renew the color of the edge of disk(top right corner)  
  707.         ChangeColorValue( 24, 28, 0, 15, 2, 3, 1); 
  708.         //renew the color of the edge of disk(left corner)
  709.         ChangeColorValue(11, 14, 14, 16, 2, 3, 0); 
  710.         ChangeColorValue(10, 13, 16, 22, 2, 3, 0); 
  711.         //renew the color of the edge of disk(in the middle of DVD)
  712.         ChangeColorValue(20, 22, 5, 9, 2, 3, -1); 
  713.         ChangeColorValue(17, 18, 9, 11, 2, 3, 0);
  714.         //display two dot color
  715.         ChangeColorValue(25, 38, 41, 55, 3, 2, 0); 
  716.     }
  717.     else
  718.     {
  719.         //display DVD color
  720.         ChangeColorValue(0, 30, 0, 42, 3, 2, 0); 
  721.         //renew the color of the edge of disk(top right corner)  
  722.         ChangeColorValue( 25, 29, 5, 20, 2, 3, 1); 
  723.         //renew the color of the edge of disk(left corner)
  724.         ChangeColorValue(11, 14, 28, 32, 2, 3, 0); 
  725.         ChangeColorValue(10, 13, 32, 44, 2, 3, 0); 
  726.         //renew the color of the edge of disk(in the middle of DVD)
  727.         ChangeColorValue(20, 22, 10, 14, 2, 3, 0);
  728.         ChangeColorValue(17, 20, 12, 19, 2, 3, 0);       
  729.         //display two dot color
  730.         ChangeColorValue(25, 38, 81, 110, 3, 2, 0); 
  731.     }
  732. }
  733. /******************************************
  734. *This is for the 4-color bitmap. 
  735. *modify the part of bitmap data in order to change 
  736. *original color to another color.
  737. *
  738. *INPUT:
  739. *       SrcColIndex :   0-3, original color
  740.         DstColIndex :   0-3, changed color
  741.                     step :   line offset
  742. *creat: xulf and zhaoyanhua  2003/07/31
  743. *******************************************/
  744. void ChangeColorValue(UINT16 xStart, UINT16 xEnd, UINT16 yStart, UINT16 yEnd, UINT8 SrcColIndex, UINT8 DstColIndex, INT16 step)
  745. {
  746.     BYTE    *pTopLine, *pBtmLine;             
  747.     UINT32  nStartLoc, xPos=0, yPos=0;
  748.     UINT16  j, k, m;    
  749.     UINT16  nRegionWidth = region[0].osd_w * 4;
  750.     UINT16  nSaverWidth, nSaverHigh;
  751.     UINT16  nSpace;
  752.     INT16   i=0;
  753.     nStartLoc = (yPos * nRegionWidth / 8) + (xPos / 4);
  754.     nSaverWidth = OSD_SAVER_W; 
  755.     nSaverHigh = OSD_SAVER_H; 
  756.     nSpace = nSaverWidth/4 ;
  757.     nSaverHigh /= 2;
  758.     m = DstColIndex-SrcColIndex;
  759.     if (yEnd>region[0].osd_h/2) yEnd=region[0].osd_h/2; //potatooo, 20030827
  760.     
  761.     for(j=yStart;j<yEnd;j++)                                                                     
  762.     {
  763.         for (k =xStart; k <xEnd; k++)
  764.         {
  765.             pTopLine = (BYTE *)(((BYTE *)get_osdbuf_baseptr()) + (region[0].osd_header[0] + OSD_DATA_OFFSET(region[0].osd_format)) * 32+j*nRegionWidth / 4+i);
  766.             pBtmLine = (BYTE *)(((BYTE *)get_osdbuf_baseptr()) + (region[0].osd_header[1] + OSD_DATA_OFFSET(region[0].osd_format)) * 32+j*nRegionWidth / 4+i);
  767.             if((pTopLine[k + nStartLoc]&0x03) == SrcColIndex)
  768.                 pTopLine[k + nStartLoc]+=m;
  769.             if((pTopLine[k + nStartLoc]&0x0c ) == (SrcColIndex<<2))
  770.                 pTopLine[k + nStartLoc]+=m*4;
  771.             if((pTopLine[k + nStartLoc]&0x30)  == (SrcColIndex<<4))
  772.                 pTopLine[k + nStartLoc]+=m*16;
  773.             if((pTopLine[k + nStartLoc]&0xc0)  == (SrcColIndex<<6))
  774.                 pTopLine[k + nStartLoc]+=m*64;
  775.             if(p_scan==0)
  776.             {
  777.                 if((pBtmLine[k + nStartLoc]&0x03) == SrcColIndex)
  778.                     pBtmLine[k + nStartLoc]+=m;
  779.                 if((pBtmLine[k + nStartLoc]&0x0c ) == (SrcColIndex<<2))
  780.                     pBtmLine[k + nStartLoc]+=m*4;
  781.                 if((pBtmLine[k + nStartLoc]&0x30)  == (SrcColIndex<<4))
  782.                     pBtmLine[k+ nStartLoc]+=m*16;
  783.                 if((pBtmLine[k + nStartLoc]&0xc0)  == (SrcColIndex<<6))
  784.                     pBtmLine[k + nStartLoc]+=m*64;
  785.             }
  786.         }
  787.         i = i+step;
  788.     }
  789. }
  790. #else
  791. void ColorDisplay(void)
  792. {}
  793. #endif
  794. void DrawOsdScreenSaver(UINT32 xPos, UINT32 yPos)
  795. {   
  796.     BYTE    *pTopLine, *pBtmLine;
  797.     UINT32  nStartLoc;
  798.     UINT16  i, j, k;
  799.     UINT16  nSaverWidth, nSaverHigh;
  800.     UINT16  nRegionWidth = region[0].osd_w * 4; // pixel
  801.     UINT16  nSpace;
  802.     osd_tog_region(0, OSD_ON);
  803.     //initialize buffer start
  804.     pTopLine = (BYTE *)(((BYTE *)get_osdbuf_baseptr()) + (region[0].osd_header[0] + OSD_DATA_OFFSET(region[0].osd_format)) * 32);
  805.     pBtmLine = (BYTE *)(((BYTE *)get_osdbuf_baseptr()) + (region[0].osd_header[1] + OSD_DATA_OFFSET(region[0].osd_format)) * 32);
  806.     nStartLoc = (yPos * nRegionWidth / 8) + (xPos / 4);
  807. //  printf("get_osdbuf_baseptr = %xn", get_osdbuf_baseptr());
  808.     //get saver information
  809.     nSaverWidth = OSD_SAVER_W; // in pixel
  810.     nSaverHigh = OSD_SAVER_H; // interlace mode
  811.     nSpace = nSaverWidth / 4; // in byte
  812.     if (p_scan == 0)
  813.         nSaverHigh /= 2;
  814.     for (j = 0; j < nSaverHigh; j++)
  815.     {
  816.         for (i = 0; i < nSpace; i++)
  817.         {
  818.             if (i % 2 == 0)
  819.                 pTopLine[i + nStartLoc] = Pattern_Saver[(gpImgAddr[i / 2] >> 4)];
  820.             else
  821.                 pTopLine[i + nStartLoc] = Pattern_Saver[(gpImgAddr[i / 2] & 0x0f)];
  822.         }
  823.         pTopLine += nRegionWidth / 4;
  824.         if (p_scan == 0)
  825.         {
  826.             if (nSpace % 2 == 1)
  827.             {
  828.                 k = 1;
  829.                 pBtmLine[nStartLoc] = Pattern_Saver[(gpImgAddr[nSpace / 2] & 0x0f)];
  830.                 gpImgAddr += (nSaverWidth / 8 + 1);
  831.             }
  832.             else
  833.             {
  834.                 k = 0;
  835.                 gpImgAddr += (nSaverWidth / 8);
  836.             }
  837.             
  838.             for (i = k; i < nSpace; i++)
  839.             {
  840.                 if ((i - k) % 2 == 0)
  841.                     pBtmLine[i + nStartLoc] = Pattern_Saver[(gpImgAddr[(i - k) / 2] >> 4)];
  842.                 else
  843.                     pBtmLine[i + nStartLoc] = Pattern_Saver[(gpImgAddr[(i - k) / 2] & 0x0f)];
  844.             }
  845.             pBtmLine += nRegionWidth / 4;
  846.         }
  847.         gpImgAddr += (nSaverWidth / 8);
  848.     }
  849.     timeout_osd[0] = 0;
  850. }
  851. void safe_srn_cooking2()
  852. {
  853.   if(safe_state==SAFE_INIT)
  854.   {
  855.     InitOsdScreenSaver();
  856.     safe_state = SAFE_DISPLAYING;
  857.   }
  858. /*
  859.   // move to DoSyncJob()
  860.   else if(safe_state == SAFE_DISPLAYING)
  861.   {
  862.       DisplayScreenSaver();
  863.   }
  864. */
  865. }
  866. void safe_srn_on(void)
  867. {
  868.   if (safeForceEnter==1)
  869.   {
  870.     //force to enter screen saver
  871.     safeForceEnter = 2;
  872.     safe_on = 1;
  873.     safeMode = 1; //only support type-1         
  874.     safe_state = SAFE_INIT;     
  875.   }else if (!safe_on)
  876.   { //system is active
  877.     unsigned diff,rtc;
  878.     
  879.     rtc = get_rtc_val();
  880.     diff=rtc-save_srn_start_t;
  881.        safeMode = setup_GetSSaveType(); //Get screen type
  882.     #ifdef QSI_SETUP_MENU//liweihua for SQI setup menu 2004-6-15
  883.     extern UINT16 safe_wait_time;
  884.     if (diff > safe_wait_time)
  885.     #else
  886.     #ifdef EASTWIN
  887.     if ((diff > SAFE_WAIT_TIME)&&(!bIS_LOWBAT)) // Kevin Sep 10,04 
  888.     #else
  889.     if (diff > SAFE_WAIT_TIME)
  890.     #endif
  891.     #endif
  892.     {
  893.        save_srn_start_t = rtc;
  894.        #ifdef SDRAM_16Mb_Mode   // 2004/08/26 yltseng
  895.        #ifndef SUPPORT_OTHER_FILES_SSCREEN //Jack added 04/11/16
  896.        if(safeMode) //linrc add for if screen save is OFF and is stop, no OSD display affter 
  897.        { // savf wait time is arrive.....2005-1-19 17:21
  898.        regs0->osd_base_addr=JPEG_YA;
  899.        }
  900.        #endif
  901.        #endif
  902.        
  903.        if ( (full_scrn&SETUP) || (full_scrn&CUSTM) ) 
  904.        {
  905.           setup_save_exit();
  906.        }
  907. #ifdef NEWSTYLE_WINDOW  // alan, 2003/8/11 09:11PM
  908.        if (full_scrn&MESSAGE)   // alan, 2003/8/11 09:11PM
  909.        {
  910.             exit_browse_func();
  911.        }
  912. #endif
  913.        //safeMode = setup_GetSSaveType(); //Get screen type
  914.        //printf("safeMode=%dn", safeMode);
  915.        if (safeMode>0)
  916.        {
  917.          safeMode = 1; //only support type-1                    
  918.          safe_on  = 1;
  919.          safe_state = SAFE_INIT;
  920.          old_t_disp = t_disp;
  921.          if (t_disp>0) DispFadeOut();
  922.          
  923.          if (full_scrn) 
  924.             full_scrn=0;            
  925.        }
  926.      } 
  927.   }
  928.   else
  929.   {
  930.      if(safeMode==1) safe_srn_cooking2();
  931.      else safe_on = 1;
  932.   }
  933. }
  934. //force to enter screen saver
  935. void safe_srn_forceON(void)
  936. {
  937.     //printf("safe_srn_forceONn");
  938.     safeForceEnter=1;
  939. }
  940. void safe_srn_forceOFF(void)
  941. {
  942. #if (defined(DVB_SETUP)&&!defined(SUPPORT_DVD_OSD)&&defined(OSD_SCREEN_SAVER)) //xsyan add
  943.     DISABLE_OSD();
  944. #endif
  945.     //printf("safe_srn_forceOFFn");
  946.     safeForceEnter=0;
  947. }
  948. void safe_srn_off(void)
  949. {
  950. #if (defined(DVB_SETUP)&&!defined(SUPPORT_DVD_OSD)&&defined(OSD_SCREEN_SAVER)) //xsyan add
  951.     DISABLE_OSD();
  952. #endif
  953.     
  954.     if (safeForceEnter==2) return;
  955.     
  956.     if (safe_on==1)
  957.     {
  958.         safe_on=0;
  959.         safe_state = SAFE_INIT;
  960. #ifdef OSD_SCREEN_SAVER
  961.         ExitOsdScreenSaver();
  962.       #ifdef SDRAM_16Mb_Mode   // 2004/11/26 lyc  when  safe_srn_on function regs0->osd_base_addr = JPEG_YA 
  963.          regs0->osd_base_addr = regs0->osdya;  //now addr reset;
  964.       #endif  
  965. #else
  966.         ShowTitle();
  967.         sys_cmd=0;//2-8-21 21:54
  968. #endif
  969.         
  970. #ifdef CD_PLAYER//liweihua 2003-9-18
  971.     if(cd_type_loaded==CDDA)
  972.     {
  973.         osd_init_cdplayer();
  974. #ifdef VIRTUAL_KEYBOARD//liweihua 2003-9-18
  975.     osd_draw_virtual_keyboard(0,0,4);   
  976.     hl_keyboard_button(KeyID);
  977.         full_scrn |= KEYBOARD;
  978.     #endif
  979.     }
  980. #endif
  981. #ifdef DYNAMIC_SPECTRUM//zhaoyanhua add 03-11-3 19:29
  982.     //if(bEqDisplay)
  983.     {//terry,mark it,2003/12/24 10:32PM
  984.         //Show3dspectrum();
  985.     }
  986. #endif
  987.     }
  988. }
  989. extern BYTE safe_state;
  990. void DoSyncJob(void)
  991. {
  992.     /*
  993.     if ((play_state == VCD_STATE_IDLE) ||
  994.         (play_state == VCD_STATE_STOP) ||
  995.         (play_state == VCD_STATE_OPEN) ||
  996.         (play_state == VCD_STATE_PAUSE))
  997.     {
  998.         //safe_srn_on();
  999.     }
  1000.     */
  1001.     #ifdef OSD_SCREEN_SAVER
  1002.     if (safe_state == 1)
  1003.         DisplayScreenSaver();
  1004.     #endif
  1005.     
  1006.     #ifdef MP3_NO_DISPLAY   //2004-4-23 12:50张宇M
  1007.     if (t_disp==1)
  1008.     mp3_noshow_diplay();
  1009.     #endif
  1010. }
  1011. #if (defined(DVB_SETUP)&&!defined(SUPPORT_DVD_OSD)&&defined(OSD_SCREEN_SAVER)) //xsyan add
  1012. static void enable_osd_saver(void)
  1013. {
  1014.      regs0->osd_tlink_addr  = region[0].osd_header[0];
  1015.          regs0->osd_blink_addr  = region[0].osd_header[1];
  1016.          regs0->osd_en= 1;
  1017. }
  1018. #endif