📄 flutil.c
字号:
/**********************************************************************/
/*************** MTK CONFIDENTIAL & COPYRIGHTED ****************/
/*************** ****************/
/*************** $Modtime:: 03/09/10 11:03a $ ****************/
/*************** $Revision:: 7 $ ****************/
/*************** ****************/
/*************** Description : File List ****************/
/*************** Utility Function ****************/
/*************** ****************/
/*************** Company : MediaTek Inc. ****************/
/*************** Programmer : Jacob Lin ****************/
/**********************************************************************/
/**
* $(PROJ_HOME)/8032/custom/demo/fslist/flutil.c
*
* Utility function for all modules of "FILE BROWSER".
*/
#define __FLUTIL_C_
#include "../general.h"
#include "flcomm.h"
#pragma NOAREGS
//#define DEBUG_FLM
#ifdef DEBUG_FLM
extern void DRS232LogS(char *pcStr);
extern void DRS232LogB(BYTE bV1, BYTE bV2, BYTE bV3, BYTE bV4);
#endif
#ifdef PLAYER_FLMENU
WORD wFlGetSubFldrNs(BYTE bListId) large
{
WORD wPos, wFldrNs;
if (bListId > FL_LIST_NS)
return 0xFFFF;
wPos = FL_LIST_FIELD(bListId);
bLoByte(wFldrNs) = bSharedInfo(wPos + 9);
bHiByte(wFldrNs) = bSharedInfo(wPos + 10);
return wFldrNs;
}
/**
* Get the index of the given item in the item buffer.
*
* NOTE: The item is in the item buffer and you should make sure that
* the content of the buffer syncs with the list you want.
*/
WORD wFlGetItemIdx(BYTE bItemIdx) large
{
WORD wPos, wIdx;
if (bItemIdx >= _bFlMnItemNs)
return 0xFFFF;
wPos = FL_ITEM_FIELD(bItemIdx);
bLoByte(wIdx) = bSharedInfo(wPos + 6);
bHiByte(wIdx) = bSharedInfo(wPos + 7);
return wIdx;
}
BYTE bFlGetItemType(BYTE bItemIdx) large
{
switch (bSharedInfo(FL_ITEM_FIELD(bItemIdx)+5))
{
case FTYPE_MP1:
case FTYPE_MP2:
case FTYPE_MP3:
case FTYPE_WMA:
case FTYPE_ASF:
case FTYPE_DST:
case FTYPE_DSD:
#ifdef DATA_DISC_AAC_SUPPORT // 20030831 added by sammy
case FTYPE_AAC:
#endif
return FTYPE_AUDIO;
case FTYPE_JPG:
return FTYPE_STILL;
case FTYPE_MPG:
case FTYPE_DAT:
case FTYPE_VOB:
case FTYPE_AVI:
case FTYPE_TS1:
case FTYPE_TS2:
//case FTYPE_TS3:
// case FTYPE_OGG:
// case FTYPE_TS4:
#ifdef SUPPORT_OGG //)&&defined(SUPPORT_WAIXIAO)
case FTYPE_OGG: //tide@0311
#ifdef DEBUG_FLM
DRS232LogS("T2");
#endif
#endif
return FTYPE_AV;
case FTYPE_DIR:
return FTYPE_FOLDER;
#ifdef BBK_MENU
case FTYPE_TS4:
vOsdShowError(SV_ERR_INPUT_INVALID, OSD_TIMEOUT_SHORT);
vSetExitInputState();
return FTYPE_NONE;
#endif
}
return FTYPE_NONE;
}
BYTE bFlGetFgPbcState(void) large
{
switch (_bFlCmdTarget)
{
case FL_CMD_TARGET_MENU:
return bSharedInfo(SI_MP3_MOD);
case FL_CMD_TARGET_JPEG:
case FL_CMD_TARGET_MPEG:
return bSharedInfo(SI_PBC_STATE);
}
}
BYTE bFlGetRepeatType(void) large
{
return _bFlPbMode;
}
#if 1 // - JACOB: test "shuffle" and "randome"
BYTE bFlNextRepeatType(void) large
{
switch (_bFlPbMode)
{
case SV_REPEAT_NONE:
/*10/06 _bFlPbMode = SV_SHUFFLE;
break;
case SV_SHUFFLE:
_bFlPbMode = SV_RANDOM;
break;
case SV_RANDOM:*/
_bFlPbMode = SV_SINGLE;
break;
case SV_SINGLE:
_bFlPbMode = SV_REPEAT_TRACK;
break;
case SV_REPEAT_TRACK:
_bFlPbMode = SV_REPEAT_ALL;
break;
case SV_REPEAT_ALL:
_bFlPbMode = SV_REPEAT_NONE;
break;
default:
_bFlPbMode = SV_REPEAT_ALL;
break;
}
return _bFlPbMode;
}
#else
BYTE bFlNextRepeatType(void) large
{
switch (_bFlPbMode)
{
case SV_REPEAT_NONE:
case SV_SHUFFLE:
#ifdef DDISC_PB_SINGLE_ENABLED
_bFlPbMode = SV_SINGLE;
#else
_bFlPbMode = SV_REPEAT_TRACK;
#endif
break;
case SV_SINGLE:
_bFlPbMode = SV_REPEAT_TRACK;
break;
case SV_REPEAT_ALL:
_bFlPbMode = SV_REPEAT_NONE;
break;
default:
_bFlPbMode = SV_REPEAT_ALL;
break;
}
return _bFlPbMode;
}
#endif //1
static void vFlVfdNumOnTtCh(WORD wNum) large
{
//10/13am
#ifdef BBK //BillDen
WORD wBsDir;
#endif
#ifdef BBK //BillDen
bLoByte(wBsDir) = bSharedInfo(FL_BBK_LIST_FIELD(_bFlMnListId) + 2);
bHiByte(wBsDir) = bSharedInfo(FL_BBK_LIST_FIELD(_bFlMnListId) + 3);
if(bSharedInfo(FL_BBK_LIST_FIELD(_bFlMnListId)) == FLPARM_LIST_FOLDER && wBsDir)
wNum = wWRDToBCD(wNum);
else
#endif
wNum = wWRDToBCD(wNum + 1);
#ifdef VFD_FLD_CH100
vVfdWord(VFD_WORD_CH100, bHiByte(wNum), 0);
#else
vVfdWord(VFD_WORD_TT, bHiByte(wNum), 0);
#endif
vVfdWord(VFD_WORD_CH, bLoByte(wNum), 1);
vVfdSymbol(VFD_SYM_PLAYINFO_TRACK);
}
//10/15am
#ifndef BBK
static void vFlVfdNumOnTime(WORD wNum) large
{
wNum = wWRDToBCD(wNum + 1);
vVfdUpdateTime(0, bHiByte(wNum), bLoByte(wNum));
}
#endif
void vFlUpdateVfd(BOOL fgInit) large
{
WORD wNum;
BYTE bPbcState;
//BYTE bISOType = bSharedInfo(SI_A_CODE_MODE);//DVD_AMP
if (fgInit && bSharedInfo(SI_MP3_BITRATE_LO) == 0xff) //BillDen
vVfdMessage(VFD_MESSAGE_CLR_ALL); // lxp-050506
switch (_bFlCmdTarget)
{
case FL_CMD_TARGET_MENU:
wNum = wFlGetItemIdx(_bFlMnCurItemIdx);
vFlVfdNumOnTtCh(wNum);
bPbcState = bSharedInfo(SI_MP3_MOD);
break;
case FL_CMD_TARGET_JPEG:
wNum = (WORD)bSharedInfo(SI_JPG_ITEM_IDX_HI) * 256 + bSharedInfo(SI_JPG_ITEM_IDX_LO);
//if (bISOType != SV_A_CODE_MP3 && bISOType != SV_A_CODE_WMA)//DVD_AMP
//vVfdClearAll();
#if 1 //Vincent Del @04-21-04 def VFD_MESSAGE_JPEG
if (fgInit)
vVfdMessage(VFD_MESSAGE_JPEG);
#endif
//10/15am
#ifndef BBK
vFlVfdNumOnTime(wNum);
#else
if(bSharedInfo(SI_DISC_TYPE) == SV_PCD)//10/17pm
wNum++;//10/17pm
vFlVfdNumOnTtCh(wNum);
#endif
break;
case FL_CMD_TARGET_MPEG:
wNum = (WORD)bSharedInfo(SI_MPIC_ITEM_IDX_HI) * 256 + bSharedInfo(SI_MPIC_ITEM_IDX_LO);
vFlVfdNumOnTtCh(wNum);
bPbcState = bSharedInfo(SI_PBC_STATE);
break;
}
switch (bPbcState)
{
case SV_STOP:
vVfdMessageClr();
vVfdRotate(VFD_DISC_LIGHT_OFF);
vVfdMessage(VFD_MESSAGE_STOP);
vVfdClrAudInfo();
vVfdSymbol(VFD_SYM_STOP);
break;
}
}
#if (!defined(NO_ADD10_KEY) && defined(ISO_SELECT_USE_ADD10_KEY))
#else
WORD wFlGetListLen(void) large
{
return _wFlMnListLen;
}
#endif
#ifdef MPEG4_TXT_SP //Vincent -5Version @03-28-04
void vFlSetMp4SpParam(BYTE bWbIdx, BYTE bAlign, BYTE bCfg, BYTE bSpace) large
{
vWaitBusy();
vBeginWriteSharedGrp(SI_OSD_CMD_PRM_GRP, OSD_CMD_SET_MP4SP_PARAM);
vWriteNextSharedItem(bWbIdx);
vWriteNextSharedItem(bLoByte(_wStartX));
vWriteNextSharedItem(bHiByte(_wStartX));
vWriteNextSharedItem(bLoByte(_wStartY));
vWriteNextSharedItem(bHiByte(_wStartY));
vWriteNextSharedItem(bLoByte(_wEndX));
vWriteNextSharedItem(bHiByte(_wEndX));
vWriteNextSharedItem(bLoByte(_wEndY));
vWriteNextSharedItem(bHiByte(_wEndY));
vWriteNextSharedItem(bAlign);
vWriteNextSharedItem(bCfg);
/*
vWriteNextSharedItem(bSpace);
#ifdef SUPPORT_ASIAN
vWriteNextSharedItem(0xFF); //这行为新加行,必须写
vWriteNextSharedItem(0xFF); //送OxFF表示,若遇到字幕字符编码大于0x80,则从subtitlefont.bin中抓取(处理韩文,中文的情况)
#else
vWriteNextSharedItem(0); //送O表示,若遇到字幕字符编码大于0x80,则从CODE_PAGE_ASC2页中抓取(处理俄文,泰文等的情况)
#endif
vSendOsdCmd();
*/
#ifdef NEIXIAO
vWriteNextSharedItem(bSpace);
vSendOsdCmd();
vWriteNextSharedItem(0xFF); //这行为新加行,必须写
#ifdef SUPPORT_ASIAN
vWriteNextSharedItem(0xFF); //送OxFF表示,若遇到字幕字符编码大于0x80,则从subtitlefont.bin中抓取(处理韩文,中文的情况)
#else
vWriteNextSharedItem(0); //送O表示,若遇到字幕字符编码大于0x80,则从CODE_PAGE_ASC2页中抓取(处理俄文,泰文等的情况)
#endif
#else //NEIXIAO
#ifdef SUPPORT_ASIAN
vWriteNextSharedItem(bSpace);
vWriteNextSharedItem(0xFF); //这行为新加行,必须写
vWriteNextSharedItem(0xFF); //送OxFF表示,若遇到字幕字符编码大于0x80,则从subtitlefont.bin中抓取(处理韩文,中文的情况)
#else
vWriteNextSharedItem(0); //送O表示,若遇到字幕字符编码大于0x80,则从CODE_PAGE_ASC2页中抓取(处理俄文,泰文等的情况)
#endif
#endif //NEIXIAO
vSendOsdCmd();
}
#endif
#ifdef SUPPORT_KOREAN_FILE_NAME
void vDrawStrAddr(BYTE bWbIdx, BYTE bStrLen, DWRD dwAddr, BYTE bChar, BYTE bJoliet) large
{
vWaitBusy();
vBeginWriteSharedGrp(SI_OSD_CMD_PRM_GRP, OSD_CMD_DRAW_STR_ADDR);
vWriteNextSharedItem(bWbIdx);
vWriteNextSharedItem(bLoByte(_wStartX));
vWriteNextSharedItem(bHiByte(_wStartX));
vWriteNextSharedItem(bLoByte(_wStartY));
vWriteNextSharedItem(bHiByte(_wStartY));
vWriteNextSharedItem(bStrLen);
vWriteNextSharedItem(bLoByte(wLoWord(dwAddr)));
vWriteNextSharedItem(bHiByte(wLoWord(dwAddr)));
vWriteNextSharedItem(bLoByte(wHiWord(dwAddr)));
vWriteNextSharedItem(bHiByte(wHiWord(dwAddr)));
vWriteNextSharedItem(bChar);
vWriteNextSharedItem(bJoliet);
vSendOsdCmd();
}
#endif
#else // #ifdef PLAYER_FLMENU
#endif // #ifdef PLAYER_FLMENU
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -