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

📄 drv_mp3.c

📁 ROHM 公司BU9432:application:应用范围
💻 C
📖 第 1 页 / 共 5 页
字号:

#if	!ROM	// SDC 20050205
		case 6:				// 廔椆懸偪
#endif
			if( ++tmp_timing5 >= 9 )	//張棟傪娫堷偔丅				// SDC 050121 6 -> 9
			{
				tmp_timing5=0;

//YTC002 20041226 
#if	ID3TAG	// SDC 20050213
			  if( play->flgs & BIT_ID3V2_END )
			  {
#endif
				if( gu08_sts_PauseMP3 == 1 )
				{
					if(gu08_sts_decodeMP3 == 1)	//YTC002 20041226 僜僼僩儈儏乕僩懡廳敪峴偺杊巭丅
					{
//						MP3Ctrl_SoftmuteOn();
					}
					break;
				}
#if	ID3TAG	// SDC 20050213
			  }
#endif

				// READ掆巭妋擣
				if( DrvDSP_BIOS_ReadRegMP3( 0xC2 ) & 0x20 )
				{
					update_playinfo(  );
				}
				else
				{
					// READ掆巭偟偨
					Common_Wait_1mS();
#if	DEBUG	// SDC 20050205
					play->info = DrvDSP_BIOS_ReadRegMP3( 0xC1 );
#endif
					CheckReadStop( play );
				}
			}
#if	!ROM	// SDC 20050205
			if( play->sts == 6 )
			{
//YTC00F 20050126 棴傔偒偭偰億乕僘偟偰偄傞偲偒傕僷儚乕僙乕僽偡傞丅
				if(mp3Ctl.WR.sts == 20)
				{	//                          400000
					if(get_mp3reg_zanryo(  ) > 0x30000) 
					{	//棴傔偒偭偨帪揰偱丄俁侽亾埲忋巆検偑偁傟偽丄僷儚乕僙乕僽
						gu08_GotoMsfSC=0;		//
						mp3Ctl.WR.sts = 30;		//->僷儚乕僙乕僽
					}
				}
			}
#endif
			break;

#if	ROM	// SDC 20050205
		case 6:				// 廔椆懸偪
//YTC002 20041226
			if( gu08_sts_PauseMP3 == 1 )
			{
				if(gu08_sts_decodeMP3 == 1)	//YTC002 20041226 
				{
//					MP3Ctrl_SoftmuteOn();
				}
				break;
			}

			if( ++tmp_timing5 >= 9 )	//張棟傪娫堷偔丅				// SDC 050121 6 -> 9
			{
				tmp_timing5=0;

			// READ掆巭偺妋擣
			if( DrvDSP_BIOS_ReadRegMP3( 0xC2 ) & 0x20 )
			{
				update_playinfo(  );
			}
			else
			{
				Common_Wait_1mS();
#if	DEBUG
				play->info = DrvDSP_BIOS_ReadRegMP3( 0xC1 );
#endif
				CheckReadStop( play );
			}

//YTC00F 20050126 棴傔偒偭偰億乕僘偟偰偄傞偲偒傕僷儚乕僙乕僽偡傞丅
			if(mp3Ctl.WR.sts == 20)
			{	//                          400000
				if(get_mp3reg_zanryo(  ) > 0x30000) 
				{	//棴傔偒偭偨帪揰偱丄俁侽亾埲忋巆検偑偁傟偽丄僷儚乕僙乕僽
					gu08_GotoMsfSC=0;		//
					mp3Ctl.WR.sts = 30;		//->僷儚乕僙乕僽
				}
			}

			}															// SDC 050121
			break;
#endif
	}

	return;
}
*/
//#if	ROM	// SDC 20050205
//20041220nUDF
// =-------------------------------------------------------
//  嬋嵞惗惂屼	for nUDF
// =-------------------------------------------------------
/*
void MP3Ctrl_PlayProcUDF(void)
{
	struct _mp3play *play = &mp3Ctl.PLAY[0];	//摨偠曄悢傪偮偐偆丅
	UINT08 fat_data[32], info;
	SINT16  song_parts;	
//	CNVL tmp_l;			

	static UINT08 tmp_timing5;		//
	static UINT08 flag_flagment;	//1:偱懕偒桳傝

	switch ( play->sts )
	{
		case 1:				// 梫媮庴晅
			scc_crt =														// SDC 20050121	No.xx4
			play->sects = 0;		//弶婜棴傔俁侾僙僋僞偺僇僂儞僞
			play->flgs = 0x00;		//0x01偱僽儘僢僋棴傔崬傒嵪傒

			song_parts = play->song;
			get_FAT_data( play->song, fat_data );	//巜掕嬋偺僼傽僀儖忣曬傪庢摼

			//奐巒僙僋僞乕庢摼
			gu32Work.b.ll = fat_data[22];
			gu32Work.b.lh = fat_data[21];
			gu32Work.b.hl = fat_data[20];
			gu32Work.b.hh = 0;
			play->stl = gu32Work.l;
			play->stb = 0;
			mp3Ctl.WR.begin_sector = gu32Work.l + 150L;

			//廔椆僙僋僞乕庢摼
			gu32Work.b.ll = fat_data[25];
			gu32Work.b.lh = fat_data[24];
			gu32Work.b.hl = fat_data[23];
			gu32Work.b.hh = 0;
			play->enl = gu32Work.l;
			mp3Ctl.WR.conn_mode = 0x05;
			mp3Ctl.WR.threshold = ( gl_buff_max + 1L ) - ( 1182L * gi_ThreshSects );	// WRITE嵞奐埵抲傪32僙僋僞慜偵
			mp3Ctl.WR.end_sector = gu32Work.l + 150L;

			//抐曅壔僼儔僌庢摼
			flag_flagment=0;
			if ((fat_data[18] & B10000000) != 0)
			{
				flag_flagment=1;	//懕偒桳傝
			}

			MP3Ctrl_Write_Start(  );	//弶傔偐傜棴傔傞丅
			play->sts = 2;
			break;

		case 2:				// 棴傔崬傒
			info = MP3Ctrl_Write_GetStatus(  );
			if( info == 0x01 )	//侾僙僋僞棴傔崬傒
			{
				play->sects++;
				if( play->sects >= 31 )
				{
						play->sts = 4;	// 嵞惗僷儔儊僞愝掕
				}
			}
			if( info == 0x81 )
			{
				// WRITE掆巭偟偰偟傑偭偨	彫偝偄僼傽僀儖側偳偱俁侾僙僋僞埲壓偩偭偨傝丅
				play->flgs |= 0x01;	// 棴傔崬傒嵪傒僼儔僌僙僢僩
					play->sts = 4;	// 嵞惗僷儔儊僞愝掕
			}
			break;

		case 4:				// 嵞惗僷儔儊僞愝掕
			if( checkReadTop( play ) == FALSE )								// SDC 20050121	No.xx4
				break;														// 
																			// 
// SDC 20050127			if( bufferLBN.uc.hh == 0xff )									// 
//				break;														// 巆検柍偟棴傔捈偟

			DrvDSP_BIOS_WriteRegMP3( 0x3C, 0x01 );	//嵞惗帪娫偺僋儕傾
			Common_Wait_1mS();	// RSPCLR
			MP3Ctrl_Read_SetMode( 0x02 );	// READ宯 @MP3
			play->flgs |= 0x02;												// SDC 20050118	No.xx1
			MP3Ctrl_Read_Start(  );			//壒偩偟奐巒

			if( play->flgs & 0x01 )
			{	//偡偱偵棴崬廔椆偟偰偄傞丅
				play->sts = 6;	// 廔椆懸偪
				break;
			}
			play->sts = 5;
			break;

		case 5:
			// WRITE忬懺妋擣
			info = MP3Ctrl_Write_GetStatus(  );
			if( info == 0x81 )
			{
				// 侾僽儘僢僋棴崬廔椆
				if(flag_flagment == 0)
				{	//嵟廔僽儘僢僋傑偱棴傔崬傫偩
					play->sts = 6;		//
				}
				else
				{	//師僽儘僢僋桳傝

					song_parts++;
					get_FAT_data( song_parts, fat_data );	//師僽儘僢僋偺忣曬傪庢摼

					//奐巒僙僋僞乕庢摼
					gu32Work.b.ll = fat_data[22];
					gu32Work.b.lh = fat_data[21];
					gu32Work.b.hl = fat_data[20];
					gu32Work.b.hh = 0;
					play->stl = gu32Work.l;
					play->stb = 0;
					mp3Ctl.WR.begin_sector = gu32Work.l + 150L;

					//廔椆僙僋僞乕庢摼
					gu32Work.b.ll = fat_data[25];
					gu32Work.b.lh = fat_data[24];
					gu32Work.b.hl = fat_data[23];
					gu32Work.b.hh = 0;
					play->enl = gu32Work.l;
					mp3Ctl.WR.conn_mode = 0x05;
					mp3Ctl.WR.threshold = ( gl_buff_max + 1L ) - ( 1182L * gi_ThreshSects );	// WRITE嵞奐埵抲傪32僙僋僞慜偵
					mp3Ctl.WR.end_sector = gu32Work.l + 150L;

					//抐曅壔僼儔僌庢摼
					flag_flagment=0;
					if ((fat_data[18] & B10000000) != 0)
					{
						flag_flagment=1;	//懕偒桳傝
					}

					{
						mp3Ctl.WR.wqok = mp3Ctl.WR.begin_sector;	//捛婰傪梫媮
						MP3Ctrl_Write_Restart(  );					//
					}
				}
				break;
			}
			if( ++tmp_timing5 == 6)	//張棟傪娫堷偔丅
			{
				tmp_timing5=0;

				if( gu08_sts_PauseMP3 == 1 )
				{
					if(gu08_sts_decodeMP3 == 1)	//YTC002 20041226 
					{
//						MP3Ctrl_SoftmuteOn();
					}
					break;
				}

				// READ掆巭妋擣
				if( DrvDSP_BIOS_ReadRegMP3( 0xC2 ) & 0x20 )
				{
					update_playinfo(  );
				}
				else
				{
					// READ掆巭偟偨
					Common_Wait_1mS();
					play->info = DrvDSP_BIOS_ReadRegMP3( 0xC1 );
					CheckReadStop( play );
				}
			}
			break;

		case 6:				// 廔椆懸偪
			if( gu08_sts_PauseMP3 == 1 )
			{
				if(gu08_sts_decodeMP3 == 1)	//YTC002 20041226 
				{
//					MP3Ctrl_SoftmuteOn();
				}
				break;
			}

			// READ掆巭偺妋擣
			if( DrvDSP_BIOS_ReadRegMP3( 0xC2 ) & 0x20 )
			{
				update_playinfo(  );
			}
			else
			{
				Common_Wait_1mS();
				CheckReadStop( play );
			}
			break;
	}
	return;
}
#endif
*/
/*
#if	ID3TAG	// SDC 20050202
// =-------------------------------------------------------
//  ID3 READ掆巭帪惂屼
// =-------------------------------------------------------
void	ID3ReadEnd( struct _mp3play *play )
{
	if( play->flgs & BIT_ID3V1_END )
	{																		// V2 end
		if( DrvDSP_BIOS_ReadRegMP3( 0xC3 ) & 0x10 )
		{																	// ID3V2僞僌桳傝偐丠
//			MP3Ctrl_GetID3TAG_Title( play );
		}
		play->flgs |= BIT_ID3V2_END;
	}else
	{																		// V1 end
		if( DrvDSP_BIOS_ReadRegMP3( 0xC3 ) & 0x20 )
		{																	//	ID3V1tag桳傝	
//			MP3Ctrl_GetID3TAG_Title( play );
		}
		play->flgs |= BIT_ID3V1_END;
	}
	MP3Ctrl_WR_Reset();														// Write / Read clear

	ID3TagRetry = 0;
	play->sts = 1;
}
#endif
*/

// =-------------------------------------------------------
//  READ掆巭帪惂屼
// =-------------------------------------------------------
/*
void	CheckReadStop( struct _mp3play * play )
{
#if	BU9541	// SDC 20050125													// 俀嬋棴偼峫椂偟偰偄傑偣傫丅
CNVL	adr;

//YTC00F test PAUSE off	岠偄偨
	if( DrvDSP_BIOS_ReadRegMP3( 0xC1 ) == 0x81 )
	{
//		if(( play->sts  ==5 ) ||(play->sts  == 6))
//		{
			MP3Ctrl_Read_Start(  );	// READ start
//		}
		return;
	}

#if	ID3TAG	// SDC 20050202
	if( !( play->flgs & BIT_ID3V2_END ))
	{																		// 僞僌夝愅拞側傜
		ID3ReadEnd( play );
		return;
	}
#endif

	// 師栚昗 LBN 庢摼
#if	ID3TAG	// SDC 20050202
//	adr.ul = getDramLBN( 0 );												// 師偺僙僋僞偺 LBN 庢摼
#else
//	adr.ul = getDramLBN();													// 師偺僙僋僞偺 LBN 庢摼
#endif

	if(( adr.uc.hh == 0xff ) || gu08_sts_UDFDISC )
		adr.ul = mp3Ctl.WR.wqok - 150L + 1L;								// 巆検柍偟偐 UDF 側傜 pick 埵抲 +1 傪栚昗偵偡傞

	// 栚昗 LBN 斖埻僠僃僢僋
	if(( !gu08_sts_UDFDISC && (( play->stl <= adr.ul ) && ( adr.ul <= play->enl ))) ||
	   (  gu08_sts_UDFDISC && ( play->sts == 5 )))
	{																		// 栚昗 LBN 偑斖埻撪偱偁傟偽
		mp3Ctl.WR.wqok = gu32_val_TargetFrame = adr.ul + 150L;				// 栚昗帪娫偐傜棴傔捈偟

		if(	gu08_sts_PowerSave )											// SDC 20050123
		{																	// 僷儚乕僙乕僽拞偱偁傟偽
			gu08_sts_PowerSave = mp3Ctl.WR.sts;								// 僷儚乕僙乕僽僗僥乕僞僗曐懚
		}
		dram_reset();

//YTC 20050221
		debug_direct_count++;	//


	}else
	{																		// 斖埻奜偱偁傟偽
		play->sts = 0;														// 壒儃乕僟敪峴
		update_playinfo();													// 嵞惗忬懺嫮惂峏怴
	}


#else	// **********************************************************
UINT08	mp3_stat;
CNVL	NewPos;
CNVL	tmp;																// SDC 20050121	No.xx5

	NewPos.ul = DrvDSP_BIOS_ReadRegMP3_32( 0xE8 );				// READ LBN 庢摼	// SDC 20050121

	mp3_stat = DrvDSP_BIOS_ReadRegMP3( 0xC1 );
	switch ( mp3_stat )
	{
		default:
//  case 0x90:              // 僨僐乕僪晄擻
			// READ嵞奐偱偒側偄
			if( mp3_stat & 0x80 )
			{
				// 杮摉偵掆巭偟偰偄傞
				play->sts = 0;
			}
			break;

		case 0x81:				// READ奐巒偟偰偄側偄
			MP3Ctrl_Read_Start(  );	// READ start   //tes
			break;

		case 0x82:				// 僶僢僼傽巆検側偟
			switch ( play->sts )
			{
				case 5:		// 捠忢嵞惗拞
					// 偙偙偱掆巭偟偰偟傑偭偰傕READ嵞奐偡傞偟偐側偄
					MP3Ctrl_Read_Start(  );	// READ start
					break;
				case 6:		// 廔椆懸偪
					// BORDER(壒)曬崘
					play->sts = 0;
					break;
			}
			break;

		case 0x80:				// 僨僐乕僪姰椆
#if	ID3TAG	// SDC 20050120
			if( play->flgs & BIT_ID3V2_END )
#endif
			{					// ID3V2X嵪傒偩偭偨傜READ廔椆
				if( NewPos.ul != play->enl )
				{
#if	ID3TAG	// SDC 20050202
//					tmp.ul = getDramLBN( 0 );								// 師 LBN 庢摼
#else
//					tmp.ul = getDramLBN();									// 師 LBN 庢摼
#endif

					if(( play->stl <= tmp.ul ) && ( tmp.ul <= play->enl ))
					{														// 栚昗 LBN 偑斖埻撪偱偁傟偽
						MP3DispOffMin = stInfoArea.hexPlayMin;				// 嵞惗拞偺帪娫僆僼僙僢僩
						MP3DispOffSec = stInfoArea.hexPlaySec;				// 

						play->sts = 4;										// READ restart
						break;
					}
				}

				// BORDER(壒)曬崘
				play->sts = 0;
				update_playinfo(  );	// 嵞惗忬懺嫮惂峏怴
				break;
			}
#if	ID3TAG	// SDC 20050120
			else if( play->flgs & BIT_ID3V1_END )
			{
				// ID3V2X幚峴拞
				if( DrvDSP_BIOS_ReadRegMP3( 0xC3 ) & 0x10 )
				{				// ID3V2僞僌桳傝偐丠
					MP3Ctrl_GetID3TAG_Title( play );
				}
				play->flgs |= BIT_ID3V2_END;
			}else
			{	//	ReadID3V

⌨️ 快捷键说明

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