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

📄 volume.c

📁 M3355的源代码
💻 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 + -