?? guicommands.cpp.svn-base
字號:
/***************************************** Copyright (c) 2001-2003 Sigma Designs, Inc. All Rights Reserved Proprietary and Confidential *****************************************/#ifndef ALLOW_OS_CODE#define ALLOW_OS_CODE 1#endif //ALLOW_OS_CODE#include <unistd.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include "gui.h"#include "guicommands.h"#include "guinavigation.h"#include "rmasfdemux/include/wmdrmopl.h"#include "rmlibhttp/include/rmlibhttp.h"#include <mntent.h>#include <fcntl.h>#include <sys/stat.h>#include <sys/time.h>#include <sys/mount.h>#include "../rmgfx_library/include/subreader.h"extern sub_context subs;RMuint32 VolumeLevels[MAX_VOLUME_LEVELS] ={ 0, // mute 0x00200000, 0x00285145, 0x0032cbfc, // -42dB ... -38dB 0x00400000, 0x0050a28b, 0x006597fa, // -36dB ... -32dB 0x00800000, 0x00a14518, 0x00cb2ff5, // -30dB ... -26dB 0x01000000, 0x01428a2f, 0x01965fea, // -24dB ... -20dB 0x02000000, 0x0285145f, 0x032cbfd5, // -18dB ... -14dB 0x04000000, 0x050a28be, 0x06597fa9, // -12dB ... -8dB 0x08000000, 0x0a14517d, 0x0cb2ff53, // -6dB ... -2dB 0x10000000, 0x1428a2fa, 0x1965fea6, // 0dB ... 4dB 0x20000000, 0x285145f5, 0x32cbfd4c, // 6dB ... 10dB 0x40000000, 0x50a28be7, 0x6597fa95, // 12dB ... 16dB 0x80000000 // 18dB };#if 1#define GUIDBG ENABLE#else#define GUIDBG DISABLE#endifextern RMuint8 g_timer[MAX_GUI_TIMERS];extern RMint16 animate;extern RMint16 loader;extern RMcriticalsection cs;RMstatus RMcuracaoGui::SavePlayerSettings(){ int file; ssize_t ret = -1; RMstatus status = RM_OK; if (RMMemcmp(&m_loadsettings, &m_settings, sizeof(m_settings)) != 0) { RMDBGLOG((GUIDBG, "Saving player settings, using %s file, size %d\n", SETTINGS_FILE, sizeof(m_settings))); PrintPlayerSettings(m_settings); m_settings.crc = CalculateCRC((RMuint8*) &m_settings, sizeof(m_settings) / 2); RMDBGLOG((GUIDBG, "Calculated CRC = 0x%08X\n", m_settings.crc)); file = open(SETTINGS_FILE, O_RDWR | O_SYNC); if (file != -1) { RMDBGLOG((GUIDBG, "Writting ...\n")); ret = write(file, &m_settings, sizeof(m_settings)); RMDBGLOG((GUIDBG, "Fsync ...\n")); fsync(file); RMDBGLOG((GUIDBG, "Close ...\n")); close(file); RMDBGLOG((GUIDBG, "Finish saving settings\n")); } status = (ret != -1 ? RM_OK : RM_ERROR); if (RMFAILED(status)) { RMDBGLOG((GUIDBG, "Error saving player settings!!\n")); } else { // not to save again... RMMemcpy(&m_loadsettings, &m_settings, sizeof(m_settings)); RMDBGLOG((GUIDBG, "Saved player settings succeeded!!\n")); } } return status;}RMstatus RMcuracaoGui::RetrievePlayerSettings(){ int file; ssize_t ret = -1; RMuint32 current_crc; RMuint32 calculated_crc; RMDBGLOG((GUIDBG, "Retrieving player settings, using %s file\n", SETTINGS_FILE)); // Read settings if already saved file = open(SETTINGS_FILE, O_RDONLY | O_SYNC); if (file != -1) { RMDBGLOG((GUIDBG, "Reading previous settings, size %u...\n", sizeof(m_settings))); ret = read(file, &m_settings, sizeof(m_settings)); if (ret != sizeof(m_settings)) RMDBGLOG((GUIDBG, "Error reading player settings\n")); close(file); current_crc = m_settings.crc; m_settings.crc = 0; calculated_crc = CalculateCRC((RMuint8*) &m_settings, sizeof(m_settings) / 2); if (current_crc != calculated_crc) { RMDBGLOG((GUIDBG, "CRC mismatch ... resetting settings: found = 0x%08X, calculated = 0x%08X\n", current_crc, calculated_crc)); SetDefaultPlayerSettings();#ifdef GUI_REFID_3 // an upgrade may be going on,merge previous settings if(RMSUCCEEDED(MergePreviousPlayerSettings())) calculated_crc = CalculateCRC((RMuint8*)&m_settings, sizeof(m_settings)/2);#endif m_settings.crc = calculated_crc; // need to open it in write mode ... file = open(SETTINGS_FILE, O_WRONLY | O_SYNC); ret = write(file, &m_settings, sizeof(m_settings)); if (ret != sizeof(m_settings)) RMDBGLOG((GUIDBG, "Error writting player settings\n")); fsync(file); close(file); } else { RMDBGLOG((GUIDBG, "CRC match ... found = 0x%08X, calculated = 0x%08X\n", current_crc, calculated_crc)); } } else { // Set default settings SetDefaultPlayerSettings(); RMDBGLOG((GUIDBG, "No previous Settings, creating the settings file...\n")); file = open(SETTINGS_FILE, O_WRONLY | O_SYNC | O_CREAT, S_IRUSR | S_IWUSR); if (file != -1) { ret = write(file, &m_settings, sizeof(m_settings)); if (ret != sizeof(m_settings)) RMDBGLOG((GUIDBG, "Error writting player settings\n")); fsync(file); close(file); } } // save to compare before saving RMMemcpy(&m_loadsettings, &m_settings, sizeof(m_settings)); ApplyPlayerSettings(); return RM_OK;}RMstatus RMcuracaoGui::ApplyPlayerSettings(){ // RMuint32 videoOut; RMDBGLOG((GUIDBG, "Applying player settings : \n")); SetVolume(m_settings.volume); SetBrightness(m_settings.brightness); SetContrast(m_settings.contrast); SetSaturation(m_settings.saturation); SetAudioOut(m_settings.audioOut); SetAudioChannels(m_settings.audioChannels); SetVCDPBC(m_settings.vcdPBC); SetTVType(m_settings.tvType);#ifdef GUI_REFID_2 SetTVStandard(m_settings.tvStandard, 1111, NULL);#else SetTVStandard(m_settings.tvStandard, 0, NULL);#endif SetParentalLevel(m_settings.dvdParentalLevel); m_screenSaverSpeed = m_settings.screenSaverDelay; // video out settings m_videoOut = GetActiveVideoOutput(m_settings.activeVideoOutput); SetDVIHDMIAutoEDID(m_videoOut, FALSE); // First, check auto-dvi connection if forceNoHMDI is FALSE if (m_settings.forceNoHDMI == FALSE) { // auto HDMI ON RMDBGLOG((ENABLE, "************ Testing player output on DVI/HDMI\n")); if (m_context->decoder->GetHDMIConnected()) { m_videoOut = SET_HDMI_AUTO_ON_COMMAND; m_settings.hdDVIHdmi = m_videoOut; SetActiveVideoOutput(m_videoOut); SetDVIHDMIAutoEDID(m_videoOut, TRUE); } else { if (m_videoOut == m_settings.hdDVIOut || m_videoOut == m_settings.hdDVIHdmi) { // set dvi/hdmi default GetActiveVideoOutput(m_settings.activeVideoOutput, TRUE); // set new default to CSVideo SetActiveVideoOutput(m_settings.tvOut); m_videoOut = GetActiveVideoOutput(m_settings.activeVideoOutput, TRUE); } } } else { // auto HDMI OFF // get connection status even if forcing non-digital output RMbool connected = m_context->decoder->GetHDMIConnected(); if (m_videoOut == m_settings.hdDVIOut || m_videoOut == m_settings.hdDVIHdmi) { if (connected == FALSE) { // set dvi/hdmi default GetActiveVideoOutput(m_settings.activeVideoOutput, TRUE); // set new default to CSVideo SetActiveVideoOutput(m_settings.tvOut); m_videoOut = GetActiveVideoOutput(m_settings.activeVideoOutput, TRUE); } } } fprintf(stderr, "Applying saved tv settings. \nactive: %ld\ntvout: %ld\ncomponent: %ld\nDVI: %ld\nHDMI: %ld\nScart: %ld\n", m_videoOut, m_settings.tvOut, m_settings.hdYbPrOut, m_settings.hdDVIOut, m_settings.hdDVIHdmi, m_settings.scart); SetTVOut(m_videoOut); // reset bookmark since we don't resume across sessions m_settings.validBookmark = 0; //PrintPlayerSettings(m_settings); printf("PLAYER REGION %d\n", m_settings.dvdRegion); // update all gui related items UpdatePlayerInterface(); return RM_OK;}RMstatus RMcuracaoGui::UpdatePlayerInterface(){ // slider m_pnav->SetSliderThumb(VOLUME_CONTROL, m_settings.volume); // audio settings m_pnav->SetMenuItemText(m_settings.audioOut); m_pnav->SetMenuItemText(m_settings.audioChannels); // media related m_pnav->SetMenuItemText(m_settings.vcdPBC); m_pnav->SetMenuItemText(m_settings.dvdParentalLevel);#ifdef GUI_REFID_2 m_pnav->SetMenuItemTextByValue(SET_SCREENSAVER_TIMOUT, m_screenSaverSpeed);#ifdef GUI_REFID_3 m_pnav->UpdateMenuState("TvHdmiAutoMenuItem", TRUE, FALSE);#else m_pnav->SetMenuItemText(m_settings.dhcp); //UpdateAllMenuStates(); m_pnav->SetMenuItemText(m_settings.audioMixMode);#endif // Ref3#endif // Ref2 // display related m_pnav->SetMenuItemText(m_settings.tvType); m_pnav->SetMenuItemText(m_settings.tvStandard); m_pnav->SetMenuItemText(m_settings.tvOut); m_pnav->SetMenuItemText(m_settings.hdYbPrOut); m_pnav->SetMenuItemText(m_settings.hdDVIOut); m_pnav->SetMenuItemText(m_settings.hdDVIHdmi); m_pnav->SetMenuItemText(m_settings.scart); m_pnav->SetMenuItemText(m_videoOut); m_pnav->SetMenuItemText(m_settings.activeVideoOutput); if (m_settings.forceNoHDMI == FALSE) m_pnav->SetMenuItemText(SET_HDMI_AUTO_ON_COMMAND); else m_pnav->SetMenuItemText(SET_HDMI_AUTO_OFF_COMMAND); // misc m_pnav->SetMenuItemText(m_settings.warningMode); return RM_OK;}// read volume and BCS from XML!!!!!!!!!!!!!!!!!!!!RMstatus RMcuracaoGui::SetDefaultPlayerSettings(){ RMDBGLOG((GUIDBG, "applying default player settings\n")); // set volume to max (+0dB) by default. m_settings.volume = GUI_DEFAULT_VOLUME; m_settings.brightness = GUI_DEFAULT_BRIGHTNESS; m_settings.contrast = GUI_DEFAULT_CONTRAST; m_settings.saturation = GUI_DEFAULT_SATURATION; m_settings.audioOut = SET_ANALOG_DPCM_COMMAND; m_settings.hdDVIHdmi = SET_HDMI_AUTO_ON_COMMAND; // Includes auto DVI/HDMI plug-in m_settings.hdDVIOut = SET_HDDVI_480P_COMMAND; m_settings.hdYbPrOut = SET_HDCOMPONENT_480P60_COMMAND; m_settings.tvOut = SET_TV_NTSC_CSVIDEO_COMMAND; m_settings.scart = SET_TV_NTSC_RGBSCART_COMMAND; m_settings.vcdPBC = VCD_PBC_ON_COMMAND; m_settings.tvType = TV_4_3LETTERBOX_COMMAND; m_settings.tvStandard = TV_NTSC_COMMAND; m_settings.dvdParentalLevel = PARENTAL_LEVELOFF_COMMAND; m_settings.forceNoHDMI = FALSE;#ifdef GUI_REFID_3 m_settings.audioChannels = SET_AUDIO_2CHANNELS_COMMAND;#else m_settings.audioChannels = SET_AUDIO_6CHANNELS_COMMAND;#endif m_settings.screenSaverDelay = 30 * 60; RMCopyAscii(m_settings.dvdParentalPassw, GUI_DEFAULT_PASSWORD_STR);#ifdef GUI_REFID_2 m_settings.activeVideoOutput = AC_DEFAULT_VIDEO_OUTPUT; m_settings.dhcp = ENABLE_DHCP; m_settings.ip = 0x0; m_settings.subnet = 0xffff0000; m_settings.gateway = 0x0; m_settings.dns = 0x0; m_settings.dnsAlt = 0x0; m_settings.networkConfig = DHCP_MASK | WIRED_MASK | NTP_MASK; m_settings.quickSetupStatus = NUMBER_OF_QUICK_SETUP_PAGES; m_settings.audioMixMode = SET_AUDIO_DOWNMIX_COMMAND; m_settings.timezone = 0; m_settings.menuLanguage = RM_LANGUAGE_ENGLISH; m_settings.myKmlPage[0] = '\0'; m_settings.dvdMenuLanguage = RM_LANGUAGE_ENGLISH; m_settings.dvdSubtitleLanguage = RM_LANGUAGE_ENGLISH; m_settings.dvdSpokenLanguage = RM_LANGUAGE_ENGLISH; m_settings.dvdRegion = AC_DEFAULT_DVD_REGION;#ifdef GUI_REFID_3 m_settings.country = RM_COUNTRY_UNITED_STATES; m_settings.warningMode = STANDARD_WARNING_MODE_COMMAND;#else m_settings.country = RM_COUNTRY_DENMARK;#endif#else m_settings.activeVideoOutput = SET_NTSCSD_MODE_COMMAND; m_settings.dvdRegion = GUI_DEFAULT_DVDREGION;#endif // 'secret' settings m_settings.macrovisionOn = GUI_DEFAULT_MACROVISION; return RM_OK;}void RMcuracaoGui::PrintPlayerSettings(guiPlayerSettingsType settings){ RMDBGLOG((GUIDBG, "volume 0x%lx\n", settings.volume)); RMDBGLOG((GUIDBG, "brightness 0x%lx\n", settings.brightness)); RMDBGLOG((GUIDBG, "contrast 0x%lx\n", settings.contrast)); RMDBGLOG((GUIDBG, "saturation 0x%lx\n", settings.saturation)); switch (settings.audioOut) { case SET_ANALOG_DPCM_COMMAND: RMDBGLOG((GUIDBG, "audio out = analog\n")); break; case SET_ENCODED_DIGITAL_COMMAND: RMDBGLOG((GUIDBG, "audio out = digital \n")); break; default: RMDBGLOG((GUIDBG, "audio out = UNKNOWN \n")); break; } switch (settings.hdDVIOut) { case SET_HDDVI_480P_COMMAND: RMDBGLOG((GUIDBG, "HD DVI out = 480P\n")); break; case SET_HDDVI_720P_COMMAND: RMDBGLOG((GUIDBG, "HD DVI out = 720P\n")); break; case SET_HDDVI_1080I_COMMAND: RMDBGLOG((GUIDBG, "HD DVI out = 1080I\n")); break; case SET_HDDVI_768_60HZ_COMMAND: RMDBGLOG((GUIDBG, "HD DVI out = 768 60Hz\n")); break; case SET_HDDVI_1024_60HZ_COMMAND: RMDBGLOG((GUIDBG, "HD DVI out = 1024 60Hz\n")); break; case SET_HDDVI_OFF_COMMAND: RMDBGLOG((GUIDBG, "HD DVI out = OFF\n")); break; default: RMDBGLOG((GUIDBG, "HD DVI out = UNKNOWN\n")); break; } switch (settings.hdYbPrOut) { case SET_HDCOMPONENT_480P60_COMMAND: RMDBGLOG((GUIDBG, "HD Component out = 480P 60\n")); break; case SET_HDCOMPONENT_720P60_COMMAND: RMDBGLOG((GUIDBG, "HD Component out = 720P 60\n")); break; case SET_HDCOMPONENT_1080I60_COMMAND: RMDBGLOG((GUIDBG, "HD Component out = 1080I 60\n")); break; case SET_HDCOMPONENT_OFF_COMMAND: RMDBGLOG((GUIDBG, "HD Component out = OFF\n")); break; case SET_HDCOMPONENT_576P50_COMMAND: RMDBGLOG((GUIDBG, "HD Component out = 576P 50\n")); break; case SET_HDCOMPONENT_720P50_COMMAND: RMDBGLOG((GUIDBG, "HD Component out = 720P 50\n")); break; case SET_HDCOMPONENT_1080I50_COMMAND: RMDBGLOG((GUIDBG, "HD Component out = 1080I 50\n")); break; default: RMDBGLOG((GUIDBG, "HD Component out = UNKNOWN\n")); break; } switch (settings.tvOut) { case SET_TV_NTSC_CSVIDEO_COMMAND: RMDBGLOG((GUIDBG, "TV out = NTSC S-Video\n")); break; case SET_TV_NTSC_CYPBPR_COMMAND: RMDBGLOG((GUIDBG, "TV out = NTSC YPBPR\n")); break; case SET_TV_NTSC_CRGB_COMMAND: RMDBGLOG((GUIDBG, "TV out = NTSC RGB\n")); break; case SET_TV_PAL_CSVIDEO_COMMAND: RMDBGLOG((GUIDBG, "TV out = PAL S-Video\n")); break; case SET_TV_PAL_CYPBPR_COMMAND: RMDBGLOG((GUIDBG, "TV out = PAL YPBPR\n")); break; case SET_TV_PAL_CRGB_COMMAND: RMDBGLOG((GUIDBG, "TV out = PAL RGB\n")); break; default: RMDBGLOG((GUIDBG, "TV out = UNKNOWN\n")); break; } switch (settings.tvStandard)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -