{\r
ClearAudioList();\r
\r
- ObservableCollection<AudioTrack> tracks = preset.Task.AudioTracks;\r
- this.PassthruSettings = preset.AudioPassthruSettings ?? new AllowedPassthru(false);\r
+ ObservableCollection<AudioTrack> tracks = new ObservableCollection<AudioTrack>(preset.Task.AudioTracks);\r
+ this.PassthruSettings = preset.AudioPassthruSettings != null ? new AllowedPassthru(preset.AudioPassthruSettings) : new AllowedPassthru(false);\r
this.SetPassthruSettings(this.PassthruSettings);\r
\r
if (tracks == null || (drp_audioTrack.SelectedItem != null && drp_audioTrack.SelectedItem.ToString() == AudioHelper.NoneFound.Description))\r
if (tracks.Count == 0 || tracks[0].ScannedTrack.TrackNumber == 0)\r
{\r
this.AutomaticTrackSelection();\r
- } \r
+ }\r
+\r
+ // Make sure correct audio encoder is still selected.\r
+ this.CheckAndFixPassthruCompatibility();\r
\r
if (this.AudioListChanged != null)\r
this.AudioListChanged(this, new EventArgs());\r
this.AudioTracks.Clear();\r
this.ScannedTracks.Clear();\r
\r
- // Setup the passthru options\r
- this.PassthruSettings = preset.AudioPassthruSettings ?? new AllowedPassthru(false);\r
- this.SetPassthruSettings(this.PassthruSettings);\r
-\r
if (selectedTitle.AudioTracks.Count == 0)\r
{ \r
this.ScannedTracks.Add(AudioHelper.NoneFound);\r
{\r
this.AutomaticTrackSelection();\r
}\r
+\r
+ // Make sure correct audio encoder is still selected.\r
+ this.CheckAndFixPassthruCompatibility();\r
}\r
\r
#endregion\r
return EnumHelper<AudioEncoder>.GetValue(drp_passthruFallback.SelectedItem.ToString()); \r
}\r
\r
+ /// <summary>\r
+ /// Fix any invalid passthru problems.\r
+ /// </summary>\r
+ private void CheckAndFixPassthruCompatibility()\r
+ {\r
+ // Make sure correct audio encoder is still selected.\r
+ foreach (AudioTrack track in this.audioTracks)\r
+ {\r
+ if (this.IsIncompatiblePassthru(track))\r
+ {\r
+ track.Encoder = GetCompatiblePassthru(track);\r
+ }\r
+ }\r
+ }\r
+\r
/// <summary>\r
/// Setup the Passthru Settings Panel\r
/// </summary>\r
this.AudioEncoderFallback = AudioEncoder.Ac3;\r
}\r
\r
+ /// <summary>\r
+ /// Initializes a new instance of the <see cref="AllowedPassthru"/> class.\r
+ /// </summary>\r
+ /// <param name="initialValue">\r
+ /// The initial value.\r
+ /// </param>\r
+ public AllowedPassthru(AllowedPassthru initialValue)\r
+ {\r
+ this.AudioAllowAACPass = initialValue.AudioAllowAACPass;\r
+ this.AudioAllowAC3Pass = initialValue.AudioAllowAC3Pass;\r
+ this.AudioAllowDTSHDPass = initialValue.AudioAllowDTSHDPass;\r
+ this.AudioAllowDTSPass = initialValue.AudioAllowDTSPass;\r
+ this.AudioAllowMP3Pass = initialValue.AudioAllowMP3Pass;\r
+ this.AudioEncoderFallback = initialValue.AudioEncoderFallback;\r
+ }\r
+\r
/// <summary>\r
/// Gets or sets a value indicating whether AudioAllowAACPass.\r
/// </summary>\r