From 7c46947df50e4b0dfd86d04c923019d0e2dea788 Mon Sep 17 00:00:00 2001 From: rzk3 Date: Thu, 16 Feb 2023 09:18:26 -0500 Subject: [PATCH 01/12] Add PlaybackSpeed properties to state APIS --- .../Session/PlaybackProgressInfo.cs | 24 +++++++++++++++++ MediaBrowser.Model/Session/PlayerStateInfo.cs | 26 +++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/MediaBrowser.Model/Session/PlaybackProgressInfo.cs b/MediaBrowser.Model/Session/PlaybackProgressInfo.cs index a6e7efcb0c..5c75ab2c68 100644 --- a/MediaBrowser.Model/Session/PlaybackProgressInfo.cs +++ b/MediaBrowser.Model/Session/PlaybackProgressInfo.cs @@ -11,6 +11,8 @@ namespace MediaBrowser.Model.Session /// public class PlaybackProgressInfo { + private double _playbackSpeed = 1.0; + /// /// Gets or sets a value indicating whether this instance can seek. /// @@ -110,5 +112,27 @@ namespace MediaBrowser.Model.Session public QueueItem[] NowPlayingQueue { get; set; } public string PlaylistItemId { get; set; } + + /// + /// Gets or sets the playback speed. + /// + /// The playback speed. + public double PlaybackSpeed + { + get + { + return _playbackSpeed; + } + + set + { + if (value > 10 || value < 0.1) + { + throw new InvalidOperationException("PlaybackSpeed must be between 0.1 and 10.0"); + } + + _playbackSpeed = value; + } + } } } diff --git a/MediaBrowser.Model/Session/PlayerStateInfo.cs b/MediaBrowser.Model/Session/PlayerStateInfo.cs index 80e6d4e0b0..0caf731cc2 100644 --- a/MediaBrowser.Model/Session/PlayerStateInfo.cs +++ b/MediaBrowser.Model/Session/PlayerStateInfo.cs @@ -1,10 +1,14 @@ #nullable disable #pragma warning disable CS1591 +using System; + namespace MediaBrowser.Model.Session { public class PlayerStateInfo { + private double _playbackSpeed = 1.0; + /// /// Gets or sets the now playing position ticks. /// @@ -70,5 +74,27 @@ namespace MediaBrowser.Model.Session /// /// The live stream identifier. public string LiveStreamId { get; set; } + + /// + /// Gets or sets the playback speed. + /// + /// The playback speed. + public double PlaybackSpeed + { + get + { + return _playbackSpeed; + } + + set + { + if (value > 10 || value < 0.1) + { + throw new InvalidOperationException("PlaybackSpeed must be between 0.1 and 10.0"); + } + + _playbackSpeed = value; + } + } } } From bb840a2e70262108bf7d2954cdb679eab394c63a Mon Sep 17 00:00:00 2001 From: rzk3 Date: Thu, 16 Feb 2023 09:27:09 -0500 Subject: [PATCH 02/12] Made PlaybackSpeed nullable for kotlin SDK --- MediaBrowser.Model/Session/PlaybackProgressInfo.cs | 4 ++-- MediaBrowser.Model/Session/PlayerStateInfo.cs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/MediaBrowser.Model/Session/PlaybackProgressInfo.cs b/MediaBrowser.Model/Session/PlaybackProgressInfo.cs index 5c75ab2c68..d20fa16316 100644 --- a/MediaBrowser.Model/Session/PlaybackProgressInfo.cs +++ b/MediaBrowser.Model/Session/PlaybackProgressInfo.cs @@ -11,7 +11,7 @@ namespace MediaBrowser.Model.Session /// public class PlaybackProgressInfo { - private double _playbackSpeed = 1.0; + private double? _playbackSpeed = 1.0; /// /// Gets or sets a value indicating whether this instance can seek. @@ -117,7 +117,7 @@ namespace MediaBrowser.Model.Session /// Gets or sets the playback speed. /// /// The playback speed. - public double PlaybackSpeed + public double? PlaybackSpeed { get { diff --git a/MediaBrowser.Model/Session/PlayerStateInfo.cs b/MediaBrowser.Model/Session/PlayerStateInfo.cs index 0caf731cc2..5d865dd61f 100644 --- a/MediaBrowser.Model/Session/PlayerStateInfo.cs +++ b/MediaBrowser.Model/Session/PlayerStateInfo.cs @@ -7,7 +7,7 @@ namespace MediaBrowser.Model.Session { public class PlayerStateInfo { - private double _playbackSpeed = 1.0; + private double? _playbackSpeed = 1.0; /// /// Gets or sets the now playing position ticks. @@ -79,7 +79,7 @@ namespace MediaBrowser.Model.Session /// Gets or sets the playback speed. /// /// The playback speed. - public double PlaybackSpeed + public double? PlaybackSpeed { get { From 750feaf693365a23b637da59d641ee438b1e8e6d Mon Sep 17 00:00:00 2001 From: rzk3 Date: Thu, 16 Feb 2023 10:04:58 -0500 Subject: [PATCH 03/12] Clamp PlaybackSpeed values instead of erroring --- MediaBrowser.Model/Session/PlaybackProgressInfo.cs | 8 ++++++-- MediaBrowser.Model/Session/PlayerStateInfo.cs | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/MediaBrowser.Model/Session/PlaybackProgressInfo.cs b/MediaBrowser.Model/Session/PlaybackProgressInfo.cs index d20fa16316..5d29f27891 100644 --- a/MediaBrowser.Model/Session/PlaybackProgressInfo.cs +++ b/MediaBrowser.Model/Session/PlaybackProgressInfo.cs @@ -126,9 +126,13 @@ namespace MediaBrowser.Model.Session set { - if (value > 10 || value < 0.1) + if (value > 10) { - throw new InvalidOperationException("PlaybackSpeed must be between 0.1 and 10.0"); + _playbackSpeed = 10; + } + else if (value < 0.1) + { + _playbackSpeed = 0.1; } _playbackSpeed = value; diff --git a/MediaBrowser.Model/Session/PlayerStateInfo.cs b/MediaBrowser.Model/Session/PlayerStateInfo.cs index 5d865dd61f..597ffcfac5 100644 --- a/MediaBrowser.Model/Session/PlayerStateInfo.cs +++ b/MediaBrowser.Model/Session/PlayerStateInfo.cs @@ -88,9 +88,13 @@ namespace MediaBrowser.Model.Session set { - if (value > 10 || value < 0.1) + if (value > 10) { - throw new InvalidOperationException("PlaybackSpeed must be between 0.1 and 10.0"); + _playbackSpeed = 10; + } + else if (value < 0.1) + { + _playbackSpeed = 0.1; } _playbackSpeed = value; From 9c5d08f4d19ded2b59c0cc0cd408c6888fd8d329 Mon Sep 17 00:00:00 2001 From: rzk3 Date: Thu, 16 Feb 2023 10:10:34 -0500 Subject: [PATCH 04/12] Fixed clamped value being replaced --- MediaBrowser.Model/Session/PlaybackProgressInfo.cs | 6 ++++-- MediaBrowser.Model/Session/PlayerStateInfo.cs | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/MediaBrowser.Model/Session/PlaybackProgressInfo.cs b/MediaBrowser.Model/Session/PlaybackProgressInfo.cs index 5d29f27891..c297e45a30 100644 --- a/MediaBrowser.Model/Session/PlaybackProgressInfo.cs +++ b/MediaBrowser.Model/Session/PlaybackProgressInfo.cs @@ -134,8 +134,10 @@ namespace MediaBrowser.Model.Session { _playbackSpeed = 0.1; } - - _playbackSpeed = value; + else + { + _playbackSpeed = value; + } } } } diff --git a/MediaBrowser.Model/Session/PlayerStateInfo.cs b/MediaBrowser.Model/Session/PlayerStateInfo.cs index 597ffcfac5..39126a1f79 100644 --- a/MediaBrowser.Model/Session/PlayerStateInfo.cs +++ b/MediaBrowser.Model/Session/PlayerStateInfo.cs @@ -96,8 +96,10 @@ namespace MediaBrowser.Model.Session { _playbackSpeed = 0.1; } - - _playbackSpeed = value; + else + { + _playbackSpeed = value; + } } } } From 800ff53e978207309565a7671eb9f692021910d3 Mon Sep 17 00:00:00 2001 From: rzk3 Date: Thu, 16 Feb 2023 21:12:22 -0500 Subject: [PATCH 05/12] Use Math.Clamp instead of if statements --- MediaBrowser.Model/Session/PlaybackProgressInfo.cs | 10 +++------- MediaBrowser.Model/Session/PlayerStateInfo.cs | 10 +++------- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/MediaBrowser.Model/Session/PlaybackProgressInfo.cs b/MediaBrowser.Model/Session/PlaybackProgressInfo.cs index c297e45a30..0ea38a5aa5 100644 --- a/MediaBrowser.Model/Session/PlaybackProgressInfo.cs +++ b/MediaBrowser.Model/Session/PlaybackProgressInfo.cs @@ -126,17 +126,13 @@ namespace MediaBrowser.Model.Session set { - if (value > 10) + if (value is null) { - _playbackSpeed = 10; - } - else if (value < 0.1) - { - _playbackSpeed = 0.1; + _playbackSpeed = null; } else { - _playbackSpeed = value; + _playbackSpeed = Math.Clamp((double)value, 0.1, 10.0); } } } diff --git a/MediaBrowser.Model/Session/PlayerStateInfo.cs b/MediaBrowser.Model/Session/PlayerStateInfo.cs index 39126a1f79..d1f0915550 100644 --- a/MediaBrowser.Model/Session/PlayerStateInfo.cs +++ b/MediaBrowser.Model/Session/PlayerStateInfo.cs @@ -88,17 +88,13 @@ namespace MediaBrowser.Model.Session set { - if (value > 10) + if (value is null) { - _playbackSpeed = 10; - } - else if (value < 0.1) - { - _playbackSpeed = 0.1; + _playbackSpeed = null; } else { - _playbackSpeed = value; + _playbackSpeed = Math.Clamp((double)value, 0.1, 10.0); } } } From 7c1ebc3ea27c800aa5014a767bc855c742b43491 Mon Sep 17 00:00:00 2001 From: rzk3 Date: Thu, 16 Feb 2023 21:13:33 -0500 Subject: [PATCH 06/12] Add PlaybackSpeed to PlayQueueUpdates --- MediaBrowser.Model/SyncPlay/PlayQueueUpdate.cs | 10 +++++++++- MediaBrowser.Model/SyncPlay/PlayQueueUpdateReason.cs | 7 ++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/MediaBrowser.Model/SyncPlay/PlayQueueUpdate.cs b/MediaBrowser.Model/SyncPlay/PlayQueueUpdate.cs index cce99c77d5..909265cbfe 100644 --- a/MediaBrowser.Model/SyncPlay/PlayQueueUpdate.cs +++ b/MediaBrowser.Model/SyncPlay/PlayQueueUpdate.cs @@ -19,7 +19,8 @@ namespace MediaBrowser.Model.SyncPlay /// The playing item status. /// The shuffle mode. /// The repeat mode. - public PlayQueueUpdate(PlayQueueUpdateReason reason, DateTime lastUpdate, IReadOnlyList playlist, int playingItemIndex, long startPositionTicks, bool isPlaying, GroupShuffleMode shuffleMode, GroupRepeatMode repeatMode) + /// The playback speed. + public PlayQueueUpdate(PlayQueueUpdateReason reason, DateTime lastUpdate, IReadOnlyList playlist, int playingItemIndex, long startPositionTicks, bool isPlaying, GroupShuffleMode shuffleMode, GroupRepeatMode repeatMode, double playbackSpeed) { Reason = reason; LastUpdate = lastUpdate; @@ -29,6 +30,7 @@ namespace MediaBrowser.Model.SyncPlay IsPlaying = isPlaying; ShuffleMode = shuffleMode; RepeatMode = repeatMode; + PlaybackSpeed = playbackSpeed; } /// @@ -78,5 +80,11 @@ namespace MediaBrowser.Model.SyncPlay /// /// The repeat mode. public GroupRepeatMode RepeatMode { get; } + + /// + /// Gets the PlaybackSpeed + /// + /// The playback speed. + public double? PlaybackSpeed { get; } } } diff --git a/MediaBrowser.Model/SyncPlay/PlayQueueUpdateReason.cs b/MediaBrowser.Model/SyncPlay/PlayQueueUpdateReason.cs index b609f4b1bd..1145327884 100644 --- a/MediaBrowser.Model/SyncPlay/PlayQueueUpdateReason.cs +++ b/MediaBrowser.Model/SyncPlay/PlayQueueUpdateReason.cs @@ -53,6 +53,11 @@ namespace MediaBrowser.Model.SyncPlay /// /// A user is changing shuffle mode. /// - ShuffleMode = 9 + ShuffleMode = 9, + + /// + /// A user has changed the playback speed. + /// + PlaybackSpeedChange = 10 } } From 7b8b310cb5c687055e50d3238089753c34be141c Mon Sep 17 00:00:00 2001 From: rzk3 Date: Thu, 16 Feb 2023 21:22:49 -0500 Subject: [PATCH 07/12] Added PlaybackRequestType.SetPlaybackSpeed --- MediaBrowser.Model/SyncPlay/PlaybackRequestType.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/MediaBrowser.Model/SyncPlay/PlaybackRequestType.cs b/MediaBrowser.Model/SyncPlay/PlaybackRequestType.cs index 4429623dd9..f63e9a0660 100644 --- a/MediaBrowser.Model/SyncPlay/PlaybackRequestType.cs +++ b/MediaBrowser.Model/SyncPlay/PlaybackRequestType.cs @@ -88,6 +88,11 @@ namespace MediaBrowser.Model.SyncPlay /// /// A user is requesting to be ignored on group wait. /// - IgnoreWait = 16 + IgnoreWait = 16, + + /// + /// A user is requesting to change the playback speed. + /// + SetPlaybackSpeed = 17 } } From 5161fbc67a3966457c515fe66a52e08e5c315514 Mon Sep 17 00:00:00 2001 From: rzk3 Date: Thu, 16 Feb 2023 21:50:24 -0500 Subject: [PATCH 08/12] Added PlaybackSpeed to Group --- Emby.Server.Implementations/SyncPlay/Group.cs | 32 ++++++++++++++++++- .../SyncPlay/PlayQueueUpdate.cs | 4 +-- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/Emby.Server.Implementations/SyncPlay/Group.cs b/Emby.Server.Implementations/SyncPlay/Group.cs index 7d7ea58106..46987c2f50 100644 --- a/Emby.Server.Implementations/SyncPlay/Group.cs +++ b/Emby.Server.Implementations/SyncPlay/Group.cs @@ -61,6 +61,11 @@ namespace Emby.Server.Implementations.SyncPlay /// private IGroupState _state; + /// + /// The internal playback speed. + /// + private double? _playbackSpeed = 1.0; + /// /// Initializes a new instance of the class. /// @@ -137,6 +142,30 @@ namespace Emby.Server.Implementations.SyncPlay /// The last activity. public DateTime LastActivity { get; set; } + /// + /// Gets or sets the playback speed. + /// + /// The playback speed. + public double? PlaybackSpeed + { + get + { + return _playbackSpeed; + } + + set + { + if (value is null) + { + _playbackSpeed = null; + } + else + { + _playbackSpeed = Math.Clamp((double)value, 0.1, 10.0); + } + } + } + /// /// Adds the session to the group. /// @@ -682,7 +711,8 @@ namespace Emby.Server.Implementations.SyncPlay startPositionTicks, isPlaying, PlayQueue.ShuffleMode, - PlayQueue.RepeatMode); + PlayQueue.RepeatMode, + PlaybackSpeed); } } } diff --git a/MediaBrowser.Model/SyncPlay/PlayQueueUpdate.cs b/MediaBrowser.Model/SyncPlay/PlayQueueUpdate.cs index 909265cbfe..b8f9c5caf7 100644 --- a/MediaBrowser.Model/SyncPlay/PlayQueueUpdate.cs +++ b/MediaBrowser.Model/SyncPlay/PlayQueueUpdate.cs @@ -20,7 +20,7 @@ namespace MediaBrowser.Model.SyncPlay /// The shuffle mode. /// The repeat mode. /// The playback speed. - public PlayQueueUpdate(PlayQueueUpdateReason reason, DateTime lastUpdate, IReadOnlyList playlist, int playingItemIndex, long startPositionTicks, bool isPlaying, GroupShuffleMode shuffleMode, GroupRepeatMode repeatMode, double playbackSpeed) + public PlayQueueUpdate(PlayQueueUpdateReason reason, DateTime lastUpdate, IReadOnlyList playlist, int playingItemIndex, long startPositionTicks, bool isPlaying, GroupShuffleMode shuffleMode, GroupRepeatMode repeatMode, double? playbackSpeed) { Reason = reason; LastUpdate = lastUpdate; @@ -82,7 +82,7 @@ namespace MediaBrowser.Model.SyncPlay public GroupRepeatMode RepeatMode { get; } /// - /// Gets the PlaybackSpeed + /// Gets the PlaybackSpeed. /// /// The playback speed. public double? PlaybackSpeed { get; } From 914faa6679f42fe440acc67256cb6eddff371beb Mon Sep 17 00:00:00 2001 From: rzk3 Date: Fri, 17 Feb 2023 21:29:34 -0500 Subject: [PATCH 09/12] Use ternary conditional operator --- Emby.Server.Implementations/SyncPlay/Group.cs | 18 ++---------------- .../Session/PlaybackProgressInfo.cs | 18 ++---------------- MediaBrowser.Model/Session/PlayerStateInfo.cs | 18 ++---------------- 3 files changed, 6 insertions(+), 48 deletions(-) diff --git a/Emby.Server.Implementations/SyncPlay/Group.cs b/Emby.Server.Implementations/SyncPlay/Group.cs index 46987c2f50..945f3efd4d 100644 --- a/Emby.Server.Implementations/SyncPlay/Group.cs +++ b/Emby.Server.Implementations/SyncPlay/Group.cs @@ -148,22 +148,8 @@ namespace Emby.Server.Implementations.SyncPlay /// The playback speed. public double? PlaybackSpeed { - get - { - return _playbackSpeed; - } - - set - { - if (value is null) - { - _playbackSpeed = null; - } - else - { - _playbackSpeed = Math.Clamp((double)value, 0.1, 10.0); - } - } + get => _playbackSpeed; + set => _playbackSpeed = value is null ? null : Math.Clamp(value.Value, 0.1, 10.0); } /// diff --git a/MediaBrowser.Model/Session/PlaybackProgressInfo.cs b/MediaBrowser.Model/Session/PlaybackProgressInfo.cs index 0ea38a5aa5..d0caa4ab6b 100644 --- a/MediaBrowser.Model/Session/PlaybackProgressInfo.cs +++ b/MediaBrowser.Model/Session/PlaybackProgressInfo.cs @@ -119,22 +119,8 @@ namespace MediaBrowser.Model.Session /// The playback speed. public double? PlaybackSpeed { - get - { - return _playbackSpeed; - } - - set - { - if (value is null) - { - _playbackSpeed = null; - } - else - { - _playbackSpeed = Math.Clamp((double)value, 0.1, 10.0); - } - } + get => _playbackSpeed; + set => _playbackSpeed = value is null ? null : Math.Clamp(value.Value, 0.1, 10.0); } } } diff --git a/MediaBrowser.Model/Session/PlayerStateInfo.cs b/MediaBrowser.Model/Session/PlayerStateInfo.cs index d1f0915550..80b78f70e6 100644 --- a/MediaBrowser.Model/Session/PlayerStateInfo.cs +++ b/MediaBrowser.Model/Session/PlayerStateInfo.cs @@ -81,22 +81,8 @@ namespace MediaBrowser.Model.Session /// The playback speed. public double? PlaybackSpeed { - get - { - return _playbackSpeed; - } - - set - { - if (value is null) - { - _playbackSpeed = null; - } - else - { - _playbackSpeed = Math.Clamp((double)value, 0.1, 10.0); - } - } + get => _playbackSpeed; + set => _playbackSpeed = value is null ? null : Math.Clamp(value.Value, 0.1, 10.0); } } } From d7c5f12d09f9571a52c5cdc2b8394a4422968651 Mon Sep 17 00:00:00 2001 From: rzk3 Date: Fri, 17 Feb 2023 21:31:57 -0500 Subject: [PATCH 10/12] Verify input in PlayQueueUpdate ctor --- MediaBrowser.Model/SyncPlay/PlayQueueUpdate.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MediaBrowser.Model/SyncPlay/PlayQueueUpdate.cs b/MediaBrowser.Model/SyncPlay/PlayQueueUpdate.cs index b8f9c5caf7..c4740bd11a 100644 --- a/MediaBrowser.Model/SyncPlay/PlayQueueUpdate.cs +++ b/MediaBrowser.Model/SyncPlay/PlayQueueUpdate.cs @@ -30,7 +30,7 @@ namespace MediaBrowser.Model.SyncPlay IsPlaying = isPlaying; ShuffleMode = shuffleMode; RepeatMode = repeatMode; - PlaybackSpeed = playbackSpeed; + PlaybackSpeed = playbackSpeed is null ? null : Math.Clamp(playbackSpeed.Value, 0.1, 10.0); } /// From 6d13c95e840964630b7fafed69e1423e39140495 Mon Sep 17 00:00:00 2001 From: rzk3 Date: Mon, 27 Mar 2023 10:42:20 -0400 Subject: [PATCH 11/12] Change to float? instead of double? --- Emby.Server.Implementations/SyncPlay/Group.cs | 6 +++--- MediaBrowser.Model/Session/PlaybackProgressInfo.cs | 6 +++--- MediaBrowser.Model/Session/PlayerStateInfo.cs | 6 +++--- MediaBrowser.Model/SyncPlay/PlayQueueUpdate.cs | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Emby.Server.Implementations/SyncPlay/Group.cs b/Emby.Server.Implementations/SyncPlay/Group.cs index 945f3efd4d..25c83526c3 100644 --- a/Emby.Server.Implementations/SyncPlay/Group.cs +++ b/Emby.Server.Implementations/SyncPlay/Group.cs @@ -64,7 +64,7 @@ namespace Emby.Server.Implementations.SyncPlay /// /// The internal playback speed. /// - private double? _playbackSpeed = 1.0; + private float? _playbackSpeed = 1.0f; /// /// Initializes a new instance of the class. @@ -146,10 +146,10 @@ namespace Emby.Server.Implementations.SyncPlay /// Gets or sets the playback speed. /// /// The playback speed. - public double? PlaybackSpeed + public float? PlaybackSpeed { get => _playbackSpeed; - set => _playbackSpeed = value is null ? null : Math.Clamp(value.Value, 0.1, 10.0); + set => _playbackSpeed = value is null ? null : Math.Clamp(value.Value, 0.1f, 10.0f); } /// diff --git a/MediaBrowser.Model/Session/PlaybackProgressInfo.cs b/MediaBrowser.Model/Session/PlaybackProgressInfo.cs index d0caa4ab6b..6bfa60214b 100644 --- a/MediaBrowser.Model/Session/PlaybackProgressInfo.cs +++ b/MediaBrowser.Model/Session/PlaybackProgressInfo.cs @@ -11,7 +11,7 @@ namespace MediaBrowser.Model.Session /// public class PlaybackProgressInfo { - private double? _playbackSpeed = 1.0; + private float? _playbackSpeed = 1.0f; /// /// Gets or sets a value indicating whether this instance can seek. @@ -117,10 +117,10 @@ namespace MediaBrowser.Model.Session /// Gets or sets the playback speed. /// /// The playback speed. - public double? PlaybackSpeed + public float? PlaybackSpeed { get => _playbackSpeed; - set => _playbackSpeed = value is null ? null : Math.Clamp(value.Value, 0.1, 10.0); + set => _playbackSpeed = value is null ? null : Math.Clamp(value.Value, 0.1f, 10.0f); } } } diff --git a/MediaBrowser.Model/Session/PlayerStateInfo.cs b/MediaBrowser.Model/Session/PlayerStateInfo.cs index 80b78f70e6..eef5c28207 100644 --- a/MediaBrowser.Model/Session/PlayerStateInfo.cs +++ b/MediaBrowser.Model/Session/PlayerStateInfo.cs @@ -7,7 +7,7 @@ namespace MediaBrowser.Model.Session { public class PlayerStateInfo { - private double? _playbackSpeed = 1.0; + private float? _playbackSpeed = 1.0f; /// /// Gets or sets the now playing position ticks. @@ -79,10 +79,10 @@ namespace MediaBrowser.Model.Session /// Gets or sets the playback speed. /// /// The playback speed. - public double? PlaybackSpeed + public float? PlaybackSpeed { get => _playbackSpeed; - set => _playbackSpeed = value is null ? null : Math.Clamp(value.Value, 0.1, 10.0); + set => _playbackSpeed = value is null ? null : Math.Clamp(value.Value, 0.1f, 10.0f); } } } diff --git a/MediaBrowser.Model/SyncPlay/PlayQueueUpdate.cs b/MediaBrowser.Model/SyncPlay/PlayQueueUpdate.cs index c4740bd11a..856104a677 100644 --- a/MediaBrowser.Model/SyncPlay/PlayQueueUpdate.cs +++ b/MediaBrowser.Model/SyncPlay/PlayQueueUpdate.cs @@ -20,7 +20,7 @@ namespace MediaBrowser.Model.SyncPlay /// The shuffle mode. /// The repeat mode. /// The playback speed. - public PlayQueueUpdate(PlayQueueUpdateReason reason, DateTime lastUpdate, IReadOnlyList playlist, int playingItemIndex, long startPositionTicks, bool isPlaying, GroupShuffleMode shuffleMode, GroupRepeatMode repeatMode, double? playbackSpeed) + public PlayQueueUpdate(PlayQueueUpdateReason reason, DateTime lastUpdate, IReadOnlyList playlist, int playingItemIndex, long startPositionTicks, bool isPlaying, GroupShuffleMode shuffleMode, GroupRepeatMode repeatMode, float? playbackSpeed) { Reason = reason; LastUpdate = lastUpdate; @@ -30,7 +30,7 @@ namespace MediaBrowser.Model.SyncPlay IsPlaying = isPlaying; ShuffleMode = shuffleMode; RepeatMode = repeatMode; - PlaybackSpeed = playbackSpeed is null ? null : Math.Clamp(playbackSpeed.Value, 0.1, 10.0); + PlaybackSpeed = playbackSpeed is null ? null : Math.Clamp(playbackSpeed.Value, 0.1f, 10.0f); } /// @@ -85,6 +85,6 @@ namespace MediaBrowser.Model.SyncPlay /// Gets the PlaybackSpeed. /// /// The playback speed. - public double? PlaybackSpeed { get; } + public float? PlaybackSpeed { get; } } } From 0549b8698294e11845aae05eb49fd3924c29fc4d Mon Sep 17 00:00:00 2001 From: rzk3 Date: Mon, 27 Mar 2023 10:45:00 -0400 Subject: [PATCH 12/12] Round PlaybackSpeed to nearest tenth --- Emby.Server.Implementations/SyncPlay/Group.cs | 2 +- MediaBrowser.Model/Session/PlaybackProgressInfo.cs | 2 +- MediaBrowser.Model/Session/PlayerStateInfo.cs | 2 +- MediaBrowser.Model/SyncPlay/PlayQueueUpdate.cs | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Emby.Server.Implementations/SyncPlay/Group.cs b/Emby.Server.Implementations/SyncPlay/Group.cs index 25c83526c3..5c5a427ce1 100644 --- a/Emby.Server.Implementations/SyncPlay/Group.cs +++ b/Emby.Server.Implementations/SyncPlay/Group.cs @@ -149,7 +149,7 @@ namespace Emby.Server.Implementations.SyncPlay public float? PlaybackSpeed { get => _playbackSpeed; - set => _playbackSpeed = value is null ? null : Math.Clamp(value.Value, 0.1f, 10.0f); + set => _playbackSpeed = value is null ? null : (float?)Math.Round(Math.Clamp(value.Value, 0.1f, 10.0f), 1); } /// diff --git a/MediaBrowser.Model/Session/PlaybackProgressInfo.cs b/MediaBrowser.Model/Session/PlaybackProgressInfo.cs index 6bfa60214b..616d60251c 100644 --- a/MediaBrowser.Model/Session/PlaybackProgressInfo.cs +++ b/MediaBrowser.Model/Session/PlaybackProgressInfo.cs @@ -120,7 +120,7 @@ namespace MediaBrowser.Model.Session public float? PlaybackSpeed { get => _playbackSpeed; - set => _playbackSpeed = value is null ? null : Math.Clamp(value.Value, 0.1f, 10.0f); + set => _playbackSpeed = value is null ? null : (float?)Math.Round(Math.Clamp(value.Value, 0.1f, 10.0f), 1); } } } diff --git a/MediaBrowser.Model/Session/PlayerStateInfo.cs b/MediaBrowser.Model/Session/PlayerStateInfo.cs index eef5c28207..19ebba4e80 100644 --- a/MediaBrowser.Model/Session/PlayerStateInfo.cs +++ b/MediaBrowser.Model/Session/PlayerStateInfo.cs @@ -82,7 +82,7 @@ namespace MediaBrowser.Model.Session public float? PlaybackSpeed { get => _playbackSpeed; - set => _playbackSpeed = value is null ? null : Math.Clamp(value.Value, 0.1f, 10.0f); + set => _playbackSpeed = value is null ? null : (float?)Math.Round(Math.Clamp(value.Value, 0.1f, 10.0f), 1); } } } diff --git a/MediaBrowser.Model/SyncPlay/PlayQueueUpdate.cs b/MediaBrowser.Model/SyncPlay/PlayQueueUpdate.cs index 856104a677..b9f3a07879 100644 --- a/MediaBrowser.Model/SyncPlay/PlayQueueUpdate.cs +++ b/MediaBrowser.Model/SyncPlay/PlayQueueUpdate.cs @@ -30,7 +30,7 @@ namespace MediaBrowser.Model.SyncPlay IsPlaying = isPlaying; ShuffleMode = shuffleMode; RepeatMode = repeatMode; - PlaybackSpeed = playbackSpeed is null ? null : Math.Clamp(playbackSpeed.Value, 0.1f, 10.0f); + PlaybackSpeed = playbackSpeed is null ? null : (float?)Math.Round(Math.Clamp(playbackSpeed.Value, 0.1f, 10.0f), 1); } ///