📄 metanav.cpp
字号:
{
DvdAppSetParentalLevel(0);
}
else
{
DvdAppSetParentalLevel(m_pConfigSettings->parental);
}
break;
#ifdef VR_ENABLE
case MEDIA_FORMAT_VR:
break;
#endif
#ifdef BDROM_ENABLE
case MEDIA_FORMAT_BDROM:
/*
* Check if parental protect setting is on. If it is turned off then
* just set the parental level to least restrictive (value of 255).
*/
if (m_pConfigSettings->parental_on_off == PARENTAL_OFF)
{
BDROMAppSetParentalLevel(255);
}
else
{
BDROMAppSetParentalLevel(m_pConfigSettings->parental);
}
break;
#endif
default:
break;
}
}
/**
* Update the navigator with current aspect ratio configuration setting.
*
* @param
* none
*
* @retval
* none
*/
void cMetaNav::UpdateTvType(void)
{
PE_ICONFIGURE_ASPECT_RATIO aspect_ratio;
if (m_pConfigSettings != NULL)
{
switch (m_pConfigSettings->tv_type)
{
case VDVD_ASPECT_RATIO_4X3_PANSCAN:
aspect_ratio = ASPECT_RATIO_4X3_PANSCAN;
break;
case VDVD_ASPECT_RATIO_4X3_LETTERBOX:
aspect_ratio = ASPECT_RATIO_4X3_LETTERBOX;
break;
case VDVD_ASPECT_RATIO_4X3_LETTERBOX_REMOVED:
aspect_ratio = ASPECT_RATIO_4X3_LETTERBOX_REMOVED;
break;
case VDVD_ASPECT_RATIO_16X9:
aspect_ratio = ASPECT_RATIO_16X9;
break;
case VDVD_ASPECT_RATIO_16X9_WINDOWBOX:
aspect_ratio = ASPECT_RATIO_16X9_WINDOWBOX;
break;
default:
aspect_ratio = ASPECT_RATIO_16X9;
break;
}
/* DVD does not support 16X9 window box */
if ( (m_MediaFormat == MEDIA_FORMAT_DVD_A) || (m_MediaFormat == MEDIA_FORMAT_DVD_V) )
{
if (aspect_ratio == ASPECT_RATIO_16X9_WINDOWBOX)
{
aspect_ratio = ASPECT_RATIO_16X9;
}
}
/*
* Set aspect ratio
*/
PEiConfigureSetAspectRatio(m_PE, aspect_ratio);
/* Set system parameter in active nav */
switch (m_MediaFormat)
{
case MEDIA_FORMAT_DVD_A:
case MEDIA_FORMAT_DVD_V:
DvdAppSetAspectRatio(aspect_ratio);
break;
#ifdef VCD_ENABLE
case MEDIA_FORMAT_VCD:
case MEDIA_FORMAT_SVCD:
VcdAppSetAspectRatio(aspect_ratio);
break;
#endif
#ifdef BDROM_ENABLE
case MEDIA_FORMAT_BDROM:
BDROMAppSetAspectRatio((VDVD_ASPECT_RATIO)m_pConfigSettings->tv_type);
break;
#endif
default:
break;
}
}
}
/**
* Update the navigator with current video format configuration setting.
*
* @param
* none
*
* @retval
* none
*/
void cMetaNav::UpdateVideoFormat(void)
{
PE_ICONFIGURE_VIDEO_FORMAT vidFormat;
if (m_pConfigSettings != NULL)
{
switch (m_pConfigSettings->video_format)
{
case VDVD_VIDEO_FORMAT_NTSC:
vidFormat = VIDEO_FORMAT_NTSC;
break;
case VDVD_VIDEO_FORMAT_480P:
vidFormat = VIDEO_FORMAT_480P;
break;
case VDVD_VIDEO_FORMAT_576P:
vidFormat = VIDEO_FORMAT_576P;
break;
case VDVD_VIDEO_FORMAT_720P_59_94:
vidFormat = VIDEO_FORMAT_720P_59_94;
break;
case VDVD_VIDEO_FORMAT_720P_50:
vidFormat = VIDEO_FORMAT_720P_50;
break;
case VDVD_VIDEO_FORMAT_720P_24:
vidFormat = VIDEO_FORMAT_720P_24;
break;
case VDVD_VIDEO_FORMAT_720P_23_976:
vidFormat = VIDEO_FORMAT_720P_23_976;
break;
case VDVD_VIDEO_FORMAT_1080I_29_97:
vidFormat = VIDEO_FORMAT_1080I_29_97;
break;
case VDVD_VIDEO_FORMAT_1080I_25:
vidFormat = VIDEO_FORMAT_1080I_25;
break;
case VDVD_VIDEO_FORMAT_1080P_24:
vidFormat = VIDEO_FORMAT_1080P_24;
break;
case VDVD_VIDEO_FORMAT_1080P_23_976:
vidFormat = VIDEO_FORMAT_1080P_23_976;
break;
case VDVD_VIDEO_FORMAT_PAL:
vidFormat = VIDEO_FORMAT_PAL;
break;
default:
vidFormat = VIDEO_FORMAT_NTSC;
break;
}
/*
* Set video format
*/
ChangeVideoOutput((VDVD_VIDEO_FORMAT)m_pConfigSettings->video_format);
/* Set system parameter in active nav */
switch (m_MediaFormat)
{
case MEDIA_FORMAT_DVD_A:
case MEDIA_FORMAT_DVD_V:
DvdAppSetVideoFormat(vidFormat);
break;
#ifdef VCD_ENABLE
case MEDIA_FORMAT_VCD:
case MEDIA_FORMAT_SVCD:
VcdAppSetVideoFormat(vidFormat);
break;
#endif
#ifdef BDROM_ENABLE
case MEDIA_FORMAT_BDROM:
BDROMAppSetVideoFormat((VDVD_VIDEO_FORMAT)m_pConfigSettings->video_format);
break;
#endif
default:
break;
}
}
}
/**
* Update the navigator with current spdif configuration setting.
*
* @param
* none
*
* @retval
* none
*/
void cMetaNav::UpdateSPDIF(void)
{
PE_ICONFIGURE_DIGITAL_AUDIO digAudioOut;
if (m_pConfigSettings != NULL)
{
switch (m_pConfigSettings->spdif)
{
case VDVD_SPDIF_PCM:
digAudioOut = AUDIO_CHANNELS_2;
break;
case VDVD_SPDIF_COMPRESSED:
digAudioOut = AUDIO_CHANNELS_5p1;
break;
default:
digAudioOut = AUDIO_CHANNELS_2;
break;
}
/*
* Set digital audio output
*/
PEiConfigureSetDigitalAudioOutput(m_PE, digAudioOut);
/* Set system parameter in active nav */
switch (m_MediaFormat)
{
case MEDIA_FORMAT_DVD_A:
case MEDIA_FORMAT_DVD_V:
DvdAppSetDigitalAudioOutput(digAudioOut);
break;
#ifdef VCD_ENABLE
case MEDIA_FORMAT_VCD:
case MEDIA_FORMAT_SVCD:
VcdAppSetDigitalAudioOutput(digAudioOut);
break;
#endif
#ifdef BDROM_ENABLE
case MEDIA_FORMAT_BDROM:
BDROMAppSetDigitalAudioOutput(digAudioOut);
break;
#endif
default:
break;
}
}
}
ULONG cMetaNav::GetLocationHandleSize(VDVD_MEDIA_FORMAT mediaFormat)
{
ULONG ulSize = 0;
/* Get location handle size from specified nav */
switch (mediaFormat)
{
case MEDIA_FORMAT_DVD_A:
case MEDIA_FORMAT_DVD_V:
ulSize = DvdAppGetLocationHandleSize();
break;
#ifdef VR_ENABLE
case MEDIA_FORMAT_VR:
break;
#endif
#ifdef VCD_ENABLE
case MEDIA_FORMAT_VCD:
case MEDIA_FORMAT_SVCD:
ulSize = VcdAppGetLocationHandleSize();
break;
#endif
#ifdef CDDA_ENABLE
case MEDIA_FORMAT_CDDA:
break;
#endif
#ifdef BDROM_ENABLE
case MEDIA_FORMAT_BDROM:
ulSize = BDROMAppGetLocationHandleSize();
break;
#endif
default:
break;
}
return (ulSize);
}
METANAV_STATUS cMetaNav::GetLocation(PVOID pvLocation, ULONG ulSize)
{
METANAV_STATUS status = METANAV_SUCCESS;
if (pvLocation == NULL)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("cMetaNav::GetLocation -- null pointer!\n"));
return (METANAV_FAILURE);
}
/* Get play location from active nav */
switch (m_MediaFormat)
{
case MEDIA_FORMAT_DVD_A:
case MEDIA_FORMAT_DVD_V:
{
DVDAPP_STATUS dvd_status;
/* get location from bd nav */
dvd_status = DvdAppGetLocation(pvLocation, ulSize);
if (dvd_status == DVDAPP_PROHIBITED)
{
status = METANAV_PROHIBITED;
}
else if (dvd_status != DVDAPP_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("cMetaNav::GetLocation -- failed to get location from dvd nav!\n"));
status = METANAV_FAILURE;
}
}
break;
#ifdef VR_ENABLE
case MEDIA_FORMAT_VR:
status = METANAV_PROHIBITED;
break;
#endif
#ifdef VCD_ENABLE
case MEDIA_FORMAT_VCD:
case MEDIA_FORMAT_SVCD:
{
VCDAPP_STATUS vcd_status;
/* get location from bd nav */
vcd_status = VcdAppGetLocation(pvLocation, ulSize);
if (vcd_status == VCDAPP_PROHIBITED)
{
status = METANAV_PROHIBITED;
}
else if (vcd_status != DVDAPP_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("cMetaNav::GetLocation -- failed to get location from vcd nav!\n"));
status = METANAV_FAILURE;
}
}
break;
#endif
#ifdef CDDA_ENABLE
case MEDIA_FORMAT_CDDA:
status = METANAV_PROHIBITED;
break;
#endif
#ifdef BDROM_ENABLE
case MEDIA_FORMAT_BDROM:
{
BDAPP_STATUS bd_status;
/* get location from bd nav */
bd_status = BDROMAppGetLocation(pvLocation, ulSize);
if (bd_status == BDAPP_PROHIBITED)
{
status = METANAV_PROHIBITED;
}
else if (bd_status != BDAPP_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("cMetaNav::GetLocation -- failed to get location from bd nav!\n"));
status = METANAV_FAILURE;
}
}
break;
#endif
default:
status = METANAV_PROHIBITED;
break;
}
return (status);
}
ULONG cMetaNav::GetNavState(void)
{
ULONG ulNavState = VDVD_STATUS_UNKNOWN;
/*
* If there is not media specific nav running, then the player is either
* in the unloaded state, drive empty state, or in standby.
* Otherwise, query the media specific nav to get the state.
*/
if (m_MediaFormat == MEDIA_FORMAT_UNKNOWN)
{
/*
* First, check to see if we are in standby mode. If not, then check if tray
* is open. If tray is not open, then the drive must be empty.
*/
if (m_fStandbyMode)
{
ulNavState = VDVD_STATUS_STANDBY_ON;
}
else
{
/*
* If the tray is not open, then the drive is empty.
*/
if (m_LoaderStatus.ulTrayStatus != LOADER_TRAY_CLOSED)
{
ulNavState = VDVD_STATUS_OPEN;
}
else
{
ulNavState = VDVD_STATUS_NO_DISC;
}
}
}
else
{
#ifdef CDDA_ENABLE
CDDA_StateInfo cdda_state = CDDA_STATE_STOPPED;
#endif
/* Get state of active nav */
switch (m_MediaFormat)
{
case MEDIA_FORMAT_DVD_A:
case MEDIA_FORMAT_DVD_V:
ulNavState = (ULONG)DvdAppGetPlayState();
break;
#ifdef VR_ENABLE
case MEDIA_FORMAT_VR:
break;
#endif
#ifdef VCD_ENABLE
case MEDIA_FORMAT_SVCD:
case MEDIA_FORMAT_VCD:
break;
#endif
#ifdef CDDA_ENABLE
case MEDIA_FORMAT_CDDA:
cdda_state = CddaAppGetState();
switch (cdda_state)
{
case CDDA_STATE_HOLD:
ulNavState = VDVD_STATUS_STOP;
break;
case CDDA_STATE_STOPPED:
ulNavState = VDVD_STATUS_FULLSTOP;
break;
case CDDA_STATE_PLAY:
ulNavState = VDVD_STATUS_PLAY;
break;
case CDDA_STATE_PAUSED:
ulNavState = VDVD_STATUS_PAUSE;
break;
case CDDA_STATE_FAST_FWD:
ulNavState = VDVD_STATUS_FAST_F;
break;
default:
break;
}
break;
#endif
#ifdef BDROM_ENABLE
case MEDIA_FORMAT_BDROM:
ulNavState = (ULONG)BDROMAppGetPlayState();
break;
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -