diff --git a/MediaBrowser.Model/Configuration/UserConfiguration.cs b/MediaBrowser.Model/Configuration/UserConfiguration.cs
index d59974a2e8..57d9e0f1b2 100644
--- a/MediaBrowser.Model/Configuration/UserConfiguration.cs
+++ b/MediaBrowser.Model/Configuration/UserConfiguration.cs
@@ -48,11 +48,17 @@ namespace MediaBrowser.Model.Configuration
public bool HidePlayedInLatest { get; set; }
public bool DisplayChannelsInline { get; set; }
+ public bool RememberAudioSelections { get; set; }
+ public bool RememberSubtitleSelections { get; set; }
+
///
/// Initializes a new instance of the class.
///
public UserConfiguration()
{
+ RememberAudioSelections = true;
+ RememberSubtitleSelections = true;
+
HidePlayedInLatest = true;
PlayDefaultAudioTrack = true;
diff --git a/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs b/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs
index caddeec0db..e4a085f421 100644
--- a/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs
@@ -276,7 +276,7 @@ namespace MediaBrowser.Server.Implementations.Library
private void SetDefaultSubtitleStreamIndex(MediaSourceInfo source, UserItemData userData, User user)
{
- if (userData.SubtitleStreamIndex.HasValue)
+ if (userData.SubtitleStreamIndex.HasValue && user.Configuration.RememberSubtitleSelections)
{
var index = userData.SubtitleStreamIndex.Value;
// Make sure the saved index is still valid
@@ -307,7 +307,7 @@ namespace MediaBrowser.Server.Implementations.Library
private void SetDefaultAudioStreamIndex(MediaSourceInfo source, UserItemData userData, User user)
{
- if (userData.AudioStreamIndex.HasValue)
+ if (userData.AudioStreamIndex.HasValue && user.Configuration.RememberAudioSelections)
{
var index = userData.AudioStreamIndex.Value;
// Make sure the saved index is still valid
diff --git a/MediaBrowser.Server.Implementations/Session/SessionManager.cs b/MediaBrowser.Server.Implementations/Session/SessionManager.cs
index 70f60f31a8..1074796c09 100644
--- a/MediaBrowser.Server.Implementations/Session/SessionManager.cs
+++ b/MediaBrowser.Server.Implementations/Session/SessionManager.cs
@@ -680,7 +680,7 @@ namespace MediaBrowser.Server.Implementations.Session
foreach (var user in users)
{
- await OnPlaybackProgress(user.Id, key, libraryItem, info).ConfigureAwait(false);
+ await OnPlaybackProgress(user, key, libraryItem, info).ConfigureAwait(false);
}
}
@@ -712,9 +712,9 @@ namespace MediaBrowser.Server.Implementations.Session
StartIdleCheckTimer();
}
- private async Task OnPlaybackProgress(Guid userId, string userDataKey, BaseItem item, PlaybackProgressInfo info)
+ private async Task OnPlaybackProgress(User user, string userDataKey, BaseItem item, PlaybackProgressInfo info)
{
- var data = _userDataRepository.GetUserData(userId, userDataKey);
+ var data = _userDataRepository.GetUserData(user.Id, userDataKey);
var positionTicks = info.PositionTicks;
@@ -722,16 +722,31 @@ namespace MediaBrowser.Server.Implementations.Session
{
_userDataRepository.UpdatePlayState(item, data, positionTicks.Value);
- UpdatePlaybackSettings(info, data);
+ UpdatePlaybackSettings(user, info, data);
- await _userDataRepository.SaveUserData(userId, item, data, UserDataSaveReason.PlaybackProgress, CancellationToken.None).ConfigureAwait(false);
+ await _userDataRepository.SaveUserData(user.Id, item, data, UserDataSaveReason.PlaybackProgress, CancellationToken.None).ConfigureAwait(false);
}
}
- private void UpdatePlaybackSettings(PlaybackProgressInfo info, UserItemData data)
+ private void UpdatePlaybackSettings(User user, PlaybackProgressInfo info, UserItemData data)
{
- data.AudioStreamIndex = info.AudioStreamIndex;
- data.SubtitleStreamIndex = info.SubtitleStreamIndex;
+ if (user.Configuration.RememberAudioSelections)
+ {
+ data.AudioStreamIndex = info.AudioStreamIndex;
+ }
+ else
+ {
+ data.AudioStreamIndex = null;
+ }
+
+ if (user.Configuration.RememberSubtitleSelections)
+ {
+ data.SubtitleStreamIndex = info.SubtitleStreamIndex;
+ }
+ else
+ {
+ data.SubtitleStreamIndex = null;
+ }
}
///