📄 kr_m.c
字号:
break;
*/
#ifdef DISABLE
// REMINDER May need to do this if core turns of KARAOKE_RECORDING settings each repetition
case KR_MODE_RECORD:
{
param = PS_UPDATE_PLAYMODE( KR_START_RECORDED_AUDIO );
ie_send_ex( evt, param );
}
break;
#else
case KR_MODE_RECORD:
{
param = PS_UPDATE_PLAYMODE( KR_START_RECORDED_AUDIO );
ie_send_ex( evt, param );
// Nothing to do ( already handled above )
}
break;
#endif // DISABLE
case KR_MODE_FOLLOW:
{
if ( gkrm.iTimesToRepeat & 1 )
{
// End of first, third, etc. playbacks
ie_send_ex( evt, PS_UPDATE_PLAYMODE( KR_START_NO_AUDIO ) );
}
else
{
// End of second, fourth, etc. playbacks
param = PS_UPDATE_PLAYMODE( KR_STOP_SPECIAL_PLAYBACK );
ie_send_ex( evt, param );
}
}
break;
case KR_MODE_COMPARE:
{
if ( gkrm.iTimesToRepeat & 1 )
{
// End of first, third, etc. playbacks
param = PS_UPDATE_PLAYMODE( KR_START_RECORDED_AUDIO );
ie_send_ex( evt, param );
}
else
{
// End of second, fourth, etc. playbacks
param = PS_UPDATE_PLAYMODE( KR_STOP_SPECIAL_PLAYBACK );
ie_send_ex( evt, param );
}
}
break;
}
}
//
// Handle a REPEATAB_B event
//
// Returns TRUE if the event was handled,
// Otherwise, FALSE
//
BOOL krm_handle_b(void)
{
BOOL ret;
if ( gkrm.iMode != KR_MODE_OFF )
{
EVENT evt = 0;
void *param = NULL;
if ( gkrm.wState & KR_STATE_B_ENTERED )
{
ret = krm_handle_b_reached();
}
else
{
ret = krm_handle_b_pressed();
}
return ret;
}
return TRUE;
}
//
// Handle a REPEAT_AB cancel event
//
// Returns TRUE if the event was handled
// Otherwise, FALSE
//
BOOL krm_handle_cancel(void)
{
if ( gkrm.iMode != KR_MODE_OFF )
{
EVENT evt = IE_CORE_UPDATE_PS;
void *param = NULL;
switch ( gkrm.iMode )
{
case KR_MODE_REPEAT:
case KR_MODE_RECORD:
case KR_MODE_FOLLOW:
case KR_MODE_COMPARE:
{
param = PS_UPDATE_PLAYMODE( KR_OFF/*KR_STOP_SPECIAL_PLAYBACK*/ );
ie_send_ex( evt, param );
// Cancel REPEAT_AB by sending the command the correct number of times
// If A wasn't entered, we don't need to do anything
if ( gkrm.wState & KR_STATE_A_ENTERED )
{
// If B wasn't entered, we need to get to the B state
if ( !(gkrm.wState & KR_STATE_B_ENTERED) )
{
evt = IE_CORE_AB_REPEAT;
ie_send_ex( evt, param );
}
// We're in the B state, so the next event will cancel
//evt = IE_CORE_AB_REPEAT;
//ie_send_ex( evt, param );
//dingming Because it had been send in UI.
}
}
break;
}
gkrm.wState &= KR_STATE_INACTIVE_MASK;
return TRUE;
} // gkrm.iMode != KR_MODE_OFF
return FALSE;
}
//
// Mode choice handlers
//
void kr_mode_choice(MS_CHOICE *msChoice)
{
int iChoice;
switch (gkrm.iMode)
{
case KR_MODE_REPEAT:
iChoice = ITEMNUM_KR_MODE_REPEAT;
break;
case KR_MODE_FOLLOW:
iChoice = ITEMNUM_KR_MODE_FOLLOW;
break;
case KR_MODE_COMPARE:
iChoice = ITEMNUM_KR_MODE_COMPARE;
break;
case KR_MODE_RECORD:
iChoice = ITEMNUM_KR_MODE_RECORD;
break;
case KR_MODE_OFF:
// Fall through
default:
iChoice = ITEMNUM_KR_MODE_OFF;
break;
}
msChoice->current_choice = iChoice;
}
static void kr_mode_action(int num)
{
DWORD d_Cmd;
int iMode[] = { KR_MODE_OFF, KR_MODE_REPEAT, KR_MODE_RECORD, KR_MODE_FOLLOW, KR_MODE_COMPARE };
#ifdef NO_C_STDLIB
dbouts("\nKaraoke recording mode is ");
dbouti( num );
#endif // NO_C_STDLIB
//<<<ZCH DZ0329 Replace KRM_EXIT() with krm_handle_cancel()
krm_handle_cancel(); //KRM_EXIT();
// ZCH DZ0329 end>>>>
//AW0405:fux the bug 1 in VCD int turn 11
ie_send( IE_CORE_AB_REPEAT_CANCEL);
num = iMode[ num ];
#ifdef D_CORE_EVENT
d_Cmd = (((DWORD)PS_UPDATE_KARAOKE_RECORDING_MODE)<<16) + (DWORD) num;
ie_send_ex(IE_CORE_UPDATE_PS, (void *)d_Cmd);
#endif // D_CORE_EVENT
gkrm.iMode = num;
}
//
// Times choice handlers
//
#define TIMES_1 1
void kr_times_choice(MS_CHOICE *msChoice)
{
int iChoice;
int iDefault = gkrm.iRepeat;
if ( iDefault < 1 )
iDefault = 1;
else
if ( iDefault > 9 )
iDefault = 9;
iChoice = ITEMNUM_TIMES_1 + iDefault - TIMES_1;
msChoice->current_choice = iChoice;
}
static void kr_times_action(int num)
{
DWORD d_Cmd;
int iTimes = num - ITEMNUM_TIMES_1 + TIMES_1;
#ifdef NO_C_STDLIB
dbouts("\nTimes is ");
dbouti( num );
#endif // NO_C_STDLIB
//AW0405:cancel AB repeat and cancel recording action
//AW0405:fix the bug 2 in the VCD in turn 11
//<<<ZCH DZ0329 Replace KRM_EXIT() with krm_handle_cancel()
krm_handle_cancel(); //KRM_EXIT();
// ZCH DZ0329 end>>>>
//AW0405:fux the bug 1 in VCD int turn 11
ie_send( IE_CORE_AB_REPEAT_CANCEL);
num = iTimes;
#ifdef D_CORE_EVENT
d_Cmd = (((DWORD)PS_UPDATE_KARAOKE_RECORDING_TIMES)<<16) + (DWORD) num;
ie_send_ex(IE_CORE_UPDATE_PS, (void *)d_Cmd);
#endif // D_CORE_EVENT
gkrm.iRepeat = num;
}
//
// Quality choice menu system information
//
void kr_quality_choice(MS_CHOICE *msChoice)
{
int iChoice;
switch (gkrm.iQuality)
{
#ifndef KARAOKE_RECORDING_GSM //DM0328 different arithmetic for Kar REC
case KR_QUALITY_MEDIUM:
iChoice = ITEMNUM_KR_QUALITY_MEDIUM;
break;
#endif
case KR_QUALITY_HIGH:
iChoice = ITEMNUM_KR_QUALITY_HIGH;
break;
case KR_QUALITY_NORMAL:
// Fall through
default:
iChoice = ITEMNUM_KR_QUALITY_NORMAL;
break;
}
msChoice->current_choice = iChoice;
}
static void kr_quality_action(int num)
{
#ifndef KARAOKE_RECORDING_GSM //DM0328 different arithmetic for Kar REC
int iQuality[] = { KR_QUALITY_NORMAL, KR_QUALITY_MEDIUM, KR_QUALITY_HIGH };
#else
int iQuality[] = { KR_QUALITY_NORMAL, KR_QUALITY_HIGH };
#endif
#ifdef NO_C_STDLIB
dbouts("\nQuality is ");
dbouti( num );
#endif // NO_C_STDLIB
num = iQuality[ num ];
//<<<ZCH DZ0329 Replace KRM_EXIT() with krm_handle_cancel()
krm_handle_cancel(); //KRM_EXIT();
// ZCH DZ0329 end>>>>
//AW0405:fux the bug 1 in VCD int turn 11
ie_send( IE_CORE_AB_REPEAT_CANCEL);
ie_send_ex(IE_CORE_UPDATE_PS, PS_UPDATE_QUALITY( num ));
gkrm.iQuality = num;
}
static void layout (void)
{
go_CurrentLayout.m_bBigMemMap = FALSE;//USE_BIGMEMMAP_WHEN_REQUIRED;
go_CurrentLayout.m_cPixRes = 0;
go_CurrentLayout.m_wOriginX = 0;
#ifdef FONT32X24 //DM0605
go_CurrentLayout.m_wOriginY = MS_LINE_2;
#else
go_CurrentLayout.m_wOriginY = 60;
#endif
go_CurrentLayout.m_wWidth = LAYOUT_WIDTH;
go_CurrentLayout.m_wHeight = MS_LINE_4;
go_CurrentLayout.m_cNbrHole = 0;
go_CurrentLayout.m_cInitColor = 0;
go_CurrentLayout.m_cNbrColor = 16;
go_CurrentLayout.m_pColorPalette = (OSD_Palette *)MenuBitmapColor;
OSDSetLayout();
OSDSetFont(0);
#ifdef NO_C_STDLIB
dbouts("\nKARAOKE RECORDING LAYOUT");
#endif
}
static void on_kr_close(void)
{
#ifdef NO_C_STDLIB
rtouts("Karaoke recording screen closed\n");
#endif
SAFELY_DELETE(choice1)
SAFELY_DELETE(choice2)
SAFELY_DELETE(choice3)
}
void open_kr(void)
{
screen = MS_create_screen((MS_POS *)&screen_pos, screen_color, 0,on_kr_close, layout);
choice1 = MS_create_choice(&mode_choice_pos,i_color,&kr_mode_list,&dont_care_pos,kr_mode_action,MS_HOT_SPOT);
kr_mode_choice(choice1);
choice2 = MS_create_choice(×_choice_pos,i_color,&kr_times_list,&dont_care_pos,kr_times_action,MS_HOT_SPOT);
kr_times_choice(choice2);
choice3 = MS_create_choice(&quality_choice_pos,i_color,&kr_quality_list,&dont_care_pos,kr_quality_action,MS_HOT_SPOT);
kr_quality_choice(choice3);
MS_add_item((MS_DIALOG*)screen,(MS_WIDGET*)choice1,1);
MS_add_item((MS_DIALOG*)screen,(MS_WIDGET*)choice2,0);
MS_add_item((MS_DIALOG*)screen,(MS_WIDGET*)choice3,0);
MS_add_item((MS_DIALOG*)screen,(MS_WIDGET*)&mssMenuTitle,0);
MS_add_item((MS_DIALOG*)screen,(MS_WIDGET*)&mssKrMode,0);
MS_add_item((MS_DIALOG*)screen,(MS_WIDGET*)&mssTimes,0);
MS_add_item((MS_DIALOG*)screen,(MS_WIDGET*)&mssQuality,0);
MS_dialog_display((MS_DIALOG*)screen);
}
BOOL krm_is_recording_Mode(void)
{
if (( gkrm.iMode == KR_MODE_RECORD )||(gkrm.iMode == KR_MODE_COMPARE))
return TRUE;
return FALSE;
}
void KRM_EXIT(void)
{
EVENT evt = IE_CORE_UPDATE_PS;
void *param = NULL;
//ZORAN DZ0111: Update the Change of AdamW and DingMing
if (gkrm.iMode != KR_MODE_OFF )
{
//AW0108:delete thesee lines wait for reason from dm
if(0 != PM_GetRepeatAB())
{
PM_SetRepeatAB(PM_REPEAT_AB_B);
ie_send_ex(IE_CORE_AB_REPEAT, NULL);
}
gkrm.wState = 0;
param = PS_UPDATE_PLAYMODE(KR_OFF/*KR_STOP_SPECIAL_PLAYBACK*/ );
ie_send_ex(evt, param);
}
//AW0327:delete the next lines ,not turn off the kr mode to off
#if 1
//Aw0201:reset the karaoke recording mode to off
gkrm.iMode=KR_MODE_OFF;
gkrm.iQuality=1;//ITEMNUM_KR_QUALITY_MEDIUM;
#endif
//Aw0201:end
}
int Get_Current_Karaoke_Mode(void)//AW0110 :return the current karoake mode t o custumor.c let it know
{
return gkrm.iMode;
}
#endif // KARAOKE_RECORDING
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -