📄 drv_mp3.c
字号:
#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 + -