📄 nav_task.c
字号:
break;
case VOCAL_FADER:
set_vocal_fade_mode(VOCAL_CHANGER);
/* Send "VOCAL_CHANGER"message to OSD */
out_msg[1] = VOCAL_CHANGER;
break;
case VOCAL_OFF:
default:
set_vocal_fade_mode(VOCAL_FADER);
/* Send "VOCAL_FADER"message to OSD */
out_msg[1] = VOCAL_FADER;
}
if (UsrEventHandler(out_msg) != USR_SUCCESS)
{
DbgPrint(("\nUsrEventHandler FAILURE, %s, %d\n\n", __FILE__, __LINE__));
}
break;
#else
case KEY_SURROUND:
break;
#endif
/* Bring up the Program menu */
case KEY_PROGRAM:
if ( (nav_state == DRIVE_EMPTY) || (nav_state == UNLOADED) )
{
uop_prohibited_msg(0);
break;
}
else if ( (nav_state != NORMAL_PLAYING) && (nav_state != PAUSED) &&
(nav_state != STOPPED) && (nav_state != FULL_STOPPED) && (nav_state != CELL_STILL) )
{
uop_prohibited_msg(0);
break;
}
#if SUBTITLE_MODE == SUBTITLE_1
if (subtitle_menu)
{
break;
}
#endif
if (settmppml_on)
{
break;
}
if (program_on == TRUE)
{
program_on = FALSE;
}
else
{
A_B_count = repeat_count = 0;
if (repeat_mode != REPEAT_OFF)
{
repeat_mode = REPEAT_OFF;
UsrSendRepeatEvent(VDVD_INFO_REPEAT_OFF);
}
program_on = TRUE;
}
if (search_on == TRUE)
{
search_on = FALSE;
out_msg[0] = VDVD_STATUS_GOTO;
out_msg[1] = 0;
if (UsrEventHandler(out_msg) != USR_SUCCESS)
{
DbgPrint(("\nUsrEventHandler FAILURE, %s, %d\n\n", __FILE__, __LINE__));
}
}
if (echomenu_on == TRUE)
{
echomenu_on = FALSE;
out_msg[0] = VDVD_STATUS_ECHO;
out_msg[1] = echomenu_on;
if (UsrEventHandler(out_msg) != USR_SUCCESS)
{
DbgPrint(("\nUsrEventHandler FAILURE, %s, %d\n\n", __FILE__, __LINE__));
}
}
if (keymenu_on == TRUE)
{
keymenu_on = FALSE;
out_msg[0] = VDVD_STATUS_KEY_SHIFT;
out_msg[1] = keymenu_on;
if (UsrEventHandler(out_msg) != USR_SUCCESS)
{
DbgPrint(("\nUsrEventHandler FAILURE, %s, %d\n\n", __FILE__, __LINE__));
}
}
out_msg[0] = VDVD_STATUS_PROGRAM;
out_msg[1] = program_on;
if (UsrEventHandler(out_msg) != USR_SUCCESS)
{
DbgPrint(("\nUsrEventHandler FAILURE, %s, %d\n\n", __FILE__, __LINE__));
}
break;
case KEY_GOTO:
DBGPRINT(DBG_ON(DBG_TRACE), ("nav_task: case KEY_GOTO\n"));
if (nav_state == DRIVE_EMPTY)
{
uop_prohibited_msg(0);
break;
}
else if( (nav_state != NORMAL_PLAYING) && (nav_state != PAUSED) &&
(nav_state != STOPPED) && (nav_state != FULL_STOPPED) && (nav_state != CELL_STILL) )
{
uop_prohibited_msg(0);
break;
}
if (user_program_enable || repeat_mode|| A_B_count)
{
uop_prohibited_msg(0);
break;
}
#if SUBTITLE_MODE == SUBTITLE_1
if (subtitle_menu)
{
break;
}
#endif
if (settmppml_on)
{
break;
}
if (echomenu_on)
{
break;
}
if (keymenu_on)
{
break;
}
if (program_on)
{
search_on = FALSE;
search_mode = 0;
}
if (!search_on)
{
search_mode = 0;
}
if (search_mode == 0)
{
search_on = TRUE;
search_mode ++;
}
else if (search_mode == 1)
{
if ( (tt_srp[get_sprm(SPRM_TTN_TT_DOM) - 1].tt_pb_ty & 0x01) ||
(tt_srp[get_sprm(SPRM_TTN_TT_DOM) - 1].tt_pb_ty & 0x40) ||
(pgc_gi.pgc_uop_ctl[3] & 0x21) ||
((nvpck[CURRENT].pci_gi.vobu_uop_ctl[3] & 0x21) && (pgc_mode >= PGC_PG_PLAY))
|| (pgc_domain == VMGM_PGC) || (pgc_domain == VTSM_PGC) ||
(nav_state == FULL_STOPPED) ||
(vts_tmap[next_pgcn - 1].map_en_n == 0) )
{
search_on = FALSE;
search_mode = 0;
out_msg[0] = VDVD_STATUS_GOTO;
out_msg[1] = search_mode;
if (UsrEventHandler(out_msg) != USR_SUCCESS)
{
DbgPrint(("\nUsrEventHandler FAILURE, %s, %d\n\n", __FILE__, __LINE__));
}
break;
}
else
{
search_mode++;
}
}
else if (search_mode == 2)
{
search_on = FALSE;
search_mode = 0;
}
else
{
search_mode++;
}
if (program_on == TRUE)
{
program_on = FALSE;
out_msg[0] = VDVD_STATUS_PROGRAM;
out_msg[1] = program_on;
if (UsrEventHandler(out_msg) != USR_SUCCESS)
{
DbgPrint(("\nUsrEventHandler FAILURE, %s, %d\n\n", __FILE__, __LINE__));
}
}
out_msg[0] = VDVD_STATUS_GOTO;
out_msg[1] = search_mode;
if (UsrEventHandler(out_msg) != USR_SUCCESS)
{
DbgPrint(("\nUsrEventHandler FAILURE, %s, %d\n\n", __FILE__, __LINE__));
}
break;
case KEY_SHUFFLE_PLAY:
track_buffer_empty = 0;
if ( (nav_state == STOPPED) || (nav_state == FULL_STOPPED) || (nav_state == PAUSED) )
{
EnableNavCmdTimer();
}
if (!shuffle_on)
{
if ( (nav_state == UNLOADED) || (nav_state == DRIVE_EMPTY) )
{
uop_prohibited_msg(2);
break;
}
out_msg[0] = VDVD_STATUS_PLAY;
if (UsrEventHandler(out_msg) != USR_SUCCESS)
{
DbgPrint(("\nUsrEventHandler FAILURE, %s, %d\n\n", __FILE__, __LINE__));
}
if (nav_state == FULL_STOPPED)
{
start_drive(RESTART);
}
Enter_shuffle_mode();
abort_drive_reset_channel();
clear_nav_state();
play_ni();
current_program = 1;
user_program_enable = 1;
user_program_start = 0;
out_msg[0] = VDVD_STATUS_PLAY;
if (UsrEventHandler(out_msg) != USR_SUCCESS)
{
DbgPrint(("\nUsrEventHandler FAILURE, %s, %d\n\n", __FILE__, __LINE__));
}
playback_next_user_program(1);
player_state = NORMAL_PLAY;
}
else
{
Exit_shuffle_mode();
}
break;
/**************************************************************************
* MENU DOMAINS *
**************************************************************************/
case KEY_GOTO_BUTTON:
DBGPRINT(DBG_ON(DBG_TRACE), ("nav_task() - KEY_GOTO_BUTTON\n"));
if ((nav_state == STOPPED) || (nav_state == FULL_STOPPED) || (nav_state == DRIVE_EMPTY))
{
uop_prohibited_msg(0); /* player prohibited */
break;
}
/* Make sure that the current navigation data is applicable */
if (nv_pck_ready == 0)
{
uop_prohibited_msg(0);
break;
}
/* Check if user operation is prohibited for this pgc */
if (pgc_gi.pgc_uop_ctl[1] & 0x02)
{
uop_prohibited_msg(0);
break;
}
/* Check that button number is valid. If not, prohibit this command */
if (( message[1] <= nvpck[CURRENT].hl_gi.btn_ofn ) ||
( message[1] >= (ULONG)(nvpck[CURRENT].hl_gi.btn_ofn + nvpck[CURRENT].hl_gi.nsl_btn_ns + 1) ))
{
uop_prohibited_msg(0);
break;
}
if (nav_state == PAUSED)
{
EnableNavCmdTimer();
}
change_button_num((UBYTE) (message[1]));
if (select_or_active_button()) /* button is already activated */
{
break;
}
/*
* Order of button activation needs to be...
* 1. Highlight button then disable button
* 2. Do abort_drive_reset_channel() if necessary.
* 3. Execute button command
*/
/* activate current selected button */
activate_selected_button();
/* Make the highlight visable */
OS_TaskDelay(OS_WAIT_1S/4);
/* disable the button */
Button.button_cmd = BTN_DISABLE;
PEiStreamCtrlSendDVDButtonCmd(tPE, &Button);
if ( TRUE == IsBranchCommand(nvpck[CURRENT].btn_cmd[button_num]))
{
normalize();
send_another_cell_request = reset_scr_flag = 0;
abort_drive_reset_channel();
during_search = 1;
reset_scr_flag = 0x05; /* CELL_V1 */
num_of_times = vobu_button_hl = 0;
cell_play_counter = 0;
/* Prevent next play OR select to activate button */
/* eventhough NEW nv_pck hac not been arrived */
nvpck[CURRENT].hl_gi.btn_ns = 0;
}
retval = (UCHAR)(button_cell_cmd(BUTTON_CMD));
if (retval == 0)
{
if (pgc_domain == TT_PGC)
{
rsm_info.valid = 0;
if ( !(get_sprm(SPRM_SPSTN_TT_DOM) & 0x40) ) /* subtitle not enabled in title domain */
{
spu_disp_off();
}
}
}
else
{
if ( (0 != pgc_cmdti.c_cmd_n) && (c_pbi[next_cell - 1].c_cat[3]) )
{
for (i = 0; i < SIZEOF_CMD; i++)
{
button_cmd_buff[0][i] = c_cmd_buff[c_pbi[next_cell - 1].c_cat[3] - 1][i];
}
retval = (UCHAR)(button_cell_cmd(CELL_CMD));
}
}
break;
case KEY_SETTMPPML:
DBGPRINT(DBG_ON(DBG_TRACE), ("nav_task() - KEY_SETTMPPML\n"));
settmppml_on = FALSE;
if (message[1] == 0)
{
DbgPrint(("nav_task() - parental play (0)\n"));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -