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

📄 prog_mp3dir.c

📁 Sunplus 8202S source code.
💻 C
字号:
/*****************************************************\
Creater: Terry
Date   : 2001/5/14 05:30PM
Description: Program menu using
\*****************************************************/

//#define MONE_PROG
extern UINT16 mp3_file_count(void);
void FSGUI_cal_dir_file(UINT16 *dir,UINT16 *file,UINT16 iSelect);
void FSGUI_cal_2_file(UINT16 *iSelect,UINT16 dir,UINT16 file);

#ifdef DVD_PROG_AUTO_CURSOR_RIGHT	//Maoyong 2004.02.10
BYTE tt_input_num_count = 0;

/*Function Purpose:  Do checking for input TT in DVD Program.
  for a reasonal operation: 
  (1)when TT>=10, 
            a:input 2 should auto right shift HL cursor, 
            b:input 02 or 10 should auto right shift HL cursor, too,
            c: input 1 should not
  (2)when TT<10,
            a number > 0, should auto right shift HL cursor, otherwise not
  
  Note:    TT value = prog[y][0]
  
  RETURN:  1. do right shift
           0. not do             	
*/
BYTE check_cursor_shift_right(void)
{	
	UINT8 x, y;	
	
	x=index_x%2;
	y=index_y+MAX_NM_Y*(index_x/2)-1;
			
	if( (pDSV->dTT_SRP_Ns <10) && (prog[y][0] > 0) )
	{
		tt_input_num_count = 0;		
		return 1;
	}	
	else	//TT number > 10
	{
		tt_input_num_count++;
		if(tt_input_num_count == 1)
		{
			if( (prog[y][0] < 10)&& (prog[y][0] > (pDSV->dTT_SRP_Ns/10)) )//for (1)a
			{
				tt_input_num_count = 0;
				return 1;
			}
			else 								 //for (1)c		
				return 0;			
		}
		else						             //for (1)b								
		{			
			tt_input_num_count = 0;
			if(prog[y][0] >0)
				return 1;	
			else
				return 0;
		}		
	}	
}

void clear_tt_input_num_count(void)
{
	tt_input_num_count = 0;
}	
#endif

#ifdef SUPPORT_OSDID3//suqiaoli add 2004-3-26 
extern void osd_init_OSDID3(void);
extern void show_id3(void);
#endif

#ifdef SUPPORT_MP4_SUBTITLE  // David 2004-5-12
extern void osd_init_OSDSRT(void);
#endif

#ifdef SETUP_PROGRAM_IN_PLACE_UNDER_16M

#ifdef NEW_STYLE_SETUP

static inline void ProgOffForNewStyleSetup()
{   // 2004/11/26 yltseng
    #ifdef SDRAM_16Mb_Mode
    
    #include "memmap0.h"
	#include "navdata.h"
	
	regs0->osd_base_addr=regs0->osdya;
	osd_init();

	if( (prog_state == 2)||(prog_state == 6))
	{
		if ((cd_type_loaded == CDROM) && (pFsJpeg->gifsFuncBtn == 2))
		{		
			prog_state=255;
			ircmd_post_func(CMD_FUNC | CMD_FUNC_PLAY);          
		} 
		else 
		{
			if ((prog_state != 6)&& (prog_state != 3))
		        ircmd_resume();	
			prog_state=0;
		}    	    

        OSD1000ISP_STATUS(OSDISP_PROG_CNL, OSDIR_PROGRAM);

		psprintf(RegionValStr[REGION1], "");
		PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);                  
	}
	
    #else
    
	if( (old_play_state==VCD_STATE_NORMAL)&&(play_state==VCD_STATE_PAUSE) ) // add by shawn 20020218
		ircmd_play();
        #ifdef MP3_STOP_IN_GUI_START//zhaoyanhua add 03-10-14 11:39 keep inital state for MP3
	else if((Is_MP3_STATE()) && (old_play_state == VCD_STATE_MP3_FILELIST))
	{
		play_state = old_play_state;
	}
        #endif
        
    #endif
}

#else

static inline void ProgOffForNormal()
{   // 2004/11/26 yltseng
    #ifdef SDRAM_16Mb_Mode

    osd_disable();
    
    extern UINT8   g_uiOSDStatus;       // 2005/01/14 yltseng
    g_uiOSDStatus = OSD_FULL_SCREEN_STATUS_NONE;
    regs0->osd_base_addr=regs0->osdya;
        
        #ifdef JPEG_PAUSE_WHEN_SETUP    // 2004/12/30 yltseng
    if( Is_JPEG_SlideMode() )
    {
        play_state = VCD_STATE_NORMAL;
        PrintOsdMsg( STR_OS_SEQUENCE, REGION1, 1, 0 );
    }
        #endif
    #endif
    
	if( (old_play_state==VCD_STATE_NORMAL)&&(play_state==VCD_STATE_PAUSE) ) // add by shawn 20020218
		ircmd_play();
    #ifdef MP3_STOP_IN_GUI_START//zhaoyanhua add 03-10-14 11:39 keep inital state for MP3
	else if((Is_MP3_STATE()) && (old_play_state == VCD_STATE_MP3_FILELIST))
	{
		play_state = old_play_state;
	}
    #endif
}

#endif

void prog_func_off()
{
	#ifdef DVD_PROG_AUTO_CURSOR_RIGHT	//Maoyong 2004.02.24
	clear_tt_input_num_count();
	#endif

    if(prog_cnt==0) //uncomplete program no
    {
      ircmd_cancel(1);//terry 1011
    }    

#ifdef CD_PLAYER        //liweihua add 2003-9-11
    if(cd_type_loaded == CDDA)
        osd_init_cdplayer();
    else
        osd_init();
#else		
    osd_init();
#endif

    full_scrn = 0;      
// 2004/11/26 yltseng
#ifdef NEW_STYLE_SETUP //zhaoyanhua add 2003-8-26 19:03
    ProgOffForNewStyleSetup();
#else
    ProgOffForNormal();
#endif

#ifdef SUPPORT_OSDID3//liweihua add 2004-1-13 
    if(Is_MP3_STATE()&& (play_state != VCD_STATE_STOP))
    {
        osd_init_OSDID3();
        show_id3();
    }
#endif

#ifdef SUPPORT_MP4_SUBTITLE  // David 2004-5-12
    if (GetCurrentFileType() ==  CDROM_MP4)
    {
        osd_init_OSDSRT();
    }
#endif

}

#else   // SETUP_PROGRAM_IN_PLACE_UNDER_16M

void prog_func_off()
{
	#ifdef DVD_PROG_AUTO_CURSOR_RIGHT	//Maoyong 2004.02.24
	clear_tt_input_num_count();
	#endif

#ifdef CD_PLAYER        //liweihua add 2003-9-11
    if(cd_type_loaded == CDDA)
        osd_init_cdplayer();
    else
        osd_init();
#else		
			osd_init();
#endif

    if(prog_cnt==0) //uncomplete program no
    {
      ircmd_cancel(1);//terry 1011
    }    
    
    full_scrn = 0;        
#ifdef SDRAM_16Mb_Mode  
	{
	    #include "memmap0.h"
		#include "navdata.h"
		
		regs0->osd_base_addr=regs0->osdya;
		osd_init();
		
		#ifdef NEW_STYLE_SETUP //zhaoyanhua add 2003-8-26 19:03
		if( (prog_state == 2)||(prog_state == 6))
		#else
		if (prog_state==2)
		#endif
		{
			if ((cd_type_loaded == CDROM) && (pFsJpeg->gifsFuncBtn == 2))
			{		
				prog_state=255;
				ircmd_post_func(CMD_FUNC | CMD_FUNC_PLAY);          
			} else {
				#ifdef NEW_STYLE_SETUP//zhaoyanhua add 2003-8-26 19:02
				if ((prog_state != 6)&& (prog_state != 3))
				ircmd_resume();	
				prog_state=0;
				#else
				prog_state=0;
				ircmd_resume();	
				#endif
			}    	    
			psprintf(RegionValStr[REGION1], "");
			PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);                  
		}
	}
#else
	{
		if( (old_play_state==VCD_STATE_NORMAL)&&(play_state==VCD_STATE_PAUSE) ) // add by shawn 20020218
			ircmd_play();
	#ifdef MP3_STOP_IN_GUI_START//zhaoyanhua add 03-10-14 11:39 keep inital state for MP3
		else if((Is_MP3_STATE()) && (old_play_state == VCD_STATE_MP3_FILELIST))
		{
			play_state = old_play_state;
		}
	#endif
	}
#endif
#ifdef SUPPORT_OSDID3//liweihua add 2004-1-13 
    if(Is_MP3_STATE()&& (play_state != VCD_STATE_STOP))
    {
        osd_init_OSDID3();
        show_id3();
    }
#endif

#ifdef SUPPORT_MP4_SUBTITLE  // David 2004-5-12
    if (GetCurrentFileType() ==  CDROM_MP4)
    {
        osd_init_OSDSRT();
    }
#endif

}

#endif  // SETUP_PROGRAM_IN_PLACE_UNDER_16M

void prog_func_clear(void)
{
	UINT8 i;
	for(i=0;i<=SHOW_PROG_NO;i++)
	{
		prog[i][0]=0;
		prog[i][1]=0;
	}
	index_y=2;
	index_x=0;
	
	prog_cnt = 0;
}



int is_clear_pos(void)//2002-4-19 1:53
{
	int ret=0;
	if(prog_item[page][index_y][0]==SET_FUNC)
	{
#ifndef PROG_12_ITEMS //Jeff 20020925
		if(prog_item[page][index_y][index_x/2+1]==STR_OS_CLEAR)
#else
		if(prog_item[page][index_y][index_x/2+2]==STR_OS_CLEAR)
#endif
		{
			ret=1;
		}
	}
	return ret;	
}	

void prog_func_select(void)
{
	#ifdef DVD_PROG_AUTO_CURSOR_RIGHT	//Maoyong 2004.02.24
	clear_tt_input_num_count();
	#endif
	
	if(prog_item[page][index_y][0] == SET_FUNC)
	{
#ifdef PROG_12_ITEMS
		if (prog_item[page][index_y][index_x / 2 + 2] == STR_OS_CLEAR)
		{
			prog_func_clear();
			ShowProgPage();
		}
		else if (prog_item[page][index_y][index_x / 2 + 2] == STR_OS_PLAY)
			ircmd_play();
#else
		if (prog_item[page][index_y][index_x / 2 + 1] == STR_OS_CLEAR)
		{
			prog_func_clear();
			ShowProgPage();
		}
		else if (prog_item[page][index_y][index_x / 2 + 1] == STR_OS_PLAY)
			ircmd_play();
#endif
	}
}


void prog_func_play(void)
{
	UINT8 i;

#ifdef MONE_PROG
	printf("prog_func_play, in\n");
#endif
	
	prog_cnt=0;
	
	for(i=0;i<=SHOW_PROG_NO;i++)
	{
		//if (offset == 3) { //Jeff 20010808
		if (cd_type_loaded == CDROM) { //Jeff 20010914
			
			if  ((prog[i][0] >= 1) && (prog[i][0] <=mp3_file_count()))
			{
#ifdef MONE_PROG
				printf("i:%d Page:%d Item:%d sucess\n", i, prog[i][0], prog[i][1]);
#endif
				prog_cnt++;
				FSGUI_cal_dir_file(&prog[prog_cnt][0],&prog[prog_cnt][1],prog[i][0]);
				printf("prog[prog_cnt][0]:%d prog[prog_cnt][1]:%d\n",prog[prog_cnt][0],prog[prog_cnt][1]);
				//prog[prog_cnt][0]=prog[i][0];
				//prog[prog_cnt][1]=prog[i][1];
			}
			else
			{
#ifdef MONE_PROG
				printf("i:%d Page:%d Item:%d fail\n", i, prog[i][0], prog[i][1]);
#endif
			}
			
			if (i > prog_cnt)
			{
				prog[i][0]=0;
				prog[i][1]=0;
			}
		}
		else //if (cd_type_loaded == CDROM)
		if(offset==2)
		{
			//printf("i:%x prog[i][0]:%x\n",i,prog[i][0]);

//			if( (prog[i][0]>=cd_trk_lo)&&(prog[i][0]<=show_trk_num(cd_trk_hi)) )
			if ((prog[i][0] >= 1) && (prog[i][0] <= show_trk_num(cd_trk_hi))) // robert 030512 for some case cd_trk_lo = 2
			{
				prog_cnt++;
				prog[prog_cnt][0]=prog[i][0];
				//printf("prog_cnt:%x\n",prog_cnt);
			}
			
			if(i>prog_cnt)
				prog[i][0]=0;
		}
		else //if(offset==2)
		{//dvd ,reference ChkPTTRange
			UINT8 tt=prog[i][0];
			UINT16 ptt=prog[i][1];
			
#ifdef DVD_AUDIO
			UINT8  (*ChkRange)(UINT8*, UINT16*);

			if (dAMG_LSN)				// alan, 2002/11/8 11:40

⌨️ 快捷键说明

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