\r
this.Task.VideoEncoder = value;\r
this.NotifyOfPropertyChange(() => this.SelectedVideoEncoder);\r
- HandleEncoderChange(this.Task.VideoEncoder);\r
+ this.HandleEncoderChange(this.Task.VideoEncoder);\r
+ this.HandleRFChange();\r
}\r
}\r
}\r
\r
+ private void HandleRFChange()\r
+ {\r
+ double displayRF = this.DisplayRF;\r
+ if (displayRF > this.QualityMax || displayRF < this.QualityMin)\r
+ {\r
+ displayRF = this.qualityMax / 2;\r
+ }\r
+\r
+ this.SetRF(displayRF);\r
+ }\r
+\r
/// <summary>\r
/// Gets or sets a value indicating whether ShowPeakFramerate.\r
/// </summary>\r
this.ShowPeakFramerate = true;\r
break;\r
}\r
-\r
- this.SetRF(preset.Task.Quality);\r
\r
this.TwoPass = preset.Task.TwoPass;\r
this.TurboFirstPass = preset.Task.TurboFirstPass;\r
\r
this.NotifyOfPropertyChange(() => this.Task);\r
\r
- if (preset.Task != null)\r
- {\r
- this.HandleEncoderChange(preset.Task.VideoEncoder);\r
+ this.HandleEncoderChange(preset.Task.VideoEncoder);\r
+ this.SetQualitySliderBounds();\r
+ this.SetRF(preset.Task.Quality);\r
\r
- HBVideoEncoder encoder = HandBrakeEncoderHelpers.VideoEncoders.FirstOrDefault(s => s.ShortName == EnumHelper<VideoEncoder>.GetShortName(preset.Task.VideoEncoder));\r
- if (encoder != null)\r
+ HBVideoEncoder encoder = HandBrakeEncoderHelpers.VideoEncoders.FirstOrDefault(s => s.ShortName == EnumHelper<VideoEncoder>.GetShortName(preset.Task.VideoEncoder));\r
+ if (encoder != null)\r
+ {\r
+ if (preset.Task.VideoEncoder == VideoEncoder.X264 || preset.Task.VideoEncoder == VideoEncoder.X264_10\r
+ || preset.Task.VideoEncoder == VideoEncoder.X265 || preset.Task.VideoEncoder == VideoEncoder.X265_10 || preset.Task.VideoEncoder == VideoEncoder.X265_12\r
+ || preset.Task.VideoEncoder == VideoEncoder.QuickSync || preset.Task.VideoEncoder == VideoEncoder.QuickSyncH265 || preset.Task.VideoEncoder == VideoEncoder.QuickSyncH26510b)\r
{\r
- if (preset.Task.VideoEncoder == VideoEncoder.X264 || preset.Task.VideoEncoder == VideoEncoder.X264_10 \r
- || preset.Task.VideoEncoder == VideoEncoder.X265 || preset.Task.VideoEncoder == VideoEncoder.X265_10 || preset.Task.VideoEncoder == VideoEncoder.X265_12 \r
- || preset.Task.VideoEncoder == VideoEncoder.QuickSync || preset.Task.VideoEncoder == VideoEncoder.QuickSyncH265 || preset.Task.VideoEncoder == VideoEncoder.QuickSyncH26510b)\r
- {\r
- this.VideoLevel = preset.Task.VideoLevel != null ? preset.Task.VideoLevel.Clone() : this.VideoLevels.FirstOrDefault();\r
- this.VideoProfile = preset.Task.VideoProfile != null ? preset.Task.VideoProfile.Clone() : this.VideoProfiles.FirstOrDefault();\r
- this.VideoPresetValue = preset.Task.VideoPreset != null ? this.VideoPresets.IndexOf(preset.Task.VideoPreset) : 0;\r
- this.FastDecode = preset.Task.VideoTunes != null && preset.Task.VideoTunes.Contains(VideoTune.FastDecode);\r
- this.VideoTune = (preset.Task.VideoTunes != null && preset.Task.VideoTunes.Any() ? preset.Task.VideoTunes.FirstOrDefault(t => !Equals(t, VideoTune.FastDecode)) : this.VideoTunes.FirstOrDefault())\r
- ?? VideoTune.None;\r
- }\r
+ this.VideoLevel = preset.Task.VideoLevel != null ? preset.Task.VideoLevel.Clone() : this.VideoLevels.FirstOrDefault();\r
+ this.VideoProfile = preset.Task.VideoProfile != null ? preset.Task.VideoProfile.Clone() : this.VideoProfiles.FirstOrDefault();\r
+ this.VideoPresetValue = preset.Task.VideoPreset != null ? this.VideoPresets.IndexOf(preset.Task.VideoPreset) : 0;\r
+ this.FastDecode = preset.Task.VideoTunes != null && preset.Task.VideoTunes.Contains(VideoTune.FastDecode);\r
+ this.VideoTune = (preset.Task.VideoTunes != null && preset.Task.VideoTunes.Any() ? preset.Task.VideoTunes.FirstOrDefault(t => !Equals(t, VideoTune.FastDecode)) : this.VideoTunes.FirstOrDefault())\r
+ ?? VideoTune.None;\r
}\r
-\r
- this.ExtraArguments = preset.Task.ExtraAdvancedArguments;\r
- this.UseAdvancedTab = this.IsAdvancedTabOptionEnabled && preset.Task.ShowAdvancedTab;\r
}\r
+\r
+ this.ExtraArguments = preset.Task.ExtraAdvancedArguments;\r
+ this.UseAdvancedTab = this.IsAdvancedTabOptionEnabled && preset.Task.ShowAdvancedTab;\r
}\r
\r
/// <summary>\r
public void UpdateTask(EncodeTask task)\r
{\r
this.Task = task;\r
+ this.SetQualitySliderBounds();\r
this.SetRF(task.Quality);\r
\r
this.ShowPeakFramerate = this.IsPeakFramerate;\r
/// </param>\r
private void SetRF(double? quality)\r
{\r
- double cqStep = userSettingService.GetUserSetting<double>(UserSettingConstants.X264Step);\r
+ double cqStep = this.userSettingService.GetUserSetting<double>(UserSettingConstants.X264Step);\r
double rfValue = 0;\r
- this.SetQualitySliderBounds();\r
switch (this.SelectedVideoEncoder)\r
{\r
case VideoEncoder.FFMpeg:\r
this.NotifyOfPropertyChange(() => SelectedFramerate);\r
this.UseAdvancedTab = false;\r
}\r
-\r
+ \r
// Cleanup Extra Arguments\r
// Load the cached arguments. Saves the user from resetting when switching encoders.\r
string result;\r