📄 avshow.c
字号:
/**********************************************************************/
/*************** MTK CONFIDENTIAL & COPYRIGHTED ****************/
/*************** ****************/
/*************** $Modtime:: 03/05/15 5:23p $ ****************/
/*************** $Revision:: 1 $ ****************/
/*************** ****************/
/*************** Description : OSD ****************/
/*************** ****************/
/*************** Company : MediaTek Inc. ****************/
/*************** Programmer : Peter Huang ****************/
/**********************************************************************/
#define _AVSHOW_C_
#pragma NOAREGS
#include "general.h"
#include "osdshow.h"
#if defined(DVD_RECEIVER) && !defined(DVD_TUNER) //For MP3 Menu XIAO 03-05-24
extern xdata BYTE _bVolNum;
#endif
#ifdef TEST_FROM_OSD
void vOsdShowTest(BYTE bLevel, BYTE bTime) large
{
BYTE pbStr[3];
BYTE i;
pbStr[0] = 2;
bLevel = bHEXToBCD(bLevel);
pbStr[1] = BCD_HI(bLevel) + '0';
pbStr[2] = BCD_LO(bLevel) + '0';
vOsdPosShowArg(OSD_POS_AUD_CTRL, OSD_MSG_TEST_FROM_OSD, bTime, pbStr);
}
#endif
#ifdef PICTURE_QULITY_KEY
void vOsdShowPictureQ(BYTE bPictureMode,char bLevel, BYTE bTime) large
{
BYTE pbStr[14];
BYTE i;
BYTE bMaxLevel;
BYTE bTmpLevel;
switch(bPictureMode)
{
case EV_PICTURE_BRIGHT:
if(bLevel>VID_BRIGHTNESS_MAX)
bLevel = VID_BRIGHTNESS_MAX;
else if(bLevel < VID_BRIGHTNESS_MIN)
bLevel = VID_BRIGHTNESS_MIN;
pbStr[0] = VID_BRIGHTNESS_MAX/2 + 3;
if(bLevel > 0) {
bTmpLevel =(BYTE)( bLevel/2 + 10);
}
else {
bTmpLevel = (BYTE)((bLevel)/2 + 10);
}
bMaxLevel = VID_BRIGHTNESS_MAX;
break;
case EV_PICTURE_CONTRAST:
if(bLevel>VID_CONTRAST_MAX)
bLevel = VID_CONTRAST_MAX;
else if(bLevel < VID_CONTRAST_MIN)
bLevel = VID_CONTRAST_MIN;
if(bLevel > 0) {
bTmpLevel = bLevel/2 + VID_CONTRAST_MAX/2;
}
else {
bTmpLevel = (bLevel)/2 + VID_CONTRAST_MAX/2;
}
bMaxLevel = VID_CONTRAST_MAX;
pbStr[0] = VID_CONTRAST_MAX/2 + 3;
break;
case EV_PICTURE_HUE:
if(bLevel>VID_HUE_DEGREE_MAX)
bLevel = VID_HUE_DEGREE_MAX;
else if(bLevel < VID_HUE_DEGREE_MIN)
bLevel = VID_HUE_DEGREE_MIN;
bTmpLevel = bLevel + VID_HUE_DEGREE_MAX;
bMaxLevel = VID_HUE_DEGREE_MAX*2;
pbStr[0] = VID_HUE_DEGREE_MAX + 2;
break;
case EV_PICTURE_SATURATION:
if(bLevel>VID_SATURATION_MAX)
bLevel = VID_SATURATION_MAX;
else if(bLevel < VID_SATURATION_MIN)
bLevel = VID_SATURATION_MIN;
bTmpLevel = bLevel + VID_HUE_DEGREE_MAX;
bMaxLevel = VID_SATURATION_MAX*2;
pbStr[0] = VID_SATURATION_MAX + 2;
break;
}
for(i=0; i<bTmpLevel/2; i++)
{
if (i == bMaxLevel/2)
{
break;
}
pbStr[i+1] = ICON_VOL_1; //3;
}
if (bTmpLevel % 2)
{
pbStr[i+1] = ICON_VOL_2; //4;
i ++;
}
for(; i<bMaxLevel/2; i++)
{
pbStr[i+1] = ICON_VOL_0; //2;
}
// 这儿还没有写显示数字的代码澹!
if(bLevel < 0 ) {
pbStr[bMaxLevel/2 +1 ] = '-';
bTmpLevel = (BYTE)(-bLevel);
}
else if(bLevel > 0) {
pbStr[bMaxLevel/2 +1 ] = '+';
bTmpLevel = (BYTE)bLevel;
}
else if(bLevel == 0) {
pbStr[bMaxLevel/2 +1 ] = ' ';
bTmpLevel = (BYTE)bLevel;
}
bTmpLevel = bHEXToBCD(bTmpLevel);
if((bPictureMode == EV_PICTURE_BRIGHT) || (bPictureMode == EV_PICTURE_CONTRAST))
{
pbStr[bMaxLevel/2 +2] = BCD_HI(bTmpLevel) + '0';
pbStr[bMaxLevel/2 +3] = BCD_LO(bTmpLevel) + '0';
}
else if((bPictureMode == EV_PICTURE_HUE) || (bPictureMode == EV_PICTURE_SATURATION))
{
pbStr[bMaxLevel/2 +2] = BCD_LO(bTmpLevel) + '0';
}
switch(bPictureMode)
{
case EV_PICTURE_BRIGHT:
vOsdPosShowArg(OSD_POS_AUD_CTRL, OSD_MSG_BBK_BRIGHT_KEY, bTime, pbStr);
break;
case EV_PICTURE_CONTRAST:
vOsdPosShowArg(OSD_POS_AUD_CTRL, OSD_MSG_BBK_CONTRAST_KEY, bTime, pbStr);
break;
case EV_PICTURE_HUE:
vOsdPosShowArg(OSD_POS_AUD_CTRL, OSD_MSG_BBK_HUE_KEY, bTime, pbStr);
break;
case EV_PICTURE_SATURATION:
vOsdPosShowArg(OSD_POS_AUD_CTRL, OSD_MSG_BBK_SATURATION_KEY, bTime, pbStr);
break;
}
// _bOSDClearCounter = bTime;
}
#endif
#if (!defined(DVD_RECEIVER) || defined(DVD_TUNER)) //xiao 03-04-15
// *********************************************************************
// Function : void vOsdShowVol(BYTE bLevel, BYTE bTime) large
// Description :
// Parameter : cLevel
// Return : None
// *********************************************************************
void vOsdShowVol(BYTE bLevel, BYTE bTime) large
{
BYTE pbStr[13];
BYTE i;
if (bLevel < 0)
{
bLevel = 0;
}
if (bLevel > MAX_VOL_LEVEL)
{
bLevel = MAX_VOL_LEVEL;
}
pbStr[0] = 12;
for(i=0; i<bLevel/2; i++)
{
if (i == 10)
{
break;
}
pbStr[i+1] = ICON_VOL_1; //3;
}
if (bLevel % 2)
{
pbStr[i+1] = ICON_VOL_2; //4;
i ++;
}
for(; i<20/2; i++)
{
pbStr[i+1] = ICON_VOL_0; //2;
}
bLevel = bHEXToBCD(bLevel);
pbStr[11] = BCD_HI(bLevel) + '0';
pbStr[12] = BCD_LO(bLevel) + '0';
#ifdef PCD_SHOW_AUD_CTRL
if (fgIsPcdPlay())
{
vOsdPosShowArg(OSD_POS_PCD_AUD_CTRL, OSD_MSG_VOLUME, bTime, pbStr);
}
else
#endif
{
#ifdef MPEG4_TXT_SP //Vincent @04-04-04
#ifdef SUPPORT_OGG
if(fgIsIsoPlay() && (bSharedInfo(SI_ISO_ITEM_TYPE) == SV_ISO_AVI || bSharedInfo(SI_ISO_ITEM_TYPE) == SV_ISO_OGG))
#else
if(fgIsIsoPlay() && bSharedInfo(SI_ISO_ITEM_TYPE) == SV_ISO_AVI )
#endif
vOsdPosShowArg(OSD_POS_LAYER2_LINE4, OSD_MSG_VOLUME, bTime, pbStr);
else
#endif
vOsdPosShowArg(OSD_POS_AUD_CTRL, OSD_MSG_VOLUME, bTime, pbStr);
}
}
#endif
#ifdef ID_NO
void vOsdDispID(void) large
{
BYTE pbStr[ID_LEN + 1];
BYTE i;
BYTE pos,tmp;
pbStr[0] = ID_LEN;
pos=SERIAL_NO_POS1;
for(i=0; i<(ID_LEN/2); i++)
{
tmp=bEepromReadByte(pos);
pbStr[2*i+1] = tmp/10 + '0';
pbStr[2*i+2] = tmp%10 + '0';
pos++;
}
vOsdPosShowArg(OSD_POS_AUD_CTRL, OSD_MSG_ID, OSD_TIMEOUT_LONG, pbStr);
}
#endif
// *********************************************************************
// Function : void vOsdShowMute(BYTE bMode) large
// Description :
// Parameter :
// Return : None
// *********************************************************************
void vOsdShowMute(BYTE bMode) large
{
WORD wPos;
#ifdef PLAYER_FLMENU
BOOL fgFlMenuOn = fgFlCheckStatus(FL_STATUS_IN_MENU);
#endif
#ifdef PCD_SHOW_AUD_CTRL
if (fgIsPcdPlay())
{
wPos = OSD_POS_PCD_AUD_CTRL;
}
else
#endif
{
wPos = OSD_POS_AUD_CTRL;
}
switch (bMode)
{
case OSD_MUTE_OFF:
{
#ifdef PLAYER_FLMENU
if (fgFlMenuOn)
#if defined(DVD_RECEIVER) && !defined(DVD_TUNER)
vFlIpShowInfo(IP_INFO_VOLUME,_bVolNum, FLIP_VOLUME_MUTE_OFF | FLIP_VOLUME_REDRAW);
#else
vFlIpShowInfo(IP_INFO_VOLUME, bAdspCurrVol(), FLIP_VOLUME_MUTE_OFF | FLIP_VOLUME_REDRAW);
#endif
else
#endif
{
#ifdef MPEG4_TXT_SP //Vincent @04-04-04
#ifdef SUPPORT_OGG
if(fgIsIsoPlay() && (bSharedInfo(SI_ISO_ITEM_TYPE) == SV_ISO_AVI || bSharedInfo(SI_ISO_ITEM_TYPE) == SV_ISO_OGG))
#else
if(fgIsIsoPlay() && bSharedInfo(SI_ISO_ITEM_TYPE) == SV_ISO_AVI)
#endif
wPos = OSD_POS_LAYER2_LINE4;
#endif
vOsdPosShow(wPos, OSD_MSG_MUTEOFF, OSD_TIMEOUT);
vOsdCoreSetAudioStatus(OSD_AUDIO_SHOW_CLEAR, 0);
}
break;
}
case OSD_MUTE_ON:
{
#ifdef PLAYER_FLMENU
if (fgFlMenuOn)
#if defined(DVD_RECEIVER) && !defined(DVD_TUNER)
vFlIpShowInfo(IP_INFO_VOLUME, _bVolNum, FLIP_VOLUME_MUTE_ON);
#else
vFlIpShowInfo(IP_INFO_VOLUME, bAdspCurrVol(), FLIP_VOLUME_MUTE_ON);
#endif
else
#endif
{
#ifdef MPEG4_TXT_SP //Vincent @04-04-04
#ifdef SUPPORT_OGG
if(fgIsIsoPlay() && (bSharedInfo(SI_ISO_ITEM_TYPE) == SV_ISO_AVI || bSharedInfo(SI_ISO_ITEM_TYPE) == SV_ISO_OGG))
#else
if(fgIsIsoPlay() && bSharedInfo(SI_ISO_ITEM_TYPE) == SV_ISO_AVI)
#endif
wPos = OSD_POS_LAYER2_LINE4;
#endif
vOsdPosShow(wPos, OSD_MSG_MUTE, OSD_NO_DISAPPEAR);
vOsdCoreSetAudioStatus(OSD_AUDIO_SHOW_MUTE, OSD_NO_DISAPPEAR);
}
break;
}
case OSD_MUTE_CLEAR:
default:
{
#ifdef PLAYER_FLMENU
if (fgFlMenuOn)
#if defined(DVD_RECEIVER) && !defined(DVD_TUNER) //XIAO 03-05-23
vFlIpShowInfo(IP_INFO_VOLUME, _bVolNum, FLIP_VOLUME_REDRAW);
#else
vFlIpShowInfo(IP_INFO_VOLUME, bAdspCurrVol(), FLIP_VOLUME_REDRAW);
#endif
else
#endif
{
#ifdef MPEG4_TXT_SP //Vincent @04-04-04
#ifdef SUPPORT_OGG
if(fgIsIsoPlay() && (bSharedInfo(SI_ISO_ITEM_TYPE) == SV_ISO_AVI || bSharedInfo(SI_ISO_ITEM_TYPE) == SV_ISO_OGG))
#else
if(fgIsIsoPlay() && bSharedInfo(SI_ISO_ITEM_TYPE) == SV_ISO_AVI )
#endif
wPos = OSD_POS_LAYER2_LINE4;
#endif
vOsdPosClear(wPos);
vOsdCoreSetAudioStatus(OSD_AUDIO_SHOW_CLEAR, 0);
}
break;
}
}
}
// *********************************************************************
// Function : void vOsdShowZoom(BYTE bState)
// Description :
// Parameter : bState
// Return : None
// *********************************************************************
#if defined(SUPPORT_ZOOM_13) || defined(MPEG4_TXT_SP) || defined(TEST_MP3_963) || defined(DVP550DX) || defined(SEDIVX961) \
|| defined(HT650DX)||defined(K990) || defined(SE935HT) || defined(SVX12937) || defined(K935) \
||defined(DVR935)||defined(DAV935BES)||defined( X640S)||defined(SUPPORT_KOREAN_LOTTE)
static code BYTE pbZoomMsg[SV_ZOOM_MODE_MAX - 1][3] = {
{ '1', '.', '1' }, /* 1: SV_ZOOM_11 */
{ '1', '.', '2' }, /* 2: SV_ZOOM_12 */
{'1', '.', '3'}, /*3: SV_ZOOM_13 */
{ '1', '.', '5' }, /* 3: SV_ZOOM_15 */
{ '2', ' ', ' ' }, /* 4: SV_ZOOM_2 */
{ '2', '.', '5' }, /* 5: SV_ZOOM_25 */
{ '3', ' ', ' ' }, /* 6: SV_ZOOM_3 */
{ '3', '.', '5' }, /* 7: SV_ZOOM_35 */
{ '4', ' ', ' ' }, /* 8: SV_ZOOM_4 */
{ '1', '/', '2' }, /* 9: SV_ZOOM_21 */
{ '1', '/', '3' }, /* 10: SV_ZOOM_31 */
{ '1', '/', '4' } /* 11: SV_ZOOM_41 */
#ifdef RISC_SP81
,
{ ' ', ' ', ' ' }, /* 07: SV_ZOOM_07 */
{ ' ', ' ', ' ' }, /* 08: SV_ZOOM_08 */
{ ' ', ' ', ' ' } /* 09: SV_ZOOM_09 */
#endif
};
#else
static code BYTE pbZoomMsg[SV_ZOOM_MODE_MAX - 1][3] = {
{ '1', '.', '1' }, /* 1: SV_ZOOM_11 */
{ '1', '.', '2' }, /* 2: SV_ZOOM_12 */
{ '1', '.', '5' }, /* 3: SV_ZOOM_15 */
{ ' ', '2', 'X' }, /* 4: SV_ZOOM_2 */
{ '2', '.', '5' }, /* 5: SV_ZOOM_25 */
{ ' ', '3', 'X' }, /* 6: SV_ZOOM_3 */
{ '3', '.', '5' }, /* 7: SV_ZOOM_35 */
{ ' ', '4', 'X' }, /* 8: SV_ZOOM_4 */
{ '1', '/', '2' }, /* 9: SV_ZOOM_21 */
{ '1', '/', '3' }, /* 10: SV_ZOOM_31 */
{ '1', '/', '4' } /* 11: SV_ZOOM_41 */
};
#endif
void vOsdShowZoom(BYTE bState) large
{
BYTE pbStr[4];
BYTE bIdx;
if (fgIsIsoPlay())
{
vOsdPosClear(OSD_POS_ISO_ZOOM);
}
else
{
vOsdPosClear(OSD_POS_ZOOM);
}
#ifdef ENABLE_ZOOM_USER_MODE
if (bState == SV_ZOOM_USR)
{
pbStr[0] = 3;
pbStr[1] = 'F';
pbStr[2] = 'I';
pbStr[3] = 'T';
}
else
#endif /* ENABLE_ZOOM_USER_MODE */
if ((bState == SV_ZOOM_1) || (bState >= SV_ZOOM_MODE_MAX))
{
pbStr[0] = 0;
}
else
{
bState--;
for (pbStr[0] = 0; pbStr[0] < 3; pbStr[0] += 1)
{
pbStr[pbStr[0] + 1] = pbZoomMsg[bState][pbStr[0]];
}
//pbStr[0] = 3;
}
if (pbStr[0] > 0)
{
if (fgIsIsoPlay())
{
vOsdPosShowArg(OSD_POS_ISO_ZOOM, OSD_MSG_ICON_ZOOM, OSD_TIMEOUT, pbStr);//10/08
}
else
{
vOsdPosShowArg(OSD_POS_ZOOM, OSD_MSG_ICON_ZOOM, OSD_TIMEOUT, pbStr);//10/08
}
}
}
#ifdef PLAYER_ZOOMIN_INDICATOR
#define vZoomRectangle(bWbIdx, bClr, wStartX, wStartY, wEndX, wEndY) \
{ \
_wStartX = wStartX; \
_wStartY = wStartY; \
_wEndX = wEndX; \
_wEndY = wEndY; \
vRectangle(bWbIdx, 1, bClr, 1, bClr); \
}
static code BYTE pbZoomBr[SV_ZOOM_IN_MAX - SV_ZOOM_IN_MIN + 1][2] = {
{66,40}, /* SV_ZOOM_11 */
{66,40}, /* SV_ZOOM_12 */
{66,40}, /* SV_ZOOM_15 */
{64,42}, /* SV_ZOOM_2 */
{64,42}, /* SV_ZOOM_25 */
{52,34}, /* SV_ZOOM_3 */
{53,34}, /* SV_ZOOM_35 */
{45,29} /* SV_ZOOM_4 */
};
// *********************************************************************
// Function : void vZoomBrDraw(void)
// Description :
// Parameter :
// Return :
// *********************************************************************
void vOsdShowZoomBr(BYTE bX, BYTE bY, BYTE bMode) large
{
BYTE bNewX;
// outer rectangle
vZoomRectangle(WB_ZOOM_BR, 3, 0, 0, ZOOM_BR_WIDTH, ZOOM_BR_HEIGHT);
bMode -= SV_ZOOM_IN_MIN;
//Bad code style here.
// if(((bSharedInfo(SI_ASPECT_RATIO) & 0x7f) == SV_4_3_PS) && fgIsDvdPlay() && (bSharedInfo(SI_V_4_3) == SV_V_16_9))
// bNewX = bX+(pbZoomBr[bMode][0]+3)*3/4;
// else
bNewX = bX+pbZoomBr[bMode][0];
// inner rectangle
vZoomRectangle(WB_ZOOM_BR, 1, bX, bY,
bNewX, bY + pbZoomBr[bMode][1]);
}
#endif /* PLAYER_ZOOMIN_INDICATOR */
#ifdef DDISC_FTYPE_JPEG_SUPPORT
// *********************************************************************
// Function : void vOsdShowZoomPct(BYTE bPercent)
// Description :
// Parameter : bState
// Return : None
// *********************************************************************
void vOsdShowZoomPct(BYTE bPercent) large
{
BYTE pbStr[4];
if (bPercent <= 100)
{
vOsdPosClear(OSD_POS_ERROR); // clear "PAN xx" message
}
if (bPercent == 0)
{
vOsdPosClear(OSD_POS_ZOOM_PCT);
}
else
{
pbStr[0] = 3;
if (bPercent >= 200)
{
pbStr[1] = '2';
bPercent -= 200;
}
else if (bPercent >= 100)
{
pbStr[1] = '1';
bPercent -= 100;
}
else
{
pbStr[1] = ' ';
}
bPercent = bHEXToBCD(bPercent);
pbStr[2] = BCD_HI(bPercent) + '0';
pbStr[3] = BCD_LO(bPercent) + '0';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -