void CGUIDialogCMSSettings::InitializeSettings() { CGUIDialogSettingsManualBase::InitializeSettings(); const std::shared_ptr<CSettingCategory> category = AddCategory("cms", -1); if (category == NULL) { CLog::Log(LOGERROR, "CGUIDialogCMSSettings: unable to setup settings"); return; } // get all necessary setting groups const std::shared_ptr<CSettingGroup> groupColorManagement = AddGroup(category); if (groupColorManagement == NULL) { CLog::Log(LOGERROR, "CGUIDialogCMSSettings: unable to setup settings"); return; } bool usePopup = g_SkinInfo->HasSkinFile("DialogSlider.xml"); TranslatableIntegerSettingOptions entries; // create "depsCmsEnabled" for settings depending on CMS being enabled CSettingDependency dependencyCmsEnabled(SettingDependencyType::Enable, GetSettingsManager()); dependencyCmsEnabled.Or() ->Add(CSettingDependencyConditionPtr(new CSettingDependencyCondition(SETTING_VIDEO_CMSENABLE, "true", SettingDependencyOperator::Equals, false, GetSettingsManager()))); SettingDependencies depsCmsEnabled; depsCmsEnabled.push_back(dependencyCmsEnabled); // create "depsCms3dlut" for 3dlut settings CSettingDependency dependencyCms3dlut(SettingDependencyType::Visible, GetSettingsManager()); dependencyCms3dlut.And() ->Add(CSettingDependencyConditionPtr(new CSettingDependencyCondition(SETTING_VIDEO_CMSMODE, std::to_string(CMS_MODE_3DLUT), SettingDependencyOperator::Equals, false, GetSettingsManager()))); SettingDependencies depsCms3dlut; depsCms3dlut.push_back(dependencyCmsEnabled); depsCms3dlut.push_back(dependencyCms3dlut); // create "depsCmsIcc" for display settings with icc profile CSettingDependency dependencyCmsIcc(SettingDependencyType::Visible, GetSettingsManager()); dependencyCmsIcc.And() ->Add(CSettingDependencyConditionPtr(new CSettingDependencyCondition(SETTING_VIDEO_CMSMODE, std::to_string(CMS_MODE_PROFILE), SettingDependencyOperator::Equals, false, GetSettingsManager()))); SettingDependencies depsCmsIcc; depsCmsIcc.push_back(dependencyCmsEnabled); depsCmsIcc.push_back(dependencyCmsIcc); // create "depsCmsGamma" for effective gamma adjustment (not available with bt.1886) CSettingDependency dependencyCmsGamma(SettingDependencyType::Visible, GetSettingsManager()); dependencyCmsGamma.And() ->Add(CSettingDependencyConditionPtr(new CSettingDependencyCondition(SETTING_VIDEO_CMSGAMMAMODE, std::to_string(CMS_TRC_BT1886), SettingDependencyOperator::Equals, true, GetSettingsManager()))); SettingDependencies depsCmsGamma; depsCmsGamma.push_back(dependencyCmsEnabled); depsCmsGamma.push_back(dependencyCmsIcc); depsCmsGamma.push_back(dependencyCmsGamma); // color management settings AddToggle(groupColorManagement, SETTING_VIDEO_CMSENABLE, 36560, SettingLevel::Basic, CServiceBroker::GetSettings().GetBool(SETTING_VIDEO_CMSENABLE)); int currentMode = CServiceBroker::GetSettings().GetInt(SETTING_VIDEO_CMSMODE); entries.clear(); // entries.push_back(std::make_pair(16039, CMS_MODE_OFF)); // FIXME: get from CMS class entries.push_back(std::make_pair(36580, CMS_MODE_3DLUT)); #ifdef HAVE_LCMS2 entries.push_back(std::make_pair(36581, CMS_MODE_PROFILE)); #endif std::shared_ptr<CSettingInt> settingCmsMode = AddSpinner(groupColorManagement, SETTING_VIDEO_CMSMODE, 36562, SettingLevel::Basic, currentMode, entries); settingCmsMode->SetDependencies(depsCmsEnabled); std::string current3dLUT = CServiceBroker::GetSettings().GetString(SETTING_VIDEO_CMS3DLUT); std::shared_ptr<CSettingString> settingCms3dlut = AddList(groupColorManagement, SETTING_VIDEO_CMS3DLUT, 36564, SettingLevel::Basic, current3dLUT, Cms3dLutsFiller, 36564); settingCms3dlut->SetDependencies(depsCms3dlut); // display settings int currentWhitepoint = CServiceBroker::GetSettings().GetInt(SETTING_VIDEO_CMSWHITEPOINT); entries.clear(); entries.push_back(std::make_pair(36586, CMS_WHITEPOINT_D65)); entries.push_back(std::make_pair(36587, CMS_WHITEPOINT_D93)); std::shared_ptr<CSettingInt> settingCmsWhitepoint = AddSpinner(groupColorManagement, SETTING_VIDEO_CMSWHITEPOINT, 36568, SettingLevel::Basic, currentWhitepoint, entries); settingCmsWhitepoint->SetDependencies(depsCmsIcc); int currentPrimaries = CServiceBroker::GetSettings().GetInt(SETTING_VIDEO_CMSPRIMARIES); entries.clear(); entries.push_back(std::make_pair(36588, CMS_PRIMARIES_AUTO)); entries.push_back(std::make_pair(36589, CMS_PRIMARIES_BT709)); entries.push_back(std::make_pair(36579, CMS_PRIMARIES_BT2020)); entries.push_back(std::make_pair(36590, CMS_PRIMARIES_170M)); entries.push_back(std::make_pair(36591, CMS_PRIMARIES_BT470M)); entries.push_back(std::make_pair(36592, CMS_PRIMARIES_BT470BG)); entries.push_back(std::make_pair(36593, CMS_PRIMARIES_240M)); std::shared_ptr<CSettingInt> settingCmsPrimaries = AddSpinner(groupColorManagement, SETTING_VIDEO_CMSPRIMARIES, 36570, SettingLevel::Basic, currentPrimaries, entries); settingCmsPrimaries->SetDependencies(depsCmsIcc); int currentGammaMode = CServiceBroker::GetSettings().GetInt(SETTING_VIDEO_CMSGAMMAMODE); entries.clear(); entries.push_back(std::make_pair(36582, CMS_TRC_BT1886)); entries.push_back(std::make_pair(36583, CMS_TRC_INPUT_OFFSET)); entries.push_back(std::make_pair(36584, CMS_TRC_OUTPUT_OFFSET)); entries.push_back(std::make_pair(36585, CMS_TRC_ABSOLUTE)); std::shared_ptr<CSettingInt> settingCmsGammaMode = AddSpinner(groupColorManagement, SETTING_VIDEO_CMSGAMMAMODE, 36572, SettingLevel::Basic, currentGammaMode, entries); settingCmsGammaMode->SetDependencies(depsCmsIcc); float currentGamma = CServiceBroker::GetSettings().GetInt(SETTING_VIDEO_CMSGAMMA)/100.0f; if (currentGamma == 0.0) currentGamma = 2.20; std::shared_ptr<CSettingNumber> settingCmsGamma = AddSlider(groupColorManagement, SETTING_VIDEO_CMSGAMMA, 36574, SettingLevel::Basic, currentGamma, 36597, 1.6, 0.05, 2.8, 36574, usePopup); settingCmsGamma->SetDependencies(depsCmsGamma); int currentLutSize = CServiceBroker::GetSettings().GetInt(SETTING_VIDEO_CMSLUTSIZE); entries.clear(); entries.push_back(std::make_pair(36594, 4)); entries.push_back(std::make_pair(36595, 6)); entries.push_back(std::make_pair(36596, 8)); std::shared_ptr<CSettingInt> settingCmsLutSize = AddSpinner(groupColorManagement, SETTING_VIDEO_CMSLUTSIZE, 36576, SettingLevel::Basic, currentLutSize, entries); settingCmsLutSize->SetDependencies(depsCmsIcc); }
void CGUIDialogVideoSettings::InitializeSettings() { CGUIDialogSettingsManualBase::InitializeSettings(); const std::shared_ptr<CSettingCategory> category = AddCategory("videosettings", -1); if (category == NULL) { CLog::Log(LOGERROR, "CGUIDialogVideoSettings: unable to setup settings"); return; } // get all necessary setting groups const std::shared_ptr<CSettingGroup> groupVideoStream = AddGroup(category); if (groupVideoStream == NULL) { CLog::Log(LOGERROR, "CGUIDialogVideoSettings: unable to setup settings"); return; } const std::shared_ptr<CSettingGroup> groupVideo = AddGroup(category); if (groupVideo == NULL) { CLog::Log(LOGERROR, "CGUIDialogVideoSettings: unable to setup settings"); return; } const std::shared_ptr<CSettingGroup> groupVideoPlayback = AddGroup(category); if (groupVideoPlayback == NULL) { CLog::Log(LOGERROR, "CGUIDialogVideoSettings: unable to setup settings"); return; } const std::shared_ptr<CSettingGroup> groupStereoscopic = AddGroup(category); if (groupStereoscopic == NULL) { CLog::Log(LOGERROR, "CGUIDialogVideoSettings: unable to setup settings"); return; } const std::shared_ptr<CSettingGroup> groupSaveAsDefault = AddGroup(category); if (groupSaveAsDefault == NULL) { CLog::Log(LOGERROR, "CGUIDialogVideoSettings: unable to setup settings"); return; } bool usePopup = g_SkinInfo->HasSkinFile("DialogSlider.xml"); const CVideoSettings videoSettings = g_application.GetAppPlayer().GetVideoSettings(); TranslatableIntegerSettingOptions entries; entries.clear(); entries.push_back(std::make_pair(16039, VS_INTERLACEMETHOD_NONE)); entries.push_back(std::make_pair(16019, VS_INTERLACEMETHOD_AUTO)); entries.push_back(std::make_pair(20131, VS_INTERLACEMETHOD_RENDER_BLEND)); entries.push_back(std::make_pair(20129, VS_INTERLACEMETHOD_RENDER_WEAVE)); entries.push_back(std::make_pair(16021, VS_INTERLACEMETHOD_RENDER_BOB)); entries.push_back(std::make_pair(16020, VS_INTERLACEMETHOD_DEINTERLACE)); entries.push_back(std::make_pair(16036, VS_INTERLACEMETHOD_DEINTERLACE_HALF)); entries.push_back(std::make_pair(16311, VS_INTERLACEMETHOD_VDPAU_TEMPORAL_SPATIAL)); entries.push_back(std::make_pair(16310, VS_INTERLACEMETHOD_VDPAU_TEMPORAL)); entries.push_back(std::make_pair(16325, VS_INTERLACEMETHOD_VDPAU_BOB)); entries.push_back(std::make_pair(16318, VS_INTERLACEMETHOD_VDPAU_TEMPORAL_SPATIAL_HALF)); entries.push_back(std::make_pair(16317, VS_INTERLACEMETHOD_VDPAU_TEMPORAL_HALF)); entries.push_back(std::make_pair(16327, VS_INTERLACEMETHOD_VAAPI_BOB)); entries.push_back(std::make_pair(16328, VS_INTERLACEMETHOD_VAAPI_MADI)); entries.push_back(std::make_pair(16329, VS_INTERLACEMETHOD_VAAPI_MACI)); entries.push_back(std::make_pair(16330, VS_INTERLACEMETHOD_MMAL_ADVANCED)); entries.push_back(std::make_pair(16331, VS_INTERLACEMETHOD_MMAL_ADVANCED_HALF)); entries.push_back(std::make_pair(16332, VS_INTERLACEMETHOD_MMAL_BOB)); entries.push_back(std::make_pair(16333, VS_INTERLACEMETHOD_MMAL_BOB_HALF)); entries.push_back(std::make_pair(16320, VS_INTERLACEMETHOD_DXVA_AUTO)); /* remove unsupported methods */ for (TranslatableIntegerSettingOptions::iterator it = entries.begin(); it != entries.end(); ) { if (g_application.GetAppPlayer().Supports((EINTERLACEMETHOD)it->second)) ++it; else it = entries.erase(it); } if (!entries.empty()) { EINTERLACEMETHOD method = videoSettings.m_InterlaceMethod; if (!g_application.GetAppPlayer().Supports(method)) { method = g_application.GetAppPlayer().GetDeinterlacingMethodDefault(); } AddSpinner(groupVideo, SETTING_VIDEO_INTERLACEMETHOD, 16038, SettingLevel::Basic, static_cast<int>(method), entries); } entries.clear(); entries.push_back(std::make_pair(16301, VS_SCALINGMETHOD_NEAREST)); entries.push_back(std::make_pair(16302, VS_SCALINGMETHOD_LINEAR)); entries.push_back(std::make_pair(16303, VS_SCALINGMETHOD_CUBIC )); entries.push_back(std::make_pair(16304, VS_SCALINGMETHOD_LANCZOS2)); entries.push_back(std::make_pair(16323, VS_SCALINGMETHOD_SPLINE36_FAST)); entries.push_back(std::make_pair(16315, VS_SCALINGMETHOD_LANCZOS3_FAST)); entries.push_back(std::make_pair(16322, VS_SCALINGMETHOD_SPLINE36)); entries.push_back(std::make_pair(16305, VS_SCALINGMETHOD_LANCZOS3)); entries.push_back(std::make_pair(16306, VS_SCALINGMETHOD_SINC8)); // entries.push_back(make_pair(?????, VS_SCALINGMETHOD_NEDI)); entries.push_back(std::make_pair(16307, VS_SCALINGMETHOD_BICUBIC_SOFTWARE)); entries.push_back(std::make_pair(16308, VS_SCALINGMETHOD_LANCZOS_SOFTWARE)); entries.push_back(std::make_pair(16309, VS_SCALINGMETHOD_SINC_SOFTWARE)); entries.push_back(std::make_pair(13120, VS_SCALINGMETHOD_VDPAU_HARDWARE)); entries.push_back(std::make_pair(16319, VS_SCALINGMETHOD_DXVA_HARDWARE)); entries.push_back(std::make_pair(16316, VS_SCALINGMETHOD_AUTO)); /* remove unsupported methods */ for(TranslatableIntegerSettingOptions::iterator it = entries.begin(); it != entries.end(); ) { if (g_application.GetAppPlayer().Supports((ESCALINGMETHOD)it->second)) ++it; else it = entries.erase(it); } AddSpinner(groupVideo, SETTING_VIDEO_SCALINGMETHOD, 16300, SettingLevel::Basic, static_cast<int>(videoSettings.m_ScalingMethod), entries); AddVideoStreams(groupVideoStream, SETTING_VIDEO_STREAM); if (g_application.GetAppPlayer().Supports(RENDERFEATURE_STRETCH) || g_application.GetAppPlayer().Supports(RENDERFEATURE_PIXEL_RATIO)) { AddList(groupVideo, SETTING_VIDEO_VIEW_MODE, 629, SettingLevel::Basic, videoSettings.m_ViewMode, CViewModeSettings::ViewModesFiller, 629); } if (g_application.GetAppPlayer().Supports(RENDERFEATURE_ZOOM)) AddSlider(groupVideo, SETTING_VIDEO_ZOOM, 216, SettingLevel::Basic, videoSettings.m_CustomZoomAmount, "%2.2f", 0.5f, 0.01f, 2.0f, 216, usePopup); if (g_application.GetAppPlayer().Supports(RENDERFEATURE_VERTICAL_SHIFT)) AddSlider(groupVideo, SETTING_VIDEO_VERTICAL_SHIFT, 225, SettingLevel::Basic, videoSettings.m_CustomVerticalShift, "%2.2f", -2.0f, 0.01f, 2.0f, 225, usePopup); if (g_application.GetAppPlayer().Supports(RENDERFEATURE_PIXEL_RATIO)) AddSlider(groupVideo, SETTING_VIDEO_PIXEL_RATIO, 217, SettingLevel::Basic, videoSettings.m_CustomPixelRatio, "%2.2f", 0.5f, 0.01f, 2.0f, 217, usePopup); if (g_application.GetAppPlayer().Supports(RENDERFEATURE_POSTPROCESS)) AddToggle(groupVideo, SETTING_VIDEO_POSTPROCESS, 16400, SettingLevel::Basic, videoSettings.m_PostProcess); if (g_application.GetAppPlayer().Supports(RENDERFEATURE_BRIGHTNESS)) AddPercentageSlider(groupVideoPlayback, SETTING_VIDEO_BRIGHTNESS, 464, SettingLevel::Basic, static_cast<int>(videoSettings.m_Brightness), 14047, 1, 464, usePopup); if (g_application.GetAppPlayer().Supports(RENDERFEATURE_CONTRAST)) AddPercentageSlider(groupVideoPlayback, SETTING_VIDEO_CONTRAST, 465, SettingLevel::Basic, static_cast<int>(videoSettings.m_Contrast), 14047, 1, 465, usePopup); if (g_application.GetAppPlayer().Supports(RENDERFEATURE_GAMMA)) AddPercentageSlider(groupVideoPlayback, SETTING_VIDEO_GAMMA, 466, SettingLevel::Basic, static_cast<int>(videoSettings.m_Gamma), 14047, 1, 466, usePopup); if (g_application.GetAppPlayer().Supports(RENDERFEATURE_NOISE)) AddSlider(groupVideoPlayback, SETTING_VIDEO_VDPAU_NOISE, 16312, SettingLevel::Basic, videoSettings.m_NoiseReduction, "%2.2f", 0.0f, 0.01f, 1.0f, 16312, usePopup); if (g_application.GetAppPlayer().Supports(RENDERFEATURE_SHARPNESS)) AddSlider(groupVideoPlayback, SETTING_VIDEO_VDPAU_SHARPNESS, 16313, SettingLevel::Basic, videoSettings.m_Sharpness, "%2.2f", -1.0f, 0.02f, 1.0f, 16313, usePopup); if (g_application.GetAppPlayer().Supports(RENDERFEATURE_NONLINSTRETCH)) AddToggle(groupVideoPlayback, SETTING_VIDEO_NONLIN_STRETCH, 659, SettingLevel::Basic, videoSettings.m_CustomNonLinStretch); // stereoscopic settings entries.clear(); entries.push_back(std::make_pair(16316, RENDER_STEREO_MODE_OFF)); entries.push_back(std::make_pair(36503, RENDER_STEREO_MODE_SPLIT_HORIZONTAL)); entries.push_back(std::make_pair(36504, RENDER_STEREO_MODE_SPLIT_VERTICAL)); AddSpinner(groupStereoscopic, SETTING_VIDEO_STEREOSCOPICMODE, 36535, SettingLevel::Basic, videoSettings.m_StereoMode, entries); AddToggle(groupStereoscopic, SETTING_VIDEO_STEREOSCOPICINVERT, 36536, SettingLevel::Basic, videoSettings.m_StereoInvert); // general settings AddButton(groupSaveAsDefault, SETTING_VIDEO_MAKE_DEFAULT, 12376, SettingLevel::Basic); AddButton(groupSaveAsDefault, SETTING_VIDEO_CALIBRATION, 214, SettingLevel::Basic); }
// Build the screen LTBOOL CScreenDisplay::Build() { CreateTitle(IDS_TITLE_DISPLAYOPTIONS); kGap = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_DISPLAY,"ColumnWidth"); kWidth = g_pLayoutMgr->GetScreenCustomInt(SCREEN_ID_DISPLAY,"SliderWidth"); //background frame LTRect frameRect = g_pLayoutMgr->GetScreenCustomRect(SCREEN_ID_DISPLAY,"FrameRect"); LTIntPt pos(frameRect.left,frameRect.top); int nHt = frameRect.bottom - frameRect.top; int nWd = frameRect.right - frameRect.left; char szFrame[128]; g_pLayoutMgr->GetScreenCustomString(SCREEN_ID_DISPLAY,"FrameTexture",szFrame,sizeof(szFrame)); HTEXTURE hFrame = g_pInterfaceResMgr->GetTexture(szFrame); CLTGUIFrame *pFrame = debug_new(CLTGUIFrame); pFrame->Create(hFrame,nWd,nHt+8,LTTRUE); pFrame->SetBasePos(pos); pFrame->SetBorder(2,m_SelectedColor); AddControl(pFrame); // Build the array of renderers GetRendererData(); // Add the "resolution" control m_pResolutionCtrl = AddCycle(IDS_DISPLAY_RESOLUTION,IDS_HELP_RESOLUTION,kGap); // Setup the resolution control based on the current renderer SetupResolutionCtrl(); m_pHardwareCursor = AddToggle(IDS_HARDWARE_CURSOR,IDS_HELP_HARDWARE_CURSOR,kGap,&m_bHardwareCursor); AddToggle(IDS_VSYNC,IDS_HELP_VSYNC,kGap,&m_bVSync); m_pGamma = AddSlider(IDS_GAMMA,IDS_HELP_GAMMA,kGap,kWidth,-1,&m_nGamma); m_pGamma->SetSliderRange(0,kNumSteps); m_pGamma->SetSliderIncrement(1); int nBaseGamma = ConvertToSlider(1.0f); float xoffset = (m_pGamma->CalculateSliderOffset(nBaseGamma) / m_pGamma->GetScale()); uint16 nHeight = m_pGamma->GetBarHeight(); float yoffset = ((( (float)m_pGamma->GetBaseHeight()) - (float)nHeight)) / 2.0f; pos = m_pGamma->GetBasePos(); pos.x += (int)(xoffset - 1.0f); pos.y += (int)(yoffset + 0.5f); CLTGUIFrame *pBar = debug_new(CLTGUIFrame); pBar->Create(0xBF000000,3,nHeight+1); pBar->SetBasePos(pos); pBar->SetScale(g_pInterfaceResMgr->GetXRatio()); AddControl(pBar); // Make sure to call the base class if (!CBaseScreen::Build()) return LTFALSE; UseBack(LTTRUE,LTTRUE); return LTTRUE; }
void CGUIDialogVideoSettings::InitializeSettings() { CGUIDialogSettingsManualBase::InitializeSettings(); CSettingCategory *category = AddCategory("audiosubtitlesettings", -1); if (category == NULL) { CLog::Log(LOGERROR, "CGUIDialogVideoSettings: unable to setup settings"); return; } // get all necessary setting groups CSettingGroup *groupVideo = AddGroup(category); if (groupVideo == NULL) { CLog::Log(LOGERROR, "CGUIDialogVideoSettings: unable to setup settings"); return; } CSettingGroup *groupVideoPlayback = AddGroup(category); if (groupVideoPlayback == NULL) { CLog::Log(LOGERROR, "CGUIDialogVideoSettings: unable to setup settings"); return; } CSettingGroup *groupStereoscopic = AddGroup(category); if (groupStereoscopic == NULL) { CLog::Log(LOGERROR, "CGUIDialogVideoSettings: unable to setup settings"); return; } CSettingGroup *groupSaveAsDefault = AddGroup(category); if (groupSaveAsDefault == NULL) { CLog::Log(LOGERROR, "CGUIDialogVideoSettings: unable to setup settings"); return; } bool usePopup = g_SkinInfo->HasSkinFile("DialogSlider.xml"); CVideoSettings &videoSettings = CMediaSettings::Get().GetCurrentVideoSettings(); StaticIntegerSettingOptions entries; if (g_renderManager.Supports(VS_DEINTERLACEMODE_OFF)) entries.push_back(std::make_pair(16039, VS_DEINTERLACEMODE_OFF)); if (g_renderManager.Supports(VS_DEINTERLACEMODE_AUTO)) entries.push_back(std::make_pair(16040, VS_DEINTERLACEMODE_AUTO)); if (g_renderManager.Supports(VS_DEINTERLACEMODE_FORCE)) entries.push_back(std::make_pair(16041, VS_DEINTERLACEMODE_FORCE)); if (!entries.empty()) AddSpinner(groupVideo, SETTING_VIDEO_DEINTERLACEMODE, 16037, 0, static_cast<int>(videoSettings.m_DeinterlaceMode), entries); entries.clear(); entries.push_back(std::make_pair(16019, VS_INTERLACEMETHOD_AUTO)); entries.push_back(std::make_pair(20131, VS_INTERLACEMETHOD_RENDER_BLEND)); entries.push_back(std::make_pair(20130, VS_INTERLACEMETHOD_RENDER_WEAVE_INVERTED)); entries.push_back(std::make_pair(20129, VS_INTERLACEMETHOD_RENDER_WEAVE)); entries.push_back(std::make_pair(16022, VS_INTERLACEMETHOD_RENDER_BOB_INVERTED)); entries.push_back(std::make_pair(16021, VS_INTERLACEMETHOD_RENDER_BOB)); entries.push_back(std::make_pair(16020, VS_INTERLACEMETHOD_DEINTERLACE)); entries.push_back(std::make_pair(16036, VS_INTERLACEMETHOD_DEINTERLACE_HALF)); entries.push_back(std::make_pair(16324, VS_INTERLACEMETHOD_SW_BLEND)); entries.push_back(std::make_pair(16314, VS_INTERLACEMETHOD_INVERSE_TELECINE)); entries.push_back(std::make_pair(16311, VS_INTERLACEMETHOD_VDPAU_TEMPORAL_SPATIAL)); entries.push_back(std::make_pair(16310, VS_INTERLACEMETHOD_VDPAU_TEMPORAL)); entries.push_back(std::make_pair(16325, VS_INTERLACEMETHOD_VDPAU_BOB)); entries.push_back(std::make_pair(16318, VS_INTERLACEMETHOD_VDPAU_TEMPORAL_SPATIAL_HALF)); entries.push_back(std::make_pair(16317, VS_INTERLACEMETHOD_VDPAU_TEMPORAL_HALF)); entries.push_back(std::make_pair(16314, VS_INTERLACEMETHOD_VDPAU_INVERSE_TELECINE)); entries.push_back(std::make_pair(16320, VS_INTERLACEMETHOD_DXVA_BOB)); entries.push_back(std::make_pair(16321, VS_INTERLACEMETHOD_DXVA_BEST)); entries.push_back(std::make_pair(16325, VS_INTERLACEMETHOD_AUTO_ION)); entries.push_back(std::make_pair(16327, VS_INTERLACEMETHOD_VAAPI_BOB)); entries.push_back(std::make_pair(16328, VS_INTERLACEMETHOD_VAAPI_MADI)); entries.push_back(std::make_pair(16329, VS_INTERLACEMETHOD_VAAPI_MACI)); entries.push_back(std::make_pair(16330, VS_INTERLACEMETHOD_MMAL_ADVANCED)); entries.push_back(std::make_pair(16331, VS_INTERLACEMETHOD_MMAL_ADVANCED_HALF)); entries.push_back(std::make_pair(16332, VS_INTERLACEMETHOD_MMAL_BOB)); entries.push_back(std::make_pair(16333, VS_INTERLACEMETHOD_MMAL_BOB_HALF)); entries.push_back(std::make_pair(16334, VS_INTERLACEMETHOD_IMX_FASTMOTION)); entries.push_back(std::make_pair(16335, VS_INTERLACEMETHOD_IMX_FASTMOTION_DOUBLE)); /* remove unsupported methods */ for (StaticIntegerSettingOptions::iterator it = entries.begin(); it != entries.end(); ) { if (g_renderManager.Supports((EINTERLACEMETHOD)it->second)) ++it; else it = entries.erase(it); } if (!entries.empty()) { CSettingInt *settingInterlaceMethod = AddSpinner(groupVideo, SETTING_VIDEO_INTERLACEMETHOD, 16038, 0, static_cast<int>(videoSettings.m_InterlaceMethod), entries); CSettingDependency dependencyDeinterlaceModeOff(SettingDependencyTypeEnable, m_settingsManager); dependencyDeinterlaceModeOff.And() ->Add(CSettingDependencyConditionPtr(new CSettingDependencyCondition(SETTING_VIDEO_DEINTERLACEMODE, "0", SettingDependencyOperatorEquals, true, m_settingsManager))); SettingDependencies depsDeinterlaceModeOff; depsDeinterlaceModeOff.push_back(dependencyDeinterlaceModeOff); settingInterlaceMethod->SetDependencies(depsDeinterlaceModeOff); } entries.clear(); entries.push_back(std::make_pair(16301, VS_SCALINGMETHOD_NEAREST)); entries.push_back(std::make_pair(16302, VS_SCALINGMETHOD_LINEAR)); entries.push_back(std::make_pair(16303, VS_SCALINGMETHOD_CUBIC )); entries.push_back(std::make_pair(16304, VS_SCALINGMETHOD_LANCZOS2)); entries.push_back(std::make_pair(16323, VS_SCALINGMETHOD_SPLINE36_FAST)); entries.push_back(std::make_pair(16315, VS_SCALINGMETHOD_LANCZOS3_FAST)); entries.push_back(std::make_pair(16322, VS_SCALINGMETHOD_SPLINE36)); entries.push_back(std::make_pair(16305, VS_SCALINGMETHOD_LANCZOS3)); entries.push_back(std::make_pair(16306, VS_SCALINGMETHOD_SINC8)); // entries.push_back(make_pair(?????, VS_SCALINGMETHOD_NEDI)); entries.push_back(std::make_pair(16307, VS_SCALINGMETHOD_BICUBIC_SOFTWARE)); entries.push_back(std::make_pair(16308, VS_SCALINGMETHOD_LANCZOS_SOFTWARE)); entries.push_back(std::make_pair(16309, VS_SCALINGMETHOD_SINC_SOFTWARE)); entries.push_back(std::make_pair(13120, VS_SCALINGMETHOD_VDPAU_HARDWARE)); entries.push_back(std::make_pair(16319, VS_SCALINGMETHOD_DXVA_HARDWARE)); entries.push_back(std::make_pair(16316, VS_SCALINGMETHOD_AUTO)); /* remove unsupported methods */ for(StaticIntegerSettingOptions::iterator it = entries.begin(); it != entries.end(); ) { if (g_renderManager.Supports((ESCALINGMETHOD)it->second)) ++it; else it = entries.erase(it); } AddSpinner(groupVideo, SETTING_VIDEO_SCALINGMETHOD, 16300, 0, static_cast<int>(videoSettings.m_ScalingMethod), entries); #ifdef HAS_VIDEO_PLAYBACK if (g_renderManager.Supports(RENDERFEATURE_STRETCH) || g_renderManager.Supports(RENDERFEATURE_PIXEL_RATIO)) { entries.clear(); for (int i = 0; i < 7; ++i) entries.push_back(std::make_pair(630 + i, i)); AddSpinner(groupVideo, SETTING_VIDEO_VIEW_MODE, 629, 0, videoSettings.m_ViewMode, entries); } if (g_renderManager.Supports(RENDERFEATURE_ZOOM)) AddSlider(groupVideo, SETTING_VIDEO_ZOOM, 216, 0, videoSettings.m_CustomZoomAmount, "%2.2f", 0.5f, 0.01f, 2.0f, 216, usePopup); if (g_renderManager.Supports(RENDERFEATURE_VERTICAL_SHIFT)) AddSlider(groupVideo, SETTING_VIDEO_VERTICAL_SHIFT, 225, 0, videoSettings.m_CustomVerticalShift, "%2.2f", -2.0f, 0.01f, 2.0f, 225, usePopup); if (g_renderManager.Supports(RENDERFEATURE_PIXEL_RATIO)) AddSlider(groupVideo, SETTING_VIDEO_PIXEL_RATIO, 217, 0, videoSettings.m_CustomPixelRatio, "%2.2f", 0.5f, 0.01f, 2.0f, 217, usePopup); if (g_renderManager.Supports(RENDERFEATURE_POSTPROCESS)) AddToggle(groupVideo, SETTING_VIDEO_POSTPROCESS, 16400, 0, videoSettings.m_PostProcess); if (g_renderManager.Supports(RENDERFEATURE_BRIGHTNESS)) AddPercentageSlider(groupVideoPlayback, SETTING_VIDEO_BRIGHTNESS, 464, 0, static_cast<int>(videoSettings.m_Brightness), 14047, 1, 464, usePopup); if (g_renderManager.Supports(RENDERFEATURE_CONTRAST)) AddPercentageSlider(groupVideoPlayback, SETTING_VIDEO_CONTRAST, 465, 0, static_cast<int>(videoSettings.m_Contrast), 14047, 1, 465, usePopup); if (g_renderManager.Supports(RENDERFEATURE_GAMMA)) AddPercentageSlider(groupVideoPlayback, SETTING_VIDEO_GAMMA, 466, 0, static_cast<int>(videoSettings.m_Gamma), 14047, 1, 466, usePopup); if (g_renderManager.Supports(RENDERFEATURE_NOISE)) AddSlider(groupVideoPlayback, SETTING_VIDEO_VDPAU_NOISE, 16312, 0, videoSettings.m_NoiseReduction, "%2.2f", 0.0f, 0.01f, 1.0f, 16312, usePopup); if (g_renderManager.Supports(RENDERFEATURE_SHARPNESS)) AddSlider(groupVideoPlayback, SETTING_VIDEO_VDPAU_SHARPNESS, 16313, 0, videoSettings.m_Sharpness, "%2.2f", -1.0f, 0.02f, 1.0f, 16313, usePopup); if (g_renderManager.Supports(RENDERFEATURE_NONLINSTRETCH)) AddToggle(groupVideoPlayback, SETTING_VIDEO_NONLIN_STRETCH, 659, 0, videoSettings.m_CustomNonLinStretch); #endif // stereoscopic settings entries.clear(); entries.push_back(std::make_pair(16316, RENDER_STEREO_MODE_OFF)); entries.push_back(std::make_pair(36503, RENDER_STEREO_MODE_SPLIT_HORIZONTAL)); entries.push_back(std::make_pair(36504, RENDER_STEREO_MODE_SPLIT_VERTICAL)); AddSpinner(groupStereoscopic, SETTING_VIDEO_STEREOSCOPICMODE , 36535, 0, videoSettings.m_StereoMode, entries); AddToggle(groupStereoscopic, SETTING_VIDEO_STEREOSCOPICINVERT, 36536, 0, videoSettings.m_StereoInvert); // general settings AddButton(groupSaveAsDefault, SETTING_VIDEO_MAKE_DEFAULT, 12376, 0); AddButton(groupSaveAsDefault, SETTING_VIDEO_CALIBRATION, 214, 0); }
void CGUIDialogAudioSubtitleSettings::InitializeSettings() { CGUIDialogSettingsManualBase::InitializeSettings(); CSettingCategory *category = AddCategory("audiosubtitlesettings", -1); if (category == NULL) { CLog::Log(LOGERROR, "CGUIDialogAudioSubtitleSettings: unable to setup settings"); return; } // get all necessary setting groups CSettingGroup *groupAudio = AddGroup(category); if (groupAudio == NULL) { CLog::Log(LOGERROR, "CGUIDialogAudioSubtitleSettings: unable to setup settings"); return; } CSettingGroup *groupSubtitles = AddGroup(category); if (groupSubtitles == NULL) { CLog::Log(LOGERROR, "CGUIDialogAudioSubtitleSettings: unable to setup settings"); return; } CSettingGroup *groupSaveAsDefault = AddGroup(category); if (groupSaveAsDefault == NULL) { CLog::Log(LOGERROR, "CGUIDialogAudioSubtitleSettings: unable to setup settings"); return; } bool usePopup = g_SkinInfo->HasSkinFile("DialogSlider.xml"); CVideoSettings &videoSettings = CMediaSettings::GetInstance().GetCurrentVideoSettings(); if (g_application.m_pPlayer->HasPlayer()) { g_application.m_pPlayer->GetAudioCapabilities(m_audioCaps); g_application.m_pPlayer->GetSubtitleCapabilities(m_subCaps); } // register IsPlayingPassthrough condition m_settingsManager->AddCondition("IsPlayingPassthrough", IsPlayingPassthrough); CSettingDependency dependencyAudioOutputPassthroughDisabled(SettingDependencyTypeEnable, m_settingsManager); dependencyAudioOutputPassthroughDisabled.Or() ->Add(CSettingDependencyConditionPtr(new CSettingDependencyCondition(SETTING_AUDIO_PASSTHROUGH, "false", SettingDependencyOperatorEquals, false, m_settingsManager))) ->Add(CSettingDependencyConditionPtr(new CSettingDependencyCondition("IsPlayingPassthrough", "", "", true, m_settingsManager))); SettingDependencies depsAudioOutputPassthroughDisabled; depsAudioOutputPassthroughDisabled.push_back(dependencyAudioOutputPassthroughDisabled); m_dspEnabled = CSettings::GetInstance().GetBool(CSettings::SETTING_AUDIOOUTPUT_DSPADDONSENABLED); // audio settings // audio volume setting m_volume = g_application.GetVolume(false); CSettingNumber *settingAudioVolume = AddSlider(groupAudio, SETTING_AUDIO_VOLUME, 13376, 0, m_volume, 14054, VOLUME_MINIMUM, VOLUME_MAXIMUM / 100.0f, VOLUME_MAXIMUM); settingAudioVolume->SetDependencies(depsAudioOutputPassthroughDisabled); static_cast<CSettingControlSlider*>(settingAudioVolume->GetControl())->SetFormatter(SettingFormatterPercentAsDecibel); if (m_dspEnabled) AddButton(groupAudio, SETTING_AUDIO_DSP, 24136, 0); // audio volume amplification setting if (SupportsAudioFeature(IPC_AUD_AMP) && !m_dspEnabled) { CSettingNumber *settingAudioVolumeAmplification = AddSlider(groupAudio, SETTING_AUDIO_VOLUME_AMPLIFICATION, 660, 0, videoSettings.m_VolumeAmplification, 14054, VOLUME_DRC_MINIMUM * 0.01f, (VOLUME_DRC_MAXIMUM - VOLUME_DRC_MINIMUM) / 6000.0f, VOLUME_DRC_MAXIMUM * 0.01f); settingAudioVolumeAmplification->SetDependencies(depsAudioOutputPassthroughDisabled); } // audio delay setting if (SupportsAudioFeature(IPC_AUD_OFFSET) && !m_dspEnabled) { CSettingNumber *settingAudioDelay = AddSlider(groupAudio, SETTING_AUDIO_DELAY, 297, 0, videoSettings.m_AudioDelay, 0, -g_advancedSettings.m_videoAudioDelayRange, 0.025f, g_advancedSettings.m_videoAudioDelayRange, 297, usePopup); static_cast<CSettingControlSlider*>(settingAudioDelay->GetControl())->SetFormatter(SettingFormatterDelay); } // audio stream setting if (SupportsAudioFeature(IPC_AUD_SELECT_STREAM)) AddAudioStreams(groupAudio, SETTING_AUDIO_STREAM); // audio output to all speakers setting // TODO: remove this setting if (SupportsAudioFeature(IPC_AUD_OUTPUT_STEREO) && !m_dspEnabled) AddToggle(groupAudio, SETTING_AUDIO_OUTPUT_TO_ALL_SPEAKERS, 252, 0, videoSettings.m_OutputToAllSpeakers); // audio digital/analog setting if (SupportsAudioFeature(IPC_AUD_SELECT_OUTPUT)) { m_passthrough = CSettings::GetInstance().GetBool(CSettings::SETTING_AUDIOOUTPUT_PASSTHROUGH); AddToggle(groupAudio, SETTING_AUDIO_PASSTHROUGH, 348, 0, m_passthrough); } // subitlte settings m_subtitleVisible = g_application.m_pPlayer->GetSubtitleVisible(); // subtitle enabled setting AddToggle(groupSubtitles, SETTING_SUBTITLE_ENABLE, 13397, 0, m_subtitleVisible); // subtitle delay setting if (SupportsSubtitleFeature(IPC_SUBS_OFFSET)) { CSettingNumber *settingSubtitleDelay = AddSlider(groupSubtitles, SETTING_SUBTITLE_DELAY, 22006, 0, videoSettings.m_SubtitleDelay, 0, -g_advancedSettings.m_videoSubsDelayRange, 0.1f, g_advancedSettings.m_videoSubsDelayRange, 22006, usePopup); static_cast<CSettingControlSlider*>(settingSubtitleDelay->GetControl())->SetFormatter(SettingFormatterDelay); } // subtitle stream setting if (SupportsSubtitleFeature(IPC_SUBS_SELECT)) AddSubtitleStreams(groupSubtitles, SETTING_SUBTITLE_STREAM); // subtitle browser setting if (SupportsSubtitleFeature(IPC_SUBS_EXTERNAL)) AddButton(groupSubtitles, SETTING_SUBTITLE_BROWSER, 13250, 0); // subtitle stream setting AddButton(groupSaveAsDefault, SETTING_AUDIO_MAKE_DEFAULT, 12376, 0); }
// Build the screen bool CScreenDisplay::Build() { CreateTitle("IDS_TITLE_DISPLAYOPTIONS"); kGap = g_pLayoutDB->GetInt32(m_hLayout,LDB_ScreenColumnWidths,0); kWidth = g_pLayoutDB->GetInt32(m_hLayout,LDB_ScreenColumnWidths,1); kTotalWidth = kGap + kWidth; m_nWarningColor = g_pLayoutDB->GetInt32(m_hLayout, LDB_ScreenAddColor, 0); //background frame CLTGUICtrl_create frameCs; TextureReference hFrame(g_pLayoutDB->GetString(m_hLayout,LDB_ScreenFrameTexture)); frameCs.rnBaseRect = g_pLayoutDB->GetRect(m_hLayout,LDB_ScreenFrameRect,0); CLTGUIFrame *pFrame = debug_new(CLTGUIFrame); pFrame->Create(hFrame, frameCs); AddControl(pFrame); // Build the array of renderers GetRendererData( m_rendererData ); // Add the "resolution" control CLTGUICycleCtrl_create ccs; ccs.nHeaderWidth = kGap; ccs.rnBaseRect.m_vMin = m_ScreenRect.m_vMin; ccs.rnBaseRect.m_vMax = m_ScreenRect.m_vMin + LTVector2n(kTotalWidth,g_pLayoutDB->GetInt32(m_hLayout,LDB_ScreenFontSize)); ccs.szHelpID = "IDS_HELP_RESOLUTION"; ccs.pCommandHandler = this; ccs.nCommandID = CMD_DISPLAY_CYCLE; m_pResolutionCtrl = AddCycle("IDS_DISPLAY_RESOLUTION",ccs); // Setup the resolution control based on the current renderer SetupResolutionCtrl(); CLTGUIToggle_create tcs; tcs.rnBaseRect.m_vMin.Init(); tcs.rnBaseRect.m_vMax = LTVector2n(kGap+kWidth,g_pLayoutDB->GetInt32(m_hLayout,LDB_ScreenFontSize)); tcs.szHelpID = "IDS_HELP_VSYNC"; tcs.pbValue = &m_bVSync; tcs.nHeaderWidth = kGap; AddToggle("IDS_VSYNC",tcs); tcs.szHelpID = "ScreenDisplay_RestartRender_Help"; tcs.pbValue = &m_bRestartRenderBetweenMaps; tcs.nHeaderWidth = kGap; AddToggle("ScreenDisplay_RestartRender",tcs); tcs.szHelpID = "ScreenDisplay_TextScaling_Help"; tcs.pbValue = &m_bUseTextScaling; tcs.nHeaderWidth = kGap; CLTGUIToggle* pTog = AddToggle("ScreenDisplay_TextScaling",tcs); pTog->SetOnString(LoadString("ScreenDisplay_TextScaling_Large")); pTog->SetOffString(LoadString("ScreenDisplay_TextScaling_Small")); CLTGUISlider_create scs; scs.rnBaseRect.m_vMin.Init(); scs.rnBaseRect.m_vMax = LTVector2n(kGap+kWidth,g_pLayoutDB->GetInt32(m_hLayout,LDB_ScreenFontSize)); scs.nBarOffset = kGap; scs.szHelpID = "IDS_HELP_GAMMA"; scs.pnValue = &m_nGamma; scs.nMin = 0; scs.nMax = kNumSteps; scs.nIncrement = 1; m_pGamma= AddSlider("IDS_GAMMA", scs ); int nBaseGamma = ConvertToSlider(kDefaultGamma); float xoffset = (m_pGamma->CalculateSliderOffset(nBaseGamma) / m_pGamma->GetScale().x); uint16 nHeight = m_pGamma->GetBarHeight(); float yoffset = ((( (float)m_pGamma->GetBaseHeight()) - (float)nHeight)) / 2.0f; LTVector2n pos = m_pGamma->GetBasePos(); pos.x += int(xoffset - 1.0f); pos.y += int(yoffset - 0.5f); CLTGUIFrame *pBar = debug_new(CLTGUIFrame); CLTGUICtrl_create cs; cs.rnBaseRect.m_vMin.Init(); cs.rnBaseRect.m_vMax = LTVector2n(3,nHeight+2); pBar->Create(0xBF000000,cs); pBar->SetBasePos(pos); pBar->SetScale(g_pInterfaceResMgr->GetScreenScale()); AddControl(pBar); CLTGUICtrl_create imageCs; hFrame.Load(g_pLayoutDB->GetString(m_hLayout,LDB_ScreenAddTex)); imageCs.rnBaseRect = g_pLayoutDB->GetRect(m_hLayout,LDB_ScreenFrameRect,1); pFrame = debug_new(CLTGUIFrame); pFrame->Create(hFrame, imageCs, true); AddControl(pFrame); uint32 nFontHeight = g_pLayoutDB->GetInt32(m_hLayout,LDB_ScreenAdditionalInt,0); cs.rnBaseRect = g_pLayoutDB->GetRect(m_hLayout,LDB_ScreenFrameRect,2); m_pWarning = AddTextItem("ScreenDisplay_ResolutionWarning",cs,true,NULL,nFontHeight); m_pWarning->SetWordWrap(true); m_pWarning->Show(false); // Make sure to call the base class if (!CBaseScreen::Build()) return false; UseBack(true,true); return true; }