Browse Source

Merge pull request #4824 from crobibero/livestream-post-body

Add request parameters to OpenLiveStreamDto

(cherry picked from commit 53119ed2a11d7c0913795bb41218504a9c6c6f20)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
Claus Vium 4 years ago
parent
commit
ce741f541c

+ 14 - 14
Jellyfin.Api/Controllers/MediaInfoController.cs

@@ -259,24 +259,24 @@ namespace Jellyfin.Api.Controllers
             [FromQuery] int? subtitleStreamIndex,
             [FromQuery] int? maxAudioChannels,
             [FromQuery] Guid? itemId,
-            [FromBody] OpenLiveStreamDto openLiveStreamDto,
-            [FromQuery] bool enableDirectPlay = true,
-            [FromQuery] bool enableDirectStream = true)
+            [FromBody] OpenLiveStreamDto? openLiveStreamDto,
+            [FromQuery] bool? enableDirectPlay,
+            [FromQuery] bool? enableDirectStream)
         {
             var request = new LiveStreamRequest
             {
-                OpenToken = openToken,
-                UserId = userId ?? Guid.Empty,
-                PlaySessionId = playSessionId,
-                MaxStreamingBitrate = maxStreamingBitrate,
-                StartTimeTicks = startTimeTicks,
-                AudioStreamIndex = audioStreamIndex,
-                SubtitleStreamIndex = subtitleStreamIndex,
-                MaxAudioChannels = maxAudioChannels,
-                ItemId = itemId ?? Guid.Empty,
+                OpenToken = openToken ?? openLiveStreamDto?.OpenToken,
+                UserId = userId ?? openLiveStreamDto?.UserId ?? Guid.Empty,
+                PlaySessionId = playSessionId ?? openLiveStreamDto?.PlaySessionId,
+                MaxStreamingBitrate = maxStreamingBitrate ?? openLiveStreamDto?.MaxStreamingBitrate,
+                StartTimeTicks = startTimeTicks ?? openLiveStreamDto?.StartTimeTicks,
+                AudioStreamIndex = audioStreamIndex ?? openLiveStreamDto?.AudioStreamIndex,
+                SubtitleStreamIndex = subtitleStreamIndex ?? openLiveStreamDto?.SubtitleStreamIndex,
+                MaxAudioChannels = maxAudioChannels ?? openLiveStreamDto?.MaxAudioChannels,
+                ItemId = itemId ?? openLiveStreamDto?.ItemId ?? Guid.Empty,
                 DeviceProfile = openLiveStreamDto?.DeviceProfile,
-                EnableDirectPlay = enableDirectPlay,
-                EnableDirectStream = enableDirectStream,
+                EnableDirectPlay = enableDirectPlay ?? openLiveStreamDto?.EnableDirectPlay ?? true,
+                EnableDirectStream = enableDirectStream ?? openLiveStreamDto?.EnableDirectStream ?? true,
                 DirectPlayProtocols = openLiveStreamDto?.DirectPlayProtocols ?? new[] { MediaProtocol.Http }
             };
             return await _mediaInfoHelper.OpenMediaSource(Request, request).ConfigureAwait(false);

+ 55 - 0
Jellyfin.Api/Models/MediaInfoDtos/OpenLiveStreamDto.cs

@@ -10,6 +10,61 @@ namespace Jellyfin.Api.Models.MediaInfoDtos
     /// </summary>
     public class OpenLiveStreamDto
     {
+        /// <summary>
+        /// Gets or sets the open token.
+        /// </summary>
+        public string? OpenToken { get; set; }
+
+        /// <summary>
+        /// Gets or sets the user id.
+        /// </summary>
+        public Guid? UserId { get; set; }
+
+        /// <summary>
+        /// Gets or sets the play session id.
+        /// </summary>
+        public string? PlaySessionId { get; set; }
+
+        /// <summary>
+        /// Gets or sets the max streaming bitrate.
+        /// </summary>
+        public int? MaxStreamingBitrate { get; set; }
+
+        /// <summary>
+        /// Gets or sets the start time in ticks.
+        /// </summary>
+        public long? StartTimeTicks { get; set; }
+
+        /// <summary>
+        /// Gets or sets the audio stream index.
+        /// </summary>
+        public int? AudioStreamIndex { get; set; }
+
+        /// <summary>
+        /// Gets or sets the subtitle stream index.
+        /// </summary>
+        public int? SubtitleStreamIndex { get; set; }
+
+        /// <summary>
+        /// Gets or sets the max audio channels.
+        /// </summary>
+        public int? MaxAudioChannels { get; set; }
+
+        /// <summary>
+        /// Gets or sets the item id.
+        /// </summary>
+        public Guid? ItemId { get; set; }
+
+        /// <summary>
+        /// Gets or sets a value indicating whether to enable direct play.
+        /// </summary>
+        public bool? EnableDirectPlay { get; set; }
+
+        /// <summary>
+        /// Gets or sets a value indicating whether to enale direct stream.
+        /// </summary>
+        public bool? EnableDirectStream { get; set; }
+
         /// <summary>
         /// Gets or sets the device profile.
         /// </summary>