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

📄 lr.c

📁 Zoran VP2K731 DVD源代码,极具参考价值!
💻 C
字号:
/***********************************************************************/
/* File:															   */
/*	  Copyright (c) 2000 ZORAN Corporation, All Rights Reserved		   */
/*	  THIS IS PROPRIETARY SOURCE CODE OF ZORAN CORPORATION             */
/*																	   */
/* ===========                                                         */
/* Descripton:                                                         */
/* ===========                                                         */
/*                                                                     */
/* Log:                                                                */
/* ===                                                                 */
/* $Name: V_1_16 V_1_15 V_1_14 V_1_13 V_1_12 NV_1_00 V_1_11 $                                                            
/* $Header: v:/dsg/rcs/dsg/vp2k/Customer/menu/zoran/lr.c 1.11 2001/06/06 06:15:08 dingming Exp $                                                          
/* $Log: lr.c $										                       
/* Revision 1.11  2001/06/06 06:15:08  dingming										                       
/* font 32X24 complile										                       
/* Revision 1.10  2001/03/09 05:11:10  charlie										                       
/* Cast MS_create_choice text_list parameter as non-const										                       
/* Revision 1.9  2000/11/17 18:54:13  charlie										                       
/* Use C_FOCUSED										                       
/* Revision 1.8  2000/11/09 04:07:31  cliff										                       
/***********************************************************************/
#include <stdio.h>
#include <string.h>
#include "sysdefs.h"
#include "..\..\..\ui\menu_sys\ms_wdgt.h"
#include "..\..\..\ui\menu_sys\osd_drv.h"
#include "..\..\..\decoder\osdrendr.h"
#include "..\..\..\decoder\osdlayou.h"
#ifdef FONT32X24
#include "..\..\..\customer\dragon\strings\strings.h"	//DM0605
#else
#include "..\..\..\ui\strings\strings.h"
#endif
#include "menu_var.h"
#include "..\..\..\playcore\ps\ps.h"
#include "..\..\..\playcore\coremain\coregdef.h"
#include "..\..\..\kernel\eventdef.h"

// REMINDER This is not needed if we don't use oHWLimit
#include "..\..\..\Decoder\decoder.h"
#include "lr.h"

/*

//
// Choice labels which should be defined and added to the parent by the caller
//

const MS_STATIC mssLRMode = {
	{
	0,
	ALIGN_LEFT,
	I_COLOR,
	{LRMODE_X, LRMODE_Y, 200, OPTION_HEIGHT},
	NO_PARENT,
	static_user_op,
	},
	(void *)S_LR_MODE
};

*/

//
// L/R Mode (no karaoke) item information
//

const OSD_MESSAGES lr_nokar_list_c[] = {
	S_STEREO,
	S_LEFT,
	S_RIGHT,
	S_MIX
};

const MS_TEXT_LIST lr_nokar_list = {
	4,(int *)lr_nokar_list_c
};

//
// L/R Mode Karaoke (non-AC3) item information
//

const OSD_MESSAGES lr_kar_list_c[] = {
	S_STEREO,
	S_LEFT,
	S_RIGHT,
	S_MIX,
	S_PARTNER_LEFT,
	S_PARTNER_RIGHT
};

const MS_TEXT_LIST lr_kar_list = {
	6,(int *)lr_kar_list_c
};

//
// L/R Mode Karaoke AC3 item information
//

const OSD_MESSAGES lr_kar_ac3_list_c[] = {
	S_STEREO,
	S_LEFT,
	S_RIGHT,
	S_NO_VOCAL,
	S_PARTNER_STEREO,
	S_PARTNER_LEFT,
	S_PARTNER_RIGHT
};

const MS_TEXT_LIST lr_kar_ac3_list = {
	7,(int *)lr_kar_ac3_list_c
};

//
// L/R Mode (no karaoke) handling
//

void lr_adjust( MS_CHOICE *msChoice, int bKaraokeSetting )
{
  switch ( bKaraokeSetting )
  {
	case KARAOKE_SETTING_OFF:
	  msChoice->text_list = (MS_TEXT_LIST *) &lr_nokar_list;
	  msChoice->action = lr_nokar_action;
	  break;

	case KARAOKE_SETTING_ON:
	  if ( gcst.mAudioStream == AUDIO_STREAM_AC3 )
	  {
		msChoice->text_list = (MS_TEXT_LIST *) &lr_kar_ac3_list;
		msChoice->action = lr_kar_ac3_action;
	  }
	  else
	  {
		msChoice->text_list = (MS_TEXT_LIST *) &lr_kar_list;
		msChoice->action = lr_kar_action;
	  }
	  break;
  } // switch
}

void lr_nokar_choice(MS_CHOICE *msChoice)
{
  int iChoice;
  
  switch (gtps.mDMM)
  {  
	case DMM_SETTING_LEFT_ONLY:
	  iChoice = ITEMNUM_NOKAR_LEFT;
	  break;

	case DMM_SETTING_RIGHT_ONLY:
	  iChoice = ITEMNUM_NOKAR_RIGHT;
	  break;

	case DMM_SETTING_AVERAGE:
	  iChoice = ITEMNUM_NOKAR_MIX;
	  break;

	case DMM_SETTING_NORMAL:
	  // Fall through

	default:
	  iChoice = ITEMNUM_NOKAR_STEREO;
	  break;
  }
  msChoice->current_choice = iChoice;
}

void lr_nokar_action(int num)
{
  DWORD d_Cmd;
  int iLR[] = { DMM_SETTING_NORMAL, DMM_SETTING_LEFT_ONLY, DMM_SETTING_RIGHT_ONLY, DMM_SETTING_AVERAGE };

  dbouts("\nL/R Mode is ");
  dbouti( num );

  num = iLR[ num ];
  d_Cmd = (((DWORD)PS_UPDATE_DMM_SETTING)<<16) + (DWORD) num;
  ie_send_ex(IE_CORE_UPDATE_PS, (void *)d_Cmd);

  d_Cmd = (DWORD) PARTNER_SETTING_OFF;
  d_Cmd += (((DWORD)PS_UPDATE_PARTNER_SETTING)<<16);
  ie_send_ex(IE_CORE_UPDATE_PS, (void *)d_Cmd);
}

//
// L/R Mode Karaoke (non-AC3) handling
//

void lr_kar_choice(MS_CHOICE *msChoice)
{
  int iChoice;
  
  switch (gtps.mDMM)
  {  
	case DMM_SETTING_LEFT_ONLY:
	  if ( gtps.mPartner )
		iChoice = ITEMNUM_KAR_PARTNER_LEFT;
	  else
		iChoice = ITEMNUM_KAR_LEFT;
	  break;

	case DMM_SETTING_RIGHT_ONLY:
	  if ( gtps.mPartner )
		iChoice = ITEMNUM_KAR_PARTNER_RIGHT;
	  else
		iChoice = ITEMNUM_KAR_RIGHT;
	  break;

	case DMM_SETTING_AVERAGE:
	  iChoice = ITEMNUM_KAR_MIX;
	  break;

	case DMM_SETTING_NORMAL:
	  // Fall through

	default:
	  iChoice = ITEMNUM_KAR_STEREO;
	  break;
  }
  msChoice->current_choice = iChoice;
}

void lr_kar_action(int num)
{
  DWORD d_Cmd;
  int iLR[] = { DMM_SETTING_NORMAL, DMM_SETTING_LEFT_ONLY, DMM_SETTING_RIGHT_ONLY, DMM_SETTING_AVERAGE, DMM_SETTING_LEFT_ONLY, DMM_SETTING_RIGHT_ONLY };
  int iPartner[] = { PARTNER_SETTING_OFF, PARTNER_SETTING_OFF, PARTNER_SETTING_OFF, PARTNER_SETTING_OFF, PARTNER_SETTING_ON, PARTNER_SETTING_ON };

  dbouts("\nL/R Mode is ");
  dbouti( num );

  d_Cmd = (DWORD) iLR[ num ];
  d_Cmd += (((DWORD)PS_UPDATE_DMM_SETTING)<<16);
  ie_send_ex(IE_CORE_UPDATE_PS, (void *)d_Cmd);

  d_Cmd = (DWORD) iPartner[ num ];
  d_Cmd += (((DWORD)PS_UPDATE_PARTNER_SETTING)<<16);
  ie_send_ex(IE_CORE_UPDATE_PS, (void *)d_Cmd);
}

//
// L/R Mode Karaoke AC3 handling
//

void lr_kar_ac3_choice(MS_CHOICE *msChoice)
{
  int iChoice;
  
  switch (gtps.mDMM)
  {  
	case DMM_SETTING_LEFT_ONLY:
	  if ( gtps.mPartner )
		iChoice = ITEMNUM_KAR_AC3_PARTNER_LEFT;
	  else
		iChoice = ITEMNUM_KAR_AC3_LEFT;
	  break;

	case DMM_SETTING_RIGHT_ONLY:
	  if ( gtps.mPartner )
		iChoice = ITEMNUM_KAR_AC3_PARTNER_RIGHT;
	  else
		iChoice = ITEMNUM_KAR_AC3_RIGHT;
	  break;

	case DMM_SETTING_AVERAGE:
	  iChoice = ITEMNUM_KAR_AC3_NO_VOCAL;
	  break;

	case DMM_SETTING_NORMAL:
	  // Fall through

	default:
	  if ( gtps.mPartner )
		iChoice = ITEMNUM_KAR_AC3_PARTNER_STEREO;
	  else
		iChoice = ITEMNUM_KAR_AC3_STEREO;
	  break;
  }
  msChoice->current_choice = iChoice;
}

void lr_kar_ac3_action(int num)
{
  DWORD d_Cmd;
  int iLR[] = { DMM_SETTING_NORMAL, DMM_SETTING_LEFT_ONLY, DMM_SETTING_RIGHT_ONLY, DMM_SETTING_AVERAGE, DMM_SETTING_NORMAL, DMM_SETTING_LEFT_ONLY, DMM_SETTING_RIGHT_ONLY };
  int iPartner[] = { PARTNER_SETTING_OFF, PARTNER_SETTING_OFF, PARTNER_SETTING_OFF, PARTNER_SETTING_OFF, PARTNER_SETTING_ON, PARTNER_SETTING_ON, PARTNER_SETTING_ON };

  dbouts("\nL/R Mode is ");
  dbouti( num );

  d_Cmd = (DWORD) iLR[ num ];
  d_Cmd += (((DWORD)PS_UPDATE_DMM_SETTING)<<16);
  ie_send_ex(IE_CORE_UPDATE_PS, (void *)d_Cmd);

  d_Cmd = (DWORD) iPartner[ num ];
  d_Cmd += (((DWORD)PS_UPDATE_PARTNER_SETTING)<<16);
  ie_send_ex(IE_CORE_UPDATE_PS, (void *)d_Cmd);
}

/*

//
// These must be done in the caller's close function for the container menu
//

static void on_lr_close(void)
{
	printf("LR closed\n");
	SAFELY_DELETE(LR_CHOICE);

}
*/


MS_CHOICE *open_lr_choice(const MS_POS *p_pos, MS_COLOR msColor, const MS_POS *p_choice_pos)
{
	MS_CHOICE *choice;
	
	if ( !gtps.mKaraoke )
	{
	  choice = MS_create_choice(p_pos,msColor,&lr_nokar_list,p_choice_pos,lr_nokar_action,MS_HOT_SPOT);
	  lr_nokar_choice(choice);
	}
	else
	if ( gcst.mAudioStream == AUDIO_STREAM_AC3 )
	{
	  choice = MS_create_choice(p_pos,msColor,&lr_kar_ac3_list,p_choice_pos,lr_kar_ac3_action,MS_HOT_SPOT);
	  lr_kar_ac3_choice(choice);
	}
	else
	{
	  choice = MS_create_choice(p_pos,msColor,&lr_kar_list,p_choice_pos,lr_kar_action,MS_HOT_SPOT);
	  lr_kar_choice(choice);
	}

	return choice;
}

/*

//
// These must be done in the caller's open function for the container menu
//

void open_lr(void)
{
	screen = MS_create_screen((MS_POS *)&screen_pos,screen_color,0,on_lr_close,layout);

#ifdef DISABLE
	if ( !gtps.mKaraoke )
	{
	  LR_CHOICE = MS_create_choice(&lr_choice_pos,i_color,&lr_nokar_list,&dont_care_pos,lr_nokar_action,MS_HOT_SPOT);
	  lr_nokar_choice(LR_CHOICE);
	}
	else
	if ( gcst.mAudioStream == AUDIO_STREAM_AC3 )
	{
	  LR_CHOICE = MS_create_choice(&lr_choice_pos,i_color,&lr_kar_ac3_list,&dont_care_pos,lr_kar_ac3_action,MS_HOT_SPOT);
	  lr_kar_ac3_choice(LR_CHOICE);
	}
	else
	{
	  LR_CHOICE = MS_create_choice(&lr_choice_pos,i_color,&lr_kar_list,&dont_care_pos,lr_kar_action,MS_HOT_SPOT);
	  lr_kar_choice(LR_CHOICE);
	}
#else
	 LR_CHOICE = open_lr_choice(&lr_choice_pos, i_color, &dont_care_pos);
#endif // DISABLE

	MS_add_item((MS_DIALOG*)screen,(MS_WIDGET*)LR_CHOICE, C_FOCUSED);

	MS_add_item((MS_DIALOG*)screen,(MS_WIDGET*)&mssTitle, !C_FOCUSED);

	MS_add_item((MS_DIALOG*)screen,(MS_WIDGET*)&mssLRMode, !C_FOCUSED);

	MS_dialog_display((MS_DIALOG*)screen);
}

*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -