📄 volume.c
字号:
/*****************************************************************************
* Copyright (C) 2001 Acer Labs, Inc. All Rights Reserved.
* File: ui_Volume.c
* Contents: Volume process
* History:
* Date By Reason Ver.
* ============ ========= ========== ======
* 2004.5.18 Maggie Liu Create it 1.0
*****************************************************************************/
#include <comsub.h>
#include <pe.h>
#include <panel.h>
#include <osd.h>
#include <nv.h>
#include <ui.h>
#include <ui_sub.h>
#include <panel.h>
#include "../../cstm/fend/frntp.h"
//#include "nmnvlib.h"
#include "normal.h"
//#include "nm_func.h"
#include <stdio.h>
#include <stdlib.h>
#include <audio.h>
//#include <fileopen.h>
#include <rscstruc.h>
#include <resource.h>
#include <platform.h>
//#include <filesys.h>
//#include <setupfunc.h>
//20021115 Tom Yang for perhibit KEY_SETUP start
//#include <atapi.h>
//#include <vobu.h>
#include "uiosd.h"
#include "NMOSD.h"
//#include "../FileopenMenu/MediaPlayerOutlook.h"
BOOL isKaraoke,haveMelody;
BYTE isMultiVoise;
/********************************************************************/
/* Volum Sub-function */
/********************************************************************/
void UiSubFuncVolumInit_in(void)
{
#ifdef _KARAOKE_ENABLE_
AC3KaraokeInformation kokInfo;
AUDIOSTREAM AudioInfo;
NVGetAudioInfo(&AudioInfo);
if(AudioType == C_AC3)
{
GetAC3KaraokeInformation(&kokInfo);
if(!kokInfo.karaoke)
{
isMultiVoise = FALSE;
haveMelody = FALSE;
}
//else
{
haveMelody = kokInfo.melody;
isMultiVoise = 0;
isMultiVoise += (kokInfo.V1 !=FALSE);
isMultiVoise += (kokInfo.V2!=FALSE);
}
}
else
{
isMultiVoise = FALSE;
haveMelody = FALSE;
}
g_UiCrntSubFunc = UI_SUBFUNC_VOLUM;
if (g_UiCrntFunc!=UI_FUNC_FILEOPEN)
{
ClearRectArea(gui_hdc, GUITYPE_PLAYMODEGUI);
SetTimer(OSD1_TM_ID,PlayModeGUITimer,INFINITETIME);
ClearRectArea(gui_hdc, GUITYPE_MODEGUI);
SetTimer( OSD6_TM_ID, ModeOSDOff, INFINITETIME);
SetTimer( SHOWINVALID_TM_ID, ShowInvalidTimer, INFINITETIME);
NextPrevStatus=0;
}
if(bVolCounter>KOK_STAGE_KEY)
{
if(bVolCounter==KOK_STAGE_VOICE && (!isMultiVoise))
bVolCounter++;
if(bVolCounter==KOK_STAGE_MELODY && (!haveMelody))
bVolCounter=KOK_STAGE_ECHO;
}
if(LeftMicStatus == C_LEFT_MIC_OFF && RightMicStatus == C_RIGHT_MIC_OFF)
{
bVolCounter == 0;
}
DrawKokBack(gui_hdc,1);
ShowVolumOnBotBlk(bVolCounter); //ShowVolumOnBotBlk(KOK_STAGE_ECHO);
#endif
}
BYTE UiSubFuncVolumProc(WORD MsgType, DWORD MsgInput)
{
#ifdef _KARAOKE_ENABLE_
switch (MsgType)
{
case C_FP_KEY:
return VolumRespondFPKey_in(MsgInput);
case C_TIMER_ACTIVE:
return VolumRespondTimer_in(MsgInput);
case C_FP_MIC_DETECT:
return VolumRespondFPMicDetect(MsgInput);
break;
default:
return UI_NOUSE_FUNC_MSG;
}
#endif
}
#ifdef _KARAOKE_ENABLE_
BYTE VolumRespondFPKey_in(DWORD MsgInput)
{
BYTE bTemp;
BYTE maxVolCounter = KOK_STAGE_KEY;
//-->gushun for karaoke volume
if(MsgInput == V_KEY_UP ||MsgInput == V_KEY_DOWN)
{
if(LeftMicStatus == C_LEFT_MIC_OFF && RightMicStatus == C_RIGHT_MIC_OFF)
return;
}
//<--gushun for karaoke volume
//--> Gordon. spec checked with addin
if(DiscType==C_NO_DISC)
{
switch(MsgInput)
{
case V_KEY_OPEN:
case V_KEY_CLOSE:
case V_KEY_POWER:
case V_KEY_UP:
case V_KEY_LEFT:
case V_KEY_RIGHT:
case V_KEY_DOWN:
case V_KEY_VOLUM:
// these keys supported. // me: share the same action as normal's
break;
case V_KEY_SETUP:
Write_UserPara();
ClearRectArea(gui_hdc, GUITYPE_KARAOKE);
SetTimer(OSD3_TM_ID, KaraokeTimer,INFINITETIME);
g_UiCrntSubFunc = UI_SUBFUNC_BASAL;
// these keys supported. // me: should no recover no disc osd
return UI_NOUSE_FUNC_MSG;
default:
// other keys not supported.
return UI_IS_FUNC_MSG;
}
}
//<-- Gordon
if(isMultiVoise)
{
maxVolCounter++;
if(haveMelody)
maxVolCounter++;
}
switch (MsgInput)
{
case V_KEY_LEFT:
ModifyVolum(V_KEY_LEFT);
break;
case V_KEY_RIGHT:
ModifyVolum(V_KEY_RIGHT);
break;
case V_KEY_UP:
if (bVolCounter > KOK_STAGE_VOLUME) //gushun for karaoke volume
{
bVolCounter--;
}
else
{
bVolCounter = maxVolCounter;
}
DrawKokBack(gui_hdc,0);
ShowVolumOnBotBlk(bVolCounter);
break;
case V_KEY_DOWN:
if (bVolCounter < maxVolCounter)
{
bVolCounter++;
}
else
{
bVolCounter = KOK_STAGE_VOLUME; //gushun for karaoke volume
}
DrawKokBack(gui_hdc,0);
ShowVolumOnBotBlk(bVolCounter);
break;
case V_KEY_RETURN:
VolumRespondTimer_in(C_KARAOKE_TIMER);
break;
case V_KEY_VOLUM:
VolumRespondTimer_in(C_KARAOKE_TIMER);
break;
case V_KEY_PLAY:
if (g_UiCoreState!= UI_CORE_PLAY)
VolumRespondTimer_in(C_KARAOKE_TIMER);
return UI_NOUSE_FUNC_MSG;
case V_KEY_OPEN:
Write_UserPara();
//if(g_UiCrntSubFunc==UI_SUBFUNC_VOLUM)
{
ClearRectArea(gui_hdc, GUITYPE_KARAOKE);
SetTimer(OSD3_TM_ID, KaraokeTimer,INFINITETIME);
}
if(gZoomFuncPlus == TRUE)
{
g_UiCrntSubFunc = UI_SUBFUNC_ZOOM;
gZoomFuncPlus = FALSE;
}
else
g_UiCrntSubFunc = UI_SUBFUNC_BASAL;
return UI_NOUSE_FUNC_MSG;
case V_KEY_ZOOM:
//added by jane
if(g_UiCoreState==UI_CORE_STOP)
return UI_NOUSE_FUNC_MSG;
if(gZoomFuncPlus == TRUE)
{
UiSubFuncZoomProc(C_FP_KEY,V_KEY_ZOOM);
return UI_IS_FUNC_MSG;
}
else
{
gZoomFuncPlus = TRUE;
return UI_NOUSE_FUNC_MSG;
}
case V_KEY_MENU:
case V_KEY_TITLE:
VolumRespondTimer_in(C_KARAOKE_TIMER);
return UI_NOUSE_FUNC_MSG;
case V_KEY_ENTER: //added by jane
return UI_NOUSE_FUNC_MSG;
case V_KEY_STOP:
VolumRespondTimer_in(C_KARAOKE_TIMER);
if (g_UiCrntSubFunc == UI_SUBFUNC_ZOOM)
CloseZoom();
return UI_NOUSE_FUNC_MSG;
case V_KEY_NEXT:
case V_KEY_PREV:
VolumRespondTimer_in(C_KARAOKE_TIMER);
return UI_NOUSE_FUNC_MSG;
default:
VolumRespondTimer_in(C_KARAOKE_TIMER);
return UI_NOUSE_FUNC_MSG;
}
return UI_IS_FUNC_MSG;
}
BYTE VolumRespondTimer_in(DWORD MsgInput)
{
PLAYPOINT iPlayPoint;
WORD iCurPic, iTotalPic;
switch (MsgInput)
{
#ifdef _KARAOKE_ENABLE_
case C_KARAOKE_TIMER:
Write_UserPara();
//bVolCounter = 0; //marked by jane
//David: Console+Zoom
if(gZoomFuncPlus == TRUE)
{
g_UiCrntSubFunc = UI_SUBFUNC_ZOOM;
gZoomFuncPlus = FALSE;
}
else
g_UiCrntSubFunc = UI_SUBFUNC_BASAL;
ClearRectArea(gui_hdc, GUITYPE_KARAOKE);
SetTimer(OSD3_TM_ID, KaraokeTimer,INFINITETIME);
if (g_UiCrntFunc!=UI_FUNC_FILEOPEN)
{
RecoverOsdIcon();
}
return UI_IS_FUNC_MSG;
#endif
case C_ZOOM_TIMER:
gZoomFuncPlus=FALSE;
SetTimer(OSD2_TM_ID, CancelZoom, INFINITETIME);
ClearRectArea(gui_hdc, GUITYPE_ZOOM);
return UI_IS_FUNC_MSG;
default:
return UI_NOUSE_FUNC_MSG;
}
}
BYTE VolumRespondFPMicDetect(DWORD MsgInput)
{
#ifdef _KARAOKE_ENABLE_
switch(MsgInput)
{
case C_LEFT_MIC_ON:
break;
case C_LEFT_MIC_OFF:
if(RightMicStatus == C_RIGHT_MIC_OFF)
{
VolumRespondTimer_in(C_KARAOKE_TIMER);
}
break;
case C_RIGHT_MIC_ON:
break;
case C_RIGHT_MIC_OFF:
if(LeftMicStatus == C_LEFT_MIC_OFF)
{
VolumRespondTimer_in(C_KARAOKE_TIMER);
}
break;
}
return UI_NOUSE_FUNC_MSG;
#endif
}
void UiSetKOKParam(BYTE kokType,BYTE value)
{
int temp;
switch(kokType)
{
case KOK_STAGE_ECHO:
DecSetAPrc(C_ECHO,EC_LEVEL,/*value*15/10*/MappingKokKey_in(KOK_STAGE_ECHO,value));
break;
case KOK_STAGE_KEY :
//mapping karaoke_key from 0-12 to 0-32
// temp = value;//OSD_Setup_Parameter.bKaraKey;
// temp -= 6;
// temp = temp*12/6;
// temp += 12;
DecSetAPrc(C_KEY_SHIFT,KS_OPTION,MappingKokKey_in(KOK_STAGE_KEY,value));
break;
case KOK_STAGE_VOICE :
DecSetAPrc(C_AC3_FUNC,KARA_OPTION,value);
break;
case KOK_STAGE_MELODY :
SetAC3Melody(value);
break;
//->gushun for karaoke volume
case KOK_STAGE_VOLUME :
DecSetAPrc(C_VOLUME, MASTER_VOL,value);
break;
//<--gushun for karaoke volume
}
}
#endif
void InitKara_in(BOOL NeedInitEcho)
{
#ifdef _KARAOKE_ENABLE_
extern BYTE tempv;
extern BYTE tempMelody ;
bVolCounter = 0;
OSD_Setup_Parameter.bKaraKey = 6; //now only for show
//OSD_Setup_Parameter.bMasterVolume = 6; //gushun for karaoke volume
if(NeedInitEcho)
OSD_Setup_Parameter.bKaraEcho = 0;
//#ifdef _KARAOKE_ENABLE_
tempv = 3;
//#else
//if(OSD_Setup_Parameter.bVocal == 1)
// tempv = 3;
//else
// tempv = 0;
//#endif
tempMelody = 1;
OSD_Setup_Parameter.bKaraOKVoice = tempv;
OSD_Setup_Parameter.bKaraOKMelody = tempMelody;
if(NeedInitEcho)
UiSetKOKParam(KOK_STAGE_ECHO,OSD_Setup_Parameter.bKaraEcho);
UiSetKOKParam(KOK_STAGE_KEY,OSD_Setup_Parameter.bKaraKey);
UiSetKOKParam(KOK_STAGE_VOICE,tempv);
UiSetKOKParam(KOK_STAGE_MELODY,tempMelody);
//UiSetKOKParam(KOK_STAGE_VOLUME, OSD_Setup_Parameter.bMasterVolume); //gushun for karaoke volume
#endif
}
BYTE MappingKokKey_in(BYTE kokType,BYTE value)
{
int temp;
static BYTE echoMappingTable[11] = { 0, 1, 2, 4, 6, 8, 10, 12, 13, 14, 15};
if(kokType == KOK_STAGE_ECHO)
{
//mapping karaoke_echo from 0-10 to 0-15
if(value > 10)
return 15;
else
return echoMappingTable[value];
}
else if(kokType == KOK_STAGE_KEY)
{
//mapping karaoke_key from 0-12 to 0-32
temp = value;
temp -= 6;
temp = temp*12/6;
temp += 16;
return (BYTE)temp;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -