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

📄 kr_m.c

📁 Zoran VP2K731 DVD源代码,极具参考价值!
💻 C
📖 第 1 页 / 共 2 页
字号:
	  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(&times_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 + -