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

📄 nx58_dec.c

📁 MP4 CODE IS GOOD ,NX5858 SKYLARK
💻 C
📖 第 1 页 / 共 4 页
字号:
			if(display_update == 0xF5){//PLAYLIST ADD
				display_update = 0;
				FuncInMode = PLAYLIST_STATE;
				decode_state = MODE_EXIT_STATE;
				key_check = 1;
			}


		}
		else{	//IMAGE_SCROLL
			if(NAV_IMAGE_INFO.Info.bc.b0) {
				if(NAV_IMAGE_INFO.Info.bc.b2) {


					#if defined L320x240
						NAV_scrolltitle( (display_cur_in_section*20)+74, 0, SEL_COLOR, 0, F_WHITE);//SEL_COLOR = 0
						NAV_scrolltitle( (display_cur_in_section*20)+82, 1, SEL_COLOR, 0, F_WHITE);
					#elif defined L128x128
						NAV_scrolltitle( (display_cur_in_section*20)+6, 0, SEL_COLOR, 0, F_WHITE);//SEL_COLOR = 0
						NAV_scrolltitle( (display_cur_in_section*20)+14, 1, SEL_COLOR, 0, F_WHITE);
					#elif defined L96x64
						NAV_scrolltitle( (display_cur_in_section<<4), 0, SEL_COLOR, 0, F_WHITE);//SEL_COLOR = 0
						NAV_scrolltitle( (display_cur_in_section<<4) + 8, 1, SEL_COLOR, 0, F_WHITE);
					#elif defined ML128x64
					#ifdef MONO_LCD
						NAV_scrolltitle( ((display_cur_in_section+1)<<1), 0, SEL_COLOR, 0, F_WHITE);//SEL_COLOR = 0
						NAV_scrolltitle( ((display_cur_in_section+1)<<1) + 1, 1, SEL_COLOR, 0, F_WHITE);
					#else
						NAV_scrolltitle( (display_cur_in_section<<1), 0, SEL_COLOR, 0, F_WHITE);//SEL_COLOR = 0
						NAV_scrolltitle( (display_cur_in_section<<1) + 1, 1, SEL_COLOR, 0, F_WHITE);
					#endif
					#endif

					NAV_IMAGE_INFO.pos += 2;
					if(NAV_IMAGE_INFO.pos>=NAV_IMAGE_INFO.size)
						NAV_IMAGE_INFO.pos = 0;
					NAV_IMAGE_INFO.Info.bc.b2 = 0;								
				}
			}
		}
	}

}

void TRAN_Message(void)
{
	xdata _subdir_navi *SubDirInfo = ((_subdir_navi volatile xdata *)(SUBDIR_BUFF+0x10000));

	display_update = 0;

	if((Is_LRC_file == LYRIC_YES_DIS_NO) || (Is_LRC_file == LYRIC_YES_DIS_YES)) Is_LRC_file = LYRIC_YES_DIS_NO;

	if((song_title == DIS_NAME_MODE) || ((ID3_INFO.id3_check == ID3_NO)&&(song_title == DIS_ID3_MODE))||
		((Is_LRC_file == LYRIC_NO)&&(song_title == DIS_LYRICS_MODE))){//filename

		if(FILE_NAME.info){
			IMAGE_INFO.size = Get_LongFileName(IMAGE_BUFF0);
		}else{
			IMAGE_INFO.size = Get_ShortFileName(IMAGE_BUFF0);
		}

	}else if((ID3_INFO.id3_check == ID3_YES)&&(song_title == DIS_ID3_MODE)){//id3

		IMAGE_INFO.size = make_ID3Image(IMAGE_BUFF0);

	}
	else if((Is_LRC_file == LYRIC_YES_DIS_NO)&&(song_title == DIS_LYRICS_MODE))//lyric
	{//lyric file exist!

		Is_LRC_file  = LYRIC_YES_DIS_YES;


		#ifdef LYRIC_FUNC
		
			Vbr_Lyric_Init();
		
		#endif

	}
	else {
		if(FILE_NAME.info){
			IMAGE_INFO.size = Get_LongFileName(IMAGE_BUFF0);
		}else{
			IMAGE_INFO.size = Get_ShortFileName(IMAGE_BUFF0);
		}
	}

	if(IMAGE_INFO.Info.bc.b0 == 0){
		IMAGE_INFO.pos = 0;
		IMAGE_INFO.Info.bc.b0 = 1;
	}

	MakeCurDirName(&CUR_DIR, SubDirInfo, 0);

	if(PBmode == NO_ACT){
		if(CUR_DIR_NAME.info == 1){
			Get_LongDirName(IMAGE_BUFF1);
		}else{
			Get_ShortDirName(IMAGE_BUFF1);
		}
	}else{
		if(PBmode == PLAYLIST_ACT){ 
			Init_PLBM("P-LIST  ");
		}
		else if(PBmode == BOOKMARK_ACT){ 
			Init_PLBM("B-MARK  ");
		}
	}

	Dec_Lcd_Init();

	if(scroll_speed_idx == 0) {		// if scroll_speed > 0
		IMAGE_INFO.Info.bc.b2 = 1;
		IMAGE_INFO.pos = 0;
	}

#ifdef MEDIASYNC_INCLUDE
	if(bIsLyricst){
//					bLyricst_fire = 1;
		mediaSync_Display_Step = 0;
	}

	if(Is_LRC_file==LYRIC_YES_DIS_YES)
		fnMediaSyncDecInitLyric(0, 1, 4, 16);

#endif

	cur_bar_pos = pre_bar_pos = FILE_INFO.DecodingSectorCnt/bar_temp;
	#ifndef L320x240
	if(Is_LRC_file != LYRIC_YES_DIS_YES)
	#endif
		d_DisplayBar(cur_bar_pos);
	sub_mode_in_play = DEC_DEC;

	IMAGE_INFO.Info.bc.b1 = 0;

	#ifndef G5_BOARD
	backlight_time_count = 0;
	#endif
	
	previous_bat_value = 0x0f;
	Change_PlaySpeed(play_speed);

	EQ_mode_set(eq_mode);

}

#ifdef DEC_TEST

UINT8 File_Control_Message(UINT8 dec_progress){

	xdata UINT16 buf_address;
	xdata UINT8 dec_buf_full = 0;
	xdata UINT8 *DMA_SECTOR_BUFF0;

	if( pFileIO->sector_cur < pFileIO->sector_end ) {

		if(read_XDATA(BSTATUS) & 0x01) {	// if buffer0 is empty

			if (AB_REPEAT.mode == 0 && (dec_progress == 0)){
				AB_REPEAT.start_cluster = pFileIO->cluster;
				AB_REPEAT.data_cnt = FILE_INFO.DecodingSectorCnt;
				AB_REPEAT.DecSector = pFileIO->sector_cur;
				AB_REPEAT.DecEndSector = pFileIO->sector_end;
			}
			
			Dma_B0_RAM2PERI_Close();
			Dma_B0_PERI2RAM_Close();

			B0_Reset();

			switch(dec_progress) {
		
				case 0:// 
					buf_address = BUFFER0;
 					B0_SetAddr(buf_address);
					DMA_SECTOR_BUFF0 = ((unsigned char volatile xdata*)(BUFFER0+0x10000));

					if((sub_mode_in_play != DEC_MENU) && (sub_mode_in_play != DEC_NAV))
						dec_buf_full = 1;
					break;
			
				case 1:	// 
					buf_address = BUFFER0+512;
					B0_SetAddr(buf_address);
					DMA_SECTOR_BUFF0 = ((unsigned char volatile xdata*)(BUFFER0+512+0x10000));
					break;
			
				case 2:	//
					buf_address = BUFFER0+1024; 
					B0_SetAddr(BUFFER0+1024);
					DMA_SECTOR_BUFF0 = ((unsigned char volatile xdata*)(BUFFER0+1024+0x10000));
					break;
			
				case 3:	// 
					buf_address = BUFFER0+1536; 
					B0_SetAddr(BUFFER0+1536);
					DMA_SECTOR_BUFF0 = ((unsigned char volatile xdata*)(BUFFER0+1536+0x10000));
					dec_buf_full = 1;
					break;
		
			}

			B0_Size(512);

			LRead_SectorCloseEcc(DMA0, pFileIO->sector_cur, DATA_REMAP);
		
#ifndef NETSYNC_INCLUDE

#ifdef XSYNC_INCLUDE
			if(file_type == FILE_MTX){
				fnXSyncDecSet(FILE_INFO.DecodingSectorCnt);
				fnXSyncDecode(buf_address);
			}
#endif

#ifdef MEDIASYNC_INCLUDE//Incase of xsync and Mediasync 
			if((song_title == DIS_LYRICS_MODE) && (Is_LRC_file == LYRIC_YES_DIS_YES) && (sub_mode_in_play == DEC_DEC)) {
					fnMediaSyncDecFindLyric(buf_address);//DMA_SECTOR_BUFF0);
			}
#endif
			if(dec_buf_full){

				B0_Reset();
				B0_SetAddr(BUFFER0);

				switch(dec_progress) {
			
					case 0:// 
						B0_Size(512);
						break;
				
					case 1:	// 
						B0_Size(1024);
						break;
				
					case 2:	// 
						B0_Size(1536);
						break;
				
					case 3:	// 
						B0_Size(2048);						
						break;
			
				}

				dec_progress = 3;

				write_XDATA(B0_BSTATUS, BUFFER_FULL);

				Dma_B0_RAM2PERI_Open(DMA_MP3);

			}
			else
				write_XDATA(B0_BSTATUS, BUFFER_EMPTY);
#else		
//----------------------------------------------------------------------------------------------
/*************************************** NetSync START ****************************************/

#ifdef MEDIASYNC_INCLUDE//Incase of Netsync and Mediasync 
			if((song_title == DIS_LYRICS_MODE) && (Is_LRC_file == LYRIC_YES_DIS_YES) && (sub_mode_in_play == DEC_DEC)) {
					fnMediaSyncDecFindLyric(buf_address);//DMA_SECTOR_BUFF0);
			}
#endif
		
			if(FILE_INFO.DecodingSectorCnt == 0)
			{

				NED_CheckDrm(&gNEDInfo, DMA_SECTOR_BUFF0);

				if( 1 == gNEDInfo.CONT.DrmFlag && 0 == gNEDInfo.nErrCode ){
					B0_Reset();
				}else{

					if(dec_buf_full){

						B0_Reset();
						B0_SetAddr(BUFFER0);

						switch(dec_progress) {
					
							case 0:// 
								B0_Size(512);
								break;
						
							case 1:	// 
								B0_Size(1024);
								break;
						
							case 2:	// 
								B0_Size(1536);
								break;
						
							case 3:	// 
								B0_Size(2048);						
								break;
					
						}

						dec_progress = 3;
		
						write_XDATA(B0_BSTATUS, BUFFER_FULL);
		
						Dma_B0_RAM2PERI_Open(DMA_MP3);
					}
					else
						write_XDATA(B0_BSTATUS, BUFFER_EMPTY);

				}
			}
			else
			{
				
				if( 1 == gNEDInfo.CONT.DrmFlag && 0 == gNEDInfo.nErrCode )
				{
					NED_Decrypt(&gNEDInfo, DMA_SECTOR_BUFF0);
				}

				if(dec_buf_full){

					B0_Reset();
					B0_SetAddr(BUFFER0);

					switch(dec_progress) {
				
						case 0:// 
							B0_Size(512);
							break;
					
						case 1:	// 
							B0_Size(1024);
							break;
					
						case 2:	// 
							B0_Size(1536);
							break;
					
						case 3:	// 
							B0_Size(2048);						
							break;
				
					}
	
					dec_progress = 3;
	
					write_XDATA(B0_BSTATUS, BUFFER_FULL);
	
					Dma_B0_RAM2PERI_Open(DMA_MP3);
				}
				else
					write_XDATA(B0_BSTATUS, BUFFER_EMPTY);

			}
/*************************************** NetSync END *******************************************/
//----------------------------------------------------------------------------------------------
#endif
			pFileIO->sector_cur++;
			FILE_INFO.DecodingSectorCnt++;

			dec_progress++;
		}
		else{
			dec_progress = 4;
		}
	}
	else//else of if( pFileIO->sector_cur < pFileIO->sector_end) {
	{	

		if(read_XDATA(BSTATUS) & 0x01) {		// if buffer0 is empty

			Dma_B0_PERI2RAM_Close();
			Dma_B0_RAM2PERI_Close();

			pre_cluster = pFileIO->cluster;
			Dec_Get_Next_Cluster();

		}

	}//end of if( DeSector < DeEndSector)

	if(getIsEOF(pFileIO->cluster))
		dec_progress = 5;

	return dec_progress;
}

#else

void File_Control_Message(void){

	xdata UINT8 *DMA_SECTOR_BUFF0 = ((unsigned char volatile xdata *)(BUFFER0+0x10000));
	if( pFileIO->sector_cur < pFileIO->sector_end) {

		if(read_XDATA(BSTATUS) & 0x01) {	// if buffer0 is empty

			if (AB_REPEAT.mode == 0){
				AB_REPEAT.start_cluster = pFileIO->cluster;
				AB_REPEAT.data_cnt = FILE_INFO.DecodingSectorCnt;
				AB_REPEAT.DecSector = pFileIO->sector_cur;
				AB_REPEAT.DecEndSector = pFileIO->sector_end;
			}
			
			Dma_B0_RAM2PERI_Close();
			Dma_B0_PERI2RAM_Close();

//			LRead_SectorClose(DMA0, pFileIO->sector_cur, DATA_REMAP);
			LRead_SectorCloseEcc(DMA0,/* BUFFER0,*/ pFileIO->sector_cur, DATA_REMAP);
		
#ifndef NETSYNC_INCLUDE

#ifdef XSYNC_INCLUDE
			if(file_type == FILE_MTX){
				fnXSyncDecSet(FILE_INFO.DecodingSectorCnt);
				fnXSyncDecode(BUFFER0);
			}
#endif

#ifdef MEDIASYNC_INCLUDE//Incase of xsync and Mediasync 
			if((song_title == DIS_LYRICS_MODE) && (Is_LRC_file == LYRIC_YES_DIS_YES) && (sub_mode_in_play == DEC_DEC)) {
					fnMediaSyncDecFindLyric(BUFFER0);//DMA_SECTOR_BUFF0);
			}
#endif

			Dma_B0_RAM2PERI_Open(DMA_MP3);
#else		
//----------------------------------------------------------------------------------------------
/*************************************** NetSync START ****************************************/

#ifdef MEDIASYNC_INCLUDE//Incase of Netsync and Mediasync 
			if((song_title == DIS_LYRICS_MODE) && (Is_LRC_file == LYRIC_YES_DIS_YES) && (sub_mode_in_play == DEC_DEC)) {
					fnMediaSyncDecFindLyric(BUFFER0);//DMA_SECTOR_BUFF0);
			}
#endif
		
			if(FILE_INFO.DecodingSectorCnt == 0)
			{

				NED_CheckDrm(&gNEDInfo, DMA_SECTOR_BUFF0);

				if( 1 == gNEDInfo.CONT.DrmFlag && 0 == gNEDInfo.nErrCode ){
					B0_Reset();
				}else{
					Dma_B0_RAM2PERI_Open(DMA_MP3);
				}
			}
			else
			{
				
				if( 1 == gNEDInfo.CONT.DrmFlag && 0 == gNEDInfo.nErrCode )
				{
					NED_Decrypt(&gNEDInfo, DMA_SECTOR_BUFF0);
				}

				Dma_B0_RAM2PERI_Open(DMA_MP3);
			}
/*************************************** NetSync END *******************************************/
//----------------------------------------------------------------------------------------------
#endif
			pFileIO->sector_cur++;
			FILE_INFO.DecodingSectorCnt++;
			
			Other_process = 1;

		}

	}
	else//else of if( pFileIO->sector_cur < pFileIO->sector_end) {
	{	
		if(read_XDATA(BSTATUS) & 0x01) {		// if buffer0 is empty
			Dma_B0_PERI2RAM_Close();
			Dma_B0_RAM2PERI_Close();

			pre_cluster = pFileIO->cluster;
			Dec_Get_Next_Cluster();

			Other_process = 0;
		}

	}//end of if( DeSector < DeEndSector)

}
#endif

void AB_Repeat_Message(void){

	if((AB_REPEAT.mode == 2)&& (pFileIO->cluster == AB_REPEAT.end_cluster) ) {

#ifdef	MEDIASYNC_INCLUDE
		fnMediaSyncDecInitLyric(0, 1, 4, 16);
#endif			
#ifdef LYRIC_FUNC
		InitLyricTimeStamp(1);
#endif
		pFileIO->cluster = AB_REPEAT.start_cluster;
		pFileIO->sector_cur = AB_REPEAT.DecSector;
		pFileIO->sector_end = AB_REPEAT.DecEndSector;
		FILE_INFO.DecodingSectorCnt = AB_REPEAT.data_cnt;

		if(sub_mode_in_play == DEC_DEC && (Is_LRC_file != LYRIC_YES_DIS_YES)){
#ifdef MONO_LCD
#else
			#if defined L128x128 || defined L320x240
			LcdDisplayImage(IMG_PROGRESS_ANGLE);
			#endif

#endif
			#if defined L320x240
			bar_temp = (File_Size>>9)/190;
			#elif defined L128x128
			bar_temp = (File_Size>>9)/79;
			#elif defined L96x64
			bar_temp = (File_Size>>9)/42;
			#elif defined MONO_LCD
			bar_temp = (File_Size>>9)/80;
			#endif
			cur_bar_pos = pre_bar_pos = FILE_INFO.DecodingSectorCnt/bar_temp;
			d_DisplayBar(cur_bar_pos);
			UI_DISPLAY(UI_DEC_TIME, 1);
		}
		else {
			#ifdef L320x240
				LcdDisplayImage(IMG_PROGRESS_ANGLE);
				bar_temp = (File_Size>>9)/190;
				cur_bar_pos = pre_bar_pos = FILE_INFO.DecodingSectorCnt/bar_temp;
				d_DisplayBar(cur_bar_pos);
				UI_DISPLAY(UI_DEC_TIME, 1);
			#endif
		}
		#ifdef FADE_IN_FUNC
		audio_fad = 1;
		#endif
		vol_step_up = 0;

		vol_mask_init = 1;

#ifdef LYRIC_FUNC

			Vbr_Lyric_Init();

#endif
	}

}

void Volume_Mask_Message(void){

	if((vol_step_up < (volume_value+1)) && (read_XDATA(MP3_FRAME_CNT_LOW) > 0)){

		setVolume(vol_step_up);

		vol_step_up++;

		if(vol_step_up == volume_value){
			vol_mask_init = 0;
		}
	}

}

UINT8 Battery_Message(void){

	current_bat_value = Check_BAT();

	#ifdef G5_BOARD
	if ((current_bat_value == CUT_BAT) && (!USB_ON))
	#else	
	if(current_bat_value == CUT_BAT)
	#endif	
	{

		LcdDisplayImage(IMG_POP_BG);
		LcdDisplayImage(IMG_LOW_BATTERY_00);
		{
			UINT8 j,k;

			for( j = 0; j < IMAGE_BLINK_CNT; j++){
				for( k = 0; k < IMG_LOW_BATTERY_BATT_ANI_NUM; k++){
					LcdDisplayImage(IMG_LOW_BATTERY_01(k));
					uDelay(0xffff);
				}
			}

		}

		FuncInMode = POWER_OFF_STATE;
		decode_state = MODE_EXIT_STATE;
		return 1;

	}else{
		#if defined L320x240
		if(sub_mode_in_play == DEC_DEC){
		#else
		if(sub_mode_in_play == DEC_DEC && (Is_LRC_file != LYRIC_YES_DIS_YES)){
		#endif
			if(current_bat_value != previous_bat_value){

				UI_DISPLAY(UI_BATTERY, current_bat_value);	 // display battery when battery value is changed.

			}

		}

	}

	return 0;
}

UINT8 Intro_Message(void){
	#ifdef G5_BOARD
	if((repeat_mode == 5) && (FILE_INFO.DecodingSectorCnt/FILE_INFO.HEADER.BufcntInSec > 9))
	#else
	if((repeat_mode == 6) && (FILE_INFO.DecodingSectorCnt/FILE_INFO.HEADER.BufcntInSec > 9))
	#endif
	{ 
		decode_state = FF_REW_STATE;
		Repeat_Message(0);
		return 1;
	}

	return 0;
}

UINT8 USB_Message(void){

	static UINT8 usb_on_cnt = 0;

⌨️ 快捷键说明

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