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

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. #ifdef SUPPORT_OSDID3//suqiaoli add 2004-3-26 
  8. extern void osd_init_OSDID3(void);
  9. extern void show_id3(void);
  10. #endif
  11. #ifdef SUPPORT_MP4_SUBTITLE  // David 2004-5-12
  12. extern void osd_init_OSDSRT(void);
  13. extern BYTE GetCurrentFileType(void);
  14. #endif
  15. #ifdef OSD_BMP_PROG
  16. //Note:some data about OSD_BMP_PROG,moved to prog_bmp.c
  17. //suqiaoli 2004-11-23 
  18. #include "prog_bmp.c"
  19. extern void ShowBmpProgSel(UINT8 mode);
  20. extern void ShowBmpProgPage(void);
  21. #endif
  22. #ifdef SETUP_PROGRAM_IN_PLACE_UNDER_16M
  23. #ifdef NEW_STYLE_SETUP
  24. static inline void ProgOffForNewStyleSetup()
  25. {   // 2004/11/26 yltseng
  26.     #ifdef SDRAM_16Mb_Mode
  27.     
  28.     #include "memmap0.h"
  29. #include "navdata.h"
  30. regs0->osd_base_addr=regs0->osdya;
  31. osd_init();
  32. if( (prog_state == 2)||(prog_state == 6))
  33. {
  34. if ((cd_type_loaded == CDROM) && (pFsJpeg->gifsFuncBtn == 2))
  35. {
  36. prog_state=255;
  37. ircmd_post_func(CMD_FUNC | CMD_FUNC_PLAY);          
  38. else 
  39. {
  40. if ((prog_state != 6)&& (prog_state != 3))
  41.         ircmd_resume();
  42. prog_state=0;
  43. }         
  44.         OSD1000ISP_STATUS(OSDISP_PROG_CNL, OSDIR_PROGRAM);
  45. psprintf(RegionValStr[REGION1], "");
  46. PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);                  
  47. }
  48.     #else
  49.     
  50. if( (old_play_state==VCD_STATE_NORMAL)&&(play_state==VCD_STATE_PAUSE) ) // add by shawn 20020218
  51. ircmd_play();
  52.         #ifdef MP3_STOP_IN_GUI_START//zhaoyanhua add 03-10-14 11:39 keep inital state for MP3
  53. else if((Is_MP3_STATE()) && (old_play_state == VCD_STATE_MP3_FILELIST))
  54. {
  55. play_state = old_play_state;
  56. }
  57.         #endif
  58.         
  59.     #endif
  60. }
  61. #else
  62. static inline void ProgOffForNormal()
  63. {   // 2004/11/26 yltseng
  64.     #ifdef SDRAM_16Mb_Mode
  65.     osd_disable();
  66.     
  67.     extern UINT8   g_uiOSDStatus;       // 2005/01/14 yltseng
  68.     g_uiOSDStatus = OSD_FULL_SCREEN_STATUS_NONE;
  69.     regs0->osd_base_addr=regs0->osdya;
  70.         #ifdef JPEG_PAUSE_WHEN_SETUP    // 2004/12/30 yltseng
  71.     if( Is_JPEG_SlideMode() )
  72.     {
  73.         play_state = VCD_STATE_NORMAL;
  74.         PrintOsdMsg( STR_OS_SEQUENCE, REGION1, 1, 0 );
  75.     }
  76.         #endif
  77.     #endif
  78.     
  79. if( (old_play_state==VCD_STATE_NORMAL)&&(play_state==VCD_STATE_PAUSE) ) // add by shawn 20020218
  80. ircmd_play();
  81.     #ifdef MP3_STOP_IN_GUI_START//zhaoyanhua add 03-10-14 11:39 keep inital state for MP3
  82. else if((Is_MP3_STATE()) && (old_play_state == VCD_STATE_MP3_FILELIST))
  83. {
  84. play_state = old_play_state;
  85. }
  86.     #endif
  87. }
  88. #endif
  89. void prog_func_off()
  90. {
  91.     if(prog_cnt==0) //uncomplete program no
  92.     {
  93.         ircmd_cancel(1);//terry 1011
  94.     }    
  95. #ifdef CD_PLAYER        //liweihua add 2003-9-11
  96.     if(cd_type_loaded == CDDA)
  97.         osd_init_cdplayer();
  98.     else
  99.         osd_init();
  100. #else
  101.     osd_init();
  102. #endif
  103.     full_scrn = 0; 
  104. // 2004/11/26 yltseng
  105. #ifdef NEW_STYLE_SETUP //zhaoyanhua add 2003-8-26 19:03
  106.     ProgOffForNewStyleSetup();
  107. #else
  108.     ProgOffForNormal();
  109. #endif
  110. #ifdef SUPPORT_OSDID3//liweihua add 2004-1-13 
  111.     if(Is_MP3_STATE()&& (play_state != VCD_STATE_STOP))
  112.     {
  113.         osd_init_OSDID3();
  114.         show_id3();
  115.     }
  116. #endif
  117. #ifdef SUPPORT_MP4_SUBTITLE  // David 2004-5-12
  118.     if (GetCurrentFileType() ==  CDROM_MP4)
  119.     {
  120.         osd_init_OSDSRT();
  121.     }
  122. #endif
  123. }
  124. #else   // SETUP_PROGRAM_IN_PLACE_UNDER_16M
  125. void prog_func_off()
  126. {
  127. #ifdef CD_PLAYER        //liweihua add 2003-9-11
  128.     if(cd_type_loaded == CDDA)
  129.         osd_init_cdplayer();
  130.     else
  131.         osd_init();
  132. #else
  133.     osd_init();
  134. #endif
  135.     if(prog_cnt==0) //uncomplete program no
  136.     {
  137.       ircmd_cancel(1);//terry 1011
  138.     }    
  139.     
  140.     full_scrn = 0;        
  141. #ifdef SDRAM_16Mb_Mode  
  142. {
  143.     #include "memmap0.h"
  144. #include "navdata.h"
  145. regs0->osd_base_addr=regs0->osdya;
  146. osd_init();
  147. #ifdef NEW_STYLE_SETUP //zhaoyanhua add 2003-8-26 19:03
  148. if( (prog_state == 2)||(prog_state == 6))
  149. #else
  150. if (prog_state==2)
  151. #endif//#ifdef NEW_STYLE_SETUP //zhaoyanhua add 2003-8-26 19:03
  152. {
  153. if ((cd_type_loaded == CDROM) && (pFsJpeg->gifsFuncBtn == 2))
  154. {
  155. prog_state=255;
  156. ircmd_post_func(CMD_FUNC | CMD_FUNC_PLAY);          
  157. else 
  158. {
  159. #ifdef NEW_STYLE_SETUP//zhaoyanhua add 2003-8-26 19:02
  160. if ((prog_state != 6)&& (prog_state != 3))
  161.         ircmd_resume();
  162. prog_state=0;
  163. #else
  164. prog_state=0;
  165. ircmd_resume();
  166. #endif//end NEW_STYLE_SETUP
  167. }         
  168.             OSD1000ISP_STATUS(OSDISP_PROG_CNL, OSDIR_PROGRAM);
  169. psprintf(RegionValStr[REGION1], "");
  170. PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);                  
  171. }
  172. }
  173. #else
  174. {
  175. if( (old_play_state==VCD_STATE_NORMAL)&&(play_state==VCD_STATE_PAUSE) ) // add by shawn 20020218
  176. ircmd_play();
  177. #ifdef MP3_STOP_IN_GUI_START//zhaoyanhua add 03-10-14 11:39 keep inital state for MP3
  178. else if((Is_MP3_STATE()) && (old_play_state == VCD_STATE_MP3_FILELIST))
  179. {
  180. play_state = old_play_state;
  181. }
  182. #endif
  183. }
  184. #endif
  185. #ifdef SUPPORT_OSDID3//liweihua add 2004-1-13 
  186.     if(Is_MP3_STATE()&& (play_state != VCD_STATE_STOP))
  187.     {
  188.         osd_init_OSDID3();
  189.         show_id3();
  190.     }
  191. #endif
  192. #ifdef SUPPORT_MP4_SUBTITLE  // David 2004-5-12
  193.     if (GetCurrentFileType() ==  CDROM_MP4)
  194.     {
  195.         osd_init_OSDSRT();
  196.     }
  197. #endif
  198. }
  199. #endif  // SETUP_PROGRAM_IN_PLACE_UNDER_16M
  200. void prog_func_clear(void)
  201. {
  202. UINT8 i;
  203. for(i=0;i<=SHOW_PROG_NO;i++)
  204. {
  205. prog[i][0]=0;
  206. prog[i][1]=0;
  207. }
  208. index_y=2;
  209. index_x=0;
  210. prog_cnt = 0;
  211. #ifdef OSD_BMP_PROG
  212. flag_data = 0;
  213. #endif
  214. }
  215. int is_clear_pos(void)//2002-4-19 1:53
  216. {
  217. int ret=0;
  218. if(prog_item[page][index_y][0]==SET_FUNC)
  219. {
  220. #ifndef PROG_12_ITEMS //Jeff 20020925
  221. if(prog_item[page][index_y][index_x/2+1]==STR_OS_CLEAR)
  222. #else
  223. if(prog_item[page][index_y][index_x/2+2]==STR_OS_CLEAR)
  224. #endif
  225. {
  226. ret=1;
  227. }
  228. }
  229. return ret;
  230. }
  231. void prog_func_select(void)
  232. {
  233. if(prog_item[page][index_y][0] == SET_FUNC)
  234. {
  235. #ifdef PROG_12_ITEMS
  236. if (prog_item[page][index_y][index_x / 2 + 2] == STR_OS_CLEAR)
  237. {
  238. prog_func_clear();
  239. ShowProgPage();
  240. }
  241. else if (prog_item[page][index_y][index_x / 2 + 2] == STR_OS_PLAY)
  242. ircmd_play();
  243. #else
  244. if (prog_item[page][index_y][index_x / 2 + 1] == STR_OS_CLEAR)
  245. {
  246.             OSD1000ISP_STATUS(OSDISP_PROG_CLEAR, OSDIR_PROGRAM);
  247. prog_func_clear();
  248. ShowProgPage();
  249. }
  250. else if (prog_item[page][index_y][index_x / 2 + 1] == STR_OS_PLAY)
  251. ircmd_play();
  252. #endif
  253. }
  254. }
  255. void prog_func_play(void)
  256. {
  257. UINT8 i;
  258. #ifdef MONE_PROG
  259. printf("prog_func_play, inn");
  260. #endif
  261. prog_cnt=0;
  262. for(i=0;i<SHOW_PROG_NO;i++)
  263. {
  264. //if (offset == 3) { //Jeff 20010808
  265. if (cd_type_loaded == CDROM) { //Jeff 20010914
  266. BYTE    iPage = prog[i][0];
  267. BYTE    iItem = prog[i][1];
  268. if ( iPage && iItem && FSChkProg(iPage, iItem) )
  269. {
  270. #ifdef MONE_PROG
  271. printf("i:%d Page:%d Item:%d sucessn", i, prog[i][0], prog[i][1]);
  272. #endif
  273. prog_cnt++;
  274. prog[prog_cnt][0]=prog[i][0];
  275. prog[prog_cnt][1]=prog[i][1];
  276. }
  277. else
  278. {
  279. #ifdef MONE_PROG
  280. printf("i:%d Page:%d Item:%d failn", i, prog[i][0], prog[i][1]);
  281. #endif
  282. }
  283. if (i > prog_cnt)
  284. {
  285. prog[i][0]=0;
  286. prog[i][1]=0;
  287. }
  288. }
  289. else //if (cd_type_loaded == CDROM)
  290. if(offset==2)
  291. {
  292. //printf("i:%x prog[i][0]:%xn",i,prog[i][0]);
  293. // if( (prog[i][0]>=cd_trk_lo)&&(prog[i][0]<=show_trk_num(cd_trk_hi)) )
  294. if ((prog[i][0] >= 1) && (prog[i][0] <= show_trk_num(cd_trk_hi))) // robert 030512 for some case cd_trk_lo = 2
  295. {
  296. prog_cnt++;
  297. prog[prog_cnt][0]=prog[i][0];
  298. //printf("prog_cnt:%xn",prog_cnt);
  299. }
  300. if(i>prog_cnt)
  301. prog[i][0]=0;
  302. }
  303. else //if(offset==2)
  304. {//dvd ,reference ChkPTTRange
  305. UINT8 tt=prog[i][0];
  306. UINT16 ptt=prog[i][1];
  307. #ifdef DVD_AUDIO
  308. UINT8  (*ChkRange)(UINT8*, UINT16*);
  309. if (dAMG_LSN) // alan, 2002/11/8 11:40