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

DVD

开发平台:

C/C++

  1. /*****************************************************
  2. Creater: Terry
  3. Date   : 2001/5/14 05:30PM
  4. Description: Program menu using
  5. *****************************************************/
  6. //#define MONE_PROG
  7. extern UINT16 mp3_file_count(void);
  8. void FSGUI_cal_dir_file(UINT16 *dir,UINT16 *file,UINT16 iSelect);
  9. void FSGUI_cal_2_file(UINT16 *iSelect,UINT16 dir,UINT16 file);
  10. #ifdef DVD_PROG_AUTO_CURSOR_RIGHT //Maoyong 2004.02.10
  11. BYTE tt_input_num_count = 0;
  12. /*Function Purpose:  Do checking for input TT in DVD Program.
  13.   for a reasonal operation: 
  14.   (1)when TT>=10, 
  15.             a:input 2 should auto right shift HL cursor, 
  16.             b:input 02 or 10 should auto right shift HL cursor, too,
  17.             c: input 1 should not
  18.   (2)when TT<10,
  19.             a number > 0, should auto right shift HL cursor, otherwise not
  20.   
  21.   Note:    TT value = prog[y][0]
  22.   
  23.   RETURN:  1. do right shift
  24.            0. not do             
  25. */
  26. BYTE check_cursor_shift_right(void)
  27. {
  28. UINT8 x, y;
  29. x=index_x%2;
  30. y=index_y+MAX_NM_Y*(index_x/2)-1;
  31. if( (pDSV->dTT_SRP_Ns <10) && (prog[y][0] > 0) )
  32. {
  33. tt_input_num_count = 0;
  34. return 1;
  35. }
  36. else //TT number > 10
  37. {
  38. tt_input_num_count++;
  39. if(tt_input_num_count == 1)
  40. {
  41. if( (prog[y][0] < 10)&& (prog[y][0] > (pDSV->dTT_SRP_Ns/10)) )//for (1)a
  42. {
  43. tt_input_num_count = 0;
  44. return 1;
  45. }
  46. else   //for (1)c
  47. return 0;
  48. }
  49. else              //for (1)b
  50. {
  51. tt_input_num_count = 0;
  52. if(prog[y][0] >0)
  53. return 1;
  54. else
  55. return 0;
  56. }
  57. }
  58. }
  59. void clear_tt_input_num_count(void)
  60. {
  61. tt_input_num_count = 0;
  62. }
  63. #endif
  64. #ifdef SUPPORT_OSDID3//suqiaoli add 2004-3-26 
  65. extern void osd_init_OSDID3(void);
  66. extern void show_id3(void);
  67. #endif
  68. #ifdef SUPPORT_MP4_SUBTITLE  // David 2004-5-12
  69. extern void osd_init_OSDSRT(void);
  70. #endif
  71. #ifdef SETUP_PROGRAM_IN_PLACE_UNDER_16M
  72. #ifdef NEW_STYLE_SETUP
  73. static inline void ProgOffForNewStyleSetup()
  74. {   // 2004/11/26 yltseng
  75.     #ifdef SDRAM_16Mb_Mode
  76.     
  77.     #include "memmap0.h"
  78. #include "navdata.h"
  79. regs0->osd_base_addr=regs0->osdya;
  80. osd_init();
  81. if( (prog_state == 2)||(prog_state == 6))
  82. {
  83. if ((cd_type_loaded == CDROM) && (pFsJpeg->gifsFuncBtn == 2))
  84. {
  85. prog_state=255;
  86. ircmd_post_func(CMD_FUNC | CMD_FUNC_PLAY);          
  87. else 
  88. {
  89. if ((prog_state != 6)&& (prog_state != 3))
  90.         ircmd_resume();
  91. prog_state=0;
  92. }         
  93.         OSD1000ISP_STATUS(OSDISP_PROG_CNL, OSDIR_PROGRAM);
  94. psprintf(RegionValStr[REGION1], "");
  95. PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);                  
  96. }
  97.     #else
  98.     
  99. if( (old_play_state==VCD_STATE_NORMAL)&&(play_state==VCD_STATE_PAUSE) ) // add by shawn 20020218
  100. ircmd_play();
  101.         #ifdef MP3_STOP_IN_GUI_START//zhaoyanhua add 03-10-14 11:39 keep inital state for MP3
  102. else if((Is_MP3_STATE()) && (old_play_state == VCD_STATE_MP3_FILELIST))
  103. {
  104. play_state = old_play_state;
  105. }
  106.         #endif
  107.         
  108.     #endif
  109. }
  110. #else
  111. static inline void ProgOffForNormal()
  112. {   // 2004/11/26 yltseng
  113.     #ifdef SDRAM_16Mb_Mode
  114.     osd_disable();
  115.     
  116.     extern UINT8   g_uiOSDStatus;       // 2005/01/14 yltseng
  117.     g_uiOSDStatus = OSD_FULL_SCREEN_STATUS_NONE;
  118.     regs0->osd_base_addr=regs0->osdya;
  119.         
  120.         #ifdef JPEG_PAUSE_WHEN_SETUP    // 2004/12/30 yltseng
  121.     if( Is_JPEG_SlideMode() )
  122.     {
  123.         play_state = VCD_STATE_NORMAL;
  124.         PrintOsdMsg( STR_OS_SEQUENCE, REGION1, 1, 0 );
  125.     }
  126.         #endif
  127.     #endif
  128.     
  129. if( (old_play_state==VCD_STATE_NORMAL)&&(play_state==VCD_STATE_PAUSE) ) // add by shawn 20020218
  130. ircmd_play();
  131.     #ifdef MP3_STOP_IN_GUI_START//zhaoyanhua add 03-10-14 11:39 keep inital state for MP3
  132. else if((Is_MP3_STATE()) && (old_play_state == VCD_STATE_MP3_FILELIST))
  133. {
  134. play_state = old_play_state;
  135. }
  136.     #endif
  137. }
  138. #endif
  139. void prog_func_off()
  140. {
  141. #ifdef DVD_PROG_AUTO_CURSOR_RIGHT //Maoyong 2004.02.24
  142. clear_tt_input_num_count();
  143. #endif
  144.     if(prog_cnt==0) //uncomplete program no
  145.     {
  146.       ircmd_cancel(1);//terry 1011
  147.     }    
  148. #ifdef CD_PLAYER        //liweihua add 2003-9-11
  149.     if(cd_type_loaded == CDDA)
  150.         osd_init_cdplayer();
  151.     else
  152.         osd_init();
  153. #else
  154.     osd_init();
  155. #endif
  156.     full_scrn = 0;      
  157. // 2004/11/26 yltseng
  158. #ifdef NEW_STYLE_SETUP //zhaoyanhua add 2003-8-26 19:03
  159.     ProgOffForNewStyleSetup();
  160. #else
  161.     ProgOffForNormal();
  162. #endif
  163. #ifdef SUPPORT_OSDID3//liweihua add 2004-1-13 
  164.     if(Is_MP3_STATE()&& (play_state != VCD_STATE_STOP))
  165.     {
  166.         osd_init_OSDID3();
  167.         show_id3();
  168.     }
  169. #endif
  170. #ifdef SUPPORT_MP4_SUBTITLE  // David 2004-5-12
  171.     if (GetCurrentFileType() ==  CDROM_MP4)
  172.     {
  173.         osd_init_OSDSRT();
  174.     }
  175. #endif
  176. }
  177. #else   // SETUP_PROGRAM_IN_PLACE_UNDER_16M
  178. void prog_func_off()
  179. {
  180. #ifdef DVD_PROG_AUTO_CURSOR_RIGHT //Maoyong 2004.02.24
  181. clear_tt_input_num_count();
  182. #endif
  183. #ifdef CD_PLAYER        //liweihua add 2003-9-11
  184.     if(cd_type_loaded == CDDA)
  185.         osd_init_cdplayer();
  186.     else
  187.         osd_init();
  188. #else
  189. osd_init();
  190. #endif
  191.     if(prog_cnt==0) //uncomplete program no
  192.     {
  193.       ircmd_cancel(1);//terry 1011
  194.     }    
  195.     
  196.     full_scrn = 0;        
  197. #ifdef SDRAM_16Mb_Mode  
  198. {
  199.     #include "memmap0.h"
  200. #include "navdata.h"
  201. regs0->osd_base_addr=regs0->osdya;
  202. osd_init();
  203. #ifdef NEW_STYLE_SETUP //zhaoyanhua add 2003-8-26 19:03
  204. if( (prog_state == 2)||(prog_state == 6))
  205. #else
  206. if (prog_state==2)
  207. #endif
  208. {
  209. if ((cd_type_loaded == CDROM) && (pFsJpeg->gifsFuncBtn == 2))
  210. {
  211. prog_state=255;
  212. ircmd_post_func(CMD_FUNC | CMD_FUNC_PLAY);          
  213. } else {
  214. #ifdef NEW_STYLE_SETUP//zhaoyanhua add 2003-8-26 19:02
  215. if ((prog_state != 6)&& (prog_state != 3))
  216. ircmd_resume();
  217. prog_state=0;
  218. #else
  219. prog_state=0;
  220. ircmd_resume();
  221. #endif
  222. }         
  223. psprintf(RegionValStr[REGION1], "");
  224. PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);                  
  225. }
  226. }
  227. #else
  228. {
  229. if( (old_play_state==VCD_STATE_NORMAL)&&(play_state==VCD_STATE_PAUSE) ) // add by shawn 20020218
  230. ircmd_play();
  231. #ifdef MP3_STOP_IN_GUI_START//zhaoyanhua add 03-10-14 11:39 keep inital state for MP3
  232. else if((Is_MP3_STATE()) && (old_play_state == VCD_STATE_MP3_FILELIST))
  233. {
  234. play_state = old_play_state;
  235. }
  236. #endif
  237. }
  238. #endif
  239. #ifdef SUPPORT_OSDID3//liweihua add 2004-1-13 
  240.     if(Is_MP3_STATE()&& (play_state != VCD_STATE_STOP))
  241.     {
  242.         osd_init_OSDID3();
  243.         show_id3();
  244.     }
  245. #endif
  246. #ifdef SUPPORT_MP4_SUBTITLE  // David 2004-5-12
  247.     if (GetCurrentFileType() ==  CDROM_MP4)
  248.     {
  249.         osd_init_OSDSRT();
  250.     }
  251. #endif
  252. }
  253. #endif  // SETUP_PROGRAM_IN_PLACE_UNDER_16M
  254. void prog_func_clear(void)
  255. {
  256. UINT8 i;
  257. for(i=0;i<=SHOW_PROG_NO;i++)
  258. {
  259. prog[i][0]=0;
  260. prog[i][1]=0;
  261. }
  262. index_y=2;
  263. index_x=0;
  264. prog_cnt = 0;
  265. }
  266. int is_clear_pos(void)//2002-4-19 1:53
  267. {
  268. int ret=0;
  269. if(prog_item[page][index_y][0]==SET_FUNC)
  270. {
  271. #ifndef PROG_12_ITEMS //Jeff 20020925
  272. if(prog_item[page][index_y][index_x/2+1]==STR_OS_CLEAR)
  273. #else
  274. if(prog_item[page][index_y][index_x/2+2]==STR_OS_CLEAR)
  275. #endif
  276. {
  277. ret=1;
  278. }
  279. }
  280. return ret;
  281. }
  282. void prog_func_select(void)
  283. {
  284. #ifdef DVD_PROG_AUTO_CURSOR_RIGHT //Maoyong 2004.02.24
  285. clear_tt_input_num_count();
  286. #endif
  287. if(prog_item[page][index_y][0] == SET_FUNC)
  288. {
  289. #ifdef PROG_12_ITEMS
  290. if (prog_item[page][index_y][index_x / 2 + 2] == STR_OS_CLEAR)
  291. {
  292. prog_func_clear();
  293. ShowProgPage();
  294. }
  295. else if (prog_item[page][index_y][index_x / 2 + 2] == STR_OS_PLAY)
  296. ircmd_play();
  297. #else
  298. if (prog_item[page][index_y][index_x / 2 + 1] == STR_OS_CLEAR)
  299. {
  300. prog_func_clear();
  301. ShowProgPage();
  302. }
  303. else if (prog_item[page][index_y][index_x / 2 + 1] == STR_OS_PLAY)
  304. ircmd_play();
  305. #endif
  306. }
  307. }
  308. void prog_func_play(void)
  309. {
  310. UINT8 i;
  311. #ifdef MONE_PROG
  312. printf("prog_func_play, inn");
  313. #endif
  314. prog_cnt=0;
  315. for(i=0;i<=SHOW_PROG_NO;i++)
  316. {
  317. //if (offset == 3) { //Jeff 20010808
  318. if (cd_type_loaded == CDROM) { //Jeff 20010914
  319. if  ((prog[i][0] >= 1) && (prog[i][0] <=mp3_file_count()))
  320. {
  321. #ifdef MONE_PROG
  322. printf("i:%d Page:%d Item:%d sucessn", i, prog[i][0], prog[i][1]);
  323. #endif
  324. prog_cnt++;
  325. FSGUI_cal_dir_file(&prog[prog_cnt][0],&prog[prog_cnt][1],prog[i][0]);
  326. printf("prog[prog_cnt][0]:%d prog[prog_cnt][1]:%dn",prog[prog_cnt][0],prog[prog_cnt][1]);
  327. //prog[prog_cnt][0]=prog[i][0];
  328. //prog[prog_cnt][1]=prog[i][1];
  329. }
  330. else
  331. {
  332. #ifdef MONE_PROG
  333. printf("i:%d Page:%d Item:%d failn", i, prog[i][0], prog[i][1]);
  334. #endif
  335. }
  336. if (i > prog_cnt)
  337. {
  338. prog[i][0]=0;
  339. prog[i][1]=0;
  340. }
  341. }
  342. else //if (cd_type_loaded == CDROM)
  343. if(offset==2)
  344. {
  345. //printf("i:%x prog[i][0]:%xn",i,prog[i][0]);
  346. // if( (prog[i][0]>=cd_trk_lo)&&(prog[i][0]<=show_trk_num(cd_trk_hi)) )
  347. if ((prog[i][0] >= 1) && (prog[i][0] <= show_trk_num(cd_trk_hi))) // robert 030512 for some case cd_trk_lo = 2
  348. {
  349. prog_cnt++;
  350. prog[prog_cnt][0]=prog[i][0];
  351. //printf("prog_cnt:%xn",prog_cnt);
  352. }
  353. if(i>prog_cnt)
  354. prog[i][0]=0;
  355. }
  356. else //if(offset==2)
  357. {//dvd ,reference ChkPTTRange
  358. UINT8 tt=prog[i][0];
  359. UINT16 ptt=prog[i][1];
  360. #ifdef DVD_AUDIO
  361. UINT8  (*ChkRange)(UINT8*, UINT16*);
  362. if (dAMG_LSN) // alan, 2002/11/8 11:40