/// <summary> /// Convert a Quality Value to a position value for the Video Quality slider /// </summary> /// <param name="videoEncoder">The selected video encoder</param> /// <param name="value">The Quality value</param> /// <returns>The position on the video quality slider</returns> private static int QualityToSliderValue(VideoEncoder videoEncoder, double?value) { if (!value.HasValue) { // Default to a sensible level. return(20); } int sliderValue = 0; switch (videoEncoder) { case VideoEncoder.FFMpeg: sliderValue = 32 - (int)value; break; case VideoEncoder.X264: double cqStep = UserSettingService.GetUserSettingDouble(UserSettingConstants.X264Step); sliderValue = (int)((51.0 / cqStep) - (value / cqStep)); break; case VideoEncoder.Theora: sliderValue = (int)value; break; } return(sliderValue); }
private static string VideoSettingsQuery(frmMain mainWindow) { string query = string.Empty; switch (mainWindow.drp_videoEncoder.Text) { case "MPEG-4 (FFmpeg)": query += " -e ffmpeg"; break; case "H.264 (x264)": query += " -e x264"; break; case "VP3 (Theora)": query += " -e theora"; break; default: query += " -e x264"; break; } // Video Settings if (mainWindow.radio_avgBitrate.Checked) { query += " -b " + mainWindow.text_bitrate.Text; } // Video Quality Setting if (mainWindow.radio_cq.Checked) { double cqStep = UserSettingService.GetUserSettingDouble(UserSettingConstants.X264Step); double value; switch (mainWindow.drp_videoEncoder.Text) { case "MPEG-4 (FFmpeg)": value = 31 - (mainWindow.slider_videoQuality.Value - 1); query += " -q " + value.ToString(new CultureInfo("en-US")); break; case "H.264 (x264)": CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US"); value = 51 - (mainWindow.slider_videoQuality.Value * cqStep); value = Math.Round(value, 2); query += " -q " + value.ToString(culture); break; case "VP3 (Theora)": value = mainWindow.slider_videoQuality.Value; query += " -q " + value.ToString(new CultureInfo("en-US")); break; } } if (mainWindow.check_2PassEncode.Checked) { query += " -2 "; } if (mainWindow.check_turbo.Checked) { query += " -T "; } if (mainWindow.drp_videoFramerate.Text != "Same as source") { query += " -r " + mainWindow.drp_videoFramerate.Text; } if (mainWindow.drp_videoFramerate.SelectedIndex == 0) { // If we use Same as Source, we can either output CFR or VFR query += mainWindow.radio_constantFramerate.Checked ? " --cfr " : " --vfr "; } else { // We have a hard framerate set, so we can either be Constant or peak (VFR) framerate query += mainWindow.radio_constantFramerate.Checked ? " --cfr " : " --pfr "; } return(query); }
public frmOptions(frmMain mw) { InitializeComponent(); mainWindow = mw; IDictionary <string, string> langList = LanguageUtilities.MapLanguages(); foreach (string item in langList.Keys) { drop_preferredLang.Items.Add(item); } // ############################# // General // ############################# // Enable Tooltips. if (Properties.Settings.Default.tooltipEnable) { check_tooltip.CheckState = CheckState.Checked; ToolTip.Active = true; } // Update Check if (Properties.Settings.Default.updateStatus) { check_updateCheck.CheckState = CheckState.Checked; } // Days between update checks switch (Properties.Settings.Default.daysBetweenUpdateCheck) { case 1: drop_updateCheckDays.SelectedIndex = 0; break; case 7: drop_updateCheckDays.SelectedIndex = 1; break; case 30: drop_updateCheckDays.SelectedIndex = 2; break; } // On Encode Completeion Action drp_completeOption.Text = userSettingService.GetUserSettingString("WhenCompleteAction"); // Growl. if (userSettingService.GetUserSettingBoolean(UserSettingConstants.GrowlEncode)) { check_growlEncode.CheckState = CheckState.Checked; } if (userSettingService.GetUserSettingBoolean(UserSettingConstants.GrowlQueue)) { check_GrowlQueue.CheckState = CheckState.Checked; } check_sendFileTo.Checked = this.userSettingService.GetUserSettingBoolean(UserSettingConstants.SendFile); lbl_sendFileTo.Text = Path.GetFileNameWithoutExtension(this.userSettingService.GetUserSettingString(UserSettingConstants.SendFileTo)); txt_SendFileArgs.Text = this.userSettingService.GetUserSettingString(UserSettingConstants.SendFileToArgs); // ############################# // Output Settings // ############################# // Enable auto naming feature.) if (Properties.Settings.Default.autoNaming) { check_autoNaming.CheckState = CheckState.Checked; } // Store the auto name path text_an_path.Text = Properties.Settings.Default.autoNamePath; if (text_an_path.Text == string.Empty) { text_an_path.Text = "Click 'Browse' to set the default location"; } // Store auto name format txt_autoNameFormat.Text = Properties.Settings.Default.autoNameFormat; // Use iPod/iTunes friendly .m4v extension for MP4 files. cb_mp4FileMode.SelectedIndex = Properties.Settings.Default.useM4v; // Remove Underscores check_removeUnderscores.Checked = Properties.Settings.Default.AutoNameRemoveUnderscore; // Title case check_TitleCase.Checked = Properties.Settings.Default.AutoNameTitleCase; // ############################# // Picture Tab // ############################# // VLC Path txt_vlcPath.Text = Properties.Settings.Default.VLC_Path; // ############################# // Audio and Subtitles Tab // ############################# drop_preferredLang.SelectedItem = Properties.Settings.Default.NativeLanguage; switch (Settings.Default.DubMode) { case 1: radio_dub.Checked = true; break; case 2: radio_foreignAndSubs.Checked = true; break; case 3: radio_preferredAudioAndSubs.Checked = true; break; } check_AddCCTracks.Checked = Properties.Settings.Default.useClosedCaption; // ############################# // CLI // ############################# // Priority level for encodes drp_Priority.Text = userSettingService.GetUserSettingString(UserSettingConstants.ProcessPriority); check_preventSleep.Checked = userSettingService.GetUserSettingBoolean(UserSettingConstants.PreventSleep); // Log Verbosity Level cb_logVerboseLvl.SelectedIndex = userSettingService.GetUserSettingInt(UserSettingConstants.Verbosity); // Save logs in the same directory as encoded files if (userSettingService.GetUserSettingBoolean(UserSettingConstants.SaveLogWithVideo)) { check_saveLogWithVideo.CheckState = CheckState.Checked; } // Save Logs in a specified path if (userSettingService.GetUserSettingBoolean(UserSettingConstants.SaveLogToCopyDirectory)) { check_logsInSpecifiedLocation.CheckState = CheckState.Checked; } // The saved log path text_logPath.Text = userSettingService.GetUserSettingString(UserSettingConstants.SaveLogCopyDirectory); check_clearOldLogs.Checked = Properties.Settings.Default.clearOldLogs; // ############################# // Advanced // ############################# // Minimise to Tray if (Properties.Settings.Default.trayIconAlerts) { check_trayStatusAlerts.CheckState = CheckState.Checked; } // Tray Balloon popups if (Properties.Settings.Default.MainWindowMinimize) { check_mainMinimize.CheckState = CheckState.Checked; } // Enable / Disable Query editor tab if (Properties.Settings.Default.QueryEditorTab) { check_queryEditorTab.CheckState = CheckState.Checked; } check_promptOnUnmatchingQueries.Enabled = check_queryEditorTab.Checked; // Prompt on inconsistant queries check_promptOnUnmatchingQueries.Checked = Properties.Settings.Default.PromptOnUnmatchingQueries; // Preset update notification if (Properties.Settings.Default.presetNotification) { check_disablePresetNotification.CheckState = CheckState.Checked; } // Show CLI Window check_showCliForInGUIEncode.Checked = userSettingService.GetUserSettingBoolean(UserSettingConstants.ShowCLI); // Set the preview count drop_previewScanCount.SelectedItem = Properties.Settings.Default.previewScanCount.ToString(); // x264 step string step = userSettingService.GetUserSettingDouble(UserSettingConstants.X264Step).ToString(new CultureInfo("en-US")); switch (step) { case "1": drop_x264step.SelectedIndex = 0; break; case "0.5": drop_x264step.SelectedIndex = 1; break; case "0.25": drop_x264step.SelectedIndex = 2; break; case "0.2": drop_x264step.SelectedIndex = 3; break; } // Use Experimental dvdnav if (userSettingService.GetUserSettingBoolean(UserSettingConstants.DisableLibDvdNav)) { check_dvdnav.CheckState = CheckState.Checked; } optionsWindowLoading = false; }