فهرست منبع

Merge pull request #2473 from MediaBrowser/dev

Dev
Luke 8 سال پیش
والد
کامیت
e8714c2279

+ 0 - 1
Emby.Server.Core/Emby.Server.Core.xproj

@@ -16,7 +16,6 @@
     <SchemaVersion>2.0</SchemaVersion>
   </PropertyGroup>
   <ItemGroup>
-    <ProjectReference Include="..\ServiceStack\ServiceStack.csproj" />
     <ProjectReference Include="..\Emby.Drawing\Emby.Drawing.csproj" />
     <ProjectReference Include="..\Emby.Photos\Emby.Photos.csproj" />
     <ProjectReference Include="..\MediaBrowser.Api\MediaBrowser.Api.csproj" />

+ 0 - 6
Emby.Server.Core/project.json

@@ -56,9 +56,6 @@
         "Emby.Drawing": {
           "target": "project"
         },
-        "ServiceStack": {
-          "target": "project"
-        },
         "SocketHttpListener.Portable": {
           "target": "project"
         }
@@ -121,9 +118,6 @@
         },
         "SocketHttpListener.Portable": {
           "target": "project"
-        },
-        "ServiceStack": {
-          "target": "project"
         }
       }
     }

+ 0 - 2
Emby.Server.Implementations/HttpServer/HttpListenerHost.cs

@@ -767,8 +767,6 @@ namespace Emby.Server.Implementations.HttpServer
         {
             if (_disposed) return;
 
-            Dispose();
-
             lock (_disposeLock)
             {
                 if (_disposed) return;

+ 1 - 6
Emby.Server.Implementations/LiveTv/LiveTvManager.cs

@@ -1477,12 +1477,7 @@ namespace Emby.Server.Implementations.LiveTv
         private DateTime _lastRecordingRefreshTime;
         private async Task RefreshRecordings(CancellationToken cancellationToken)
         {
-            const int cacheMinutes = 3;
-
-            if ((DateTime.UtcNow - _lastRecordingRefreshTime).TotalMinutes < cacheMinutes)
-            {
-                return;
-            }
+            const int cacheMinutes = 2;
 
             await _refreshRecordingsLock.WaitAsync(cancellationToken).ConfigureAwait(false);
 

+ 4 - 0
Emby.Server.Implementations/ServerManager/ServerManager.cs

@@ -303,6 +303,7 @@ namespace Emby.Server.Implementations.ServerManager
         /// </summary>
         private void DisposeHttpServer()
         {
+            _logger.Info("Disposing web socket connections");
             foreach (var socket in _webSocketConnections)
             {
                 // Dispose the connection
@@ -314,6 +315,9 @@ namespace Emby.Server.Implementations.ServerManager
             if (HttpServer != null)
             {
                 HttpServer.WebSocketConnected -= HttpServer_WebSocketConnected;
+
+                _logger.Info("Disposing http server");
+
                 HttpServer.Dispose();
             }
         }

+ 19 - 26
MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs

@@ -19,6 +19,7 @@ using System.Threading;
 using System.Threading.Tasks;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.Diagnostics;
+using MediaBrowser.Model.Dto;
 using MediaBrowser.Model.Text;
 using UniversalDetector;
 
@@ -137,18 +138,29 @@ namespace MediaBrowser.MediaEncoding.Subtitles
                 throw new ArgumentNullException("mediaSourceId");
             }
 
-            var subtitle = await GetSubtitleStream(itemId, mediaSourceId, subtitleStreamIndex, cancellationToken)
+            var mediaSources = await _mediaSourceManager.GetPlayackMediaSources(itemId, null, false, new[] { MediaType.Audio, MediaType.Video }, cancellationToken).ConfigureAwait(false);
+
+            var mediaSource = mediaSources
+                .First(i => string.Equals(i.Id, mediaSourceId, StringComparison.OrdinalIgnoreCase));
+
+            var subtitleStream = mediaSource.MediaStreams
+               .First(i => i.Type == MediaStreamType.Subtitle && i.Index == subtitleStreamIndex);
+
+            var subtitle = await GetSubtitleStream(mediaSource, subtitleStream, cancellationToken)
                         .ConfigureAwait(false);
 
             var inputFormat = subtitle.Item2;
             var writer = TryGetWriter(outputFormat);
 
-            if (string.Equals(inputFormat, outputFormat, StringComparison.OrdinalIgnoreCase) && writer == null)
+            // Return the original if we don't have any way of converting it
+            if (writer == null)
             {
                 return subtitle.Item1;
             }
 
-            if (writer == null)
+            // Return the original if the same format is being requested
+            // Character encoding was already handled in GetSubtitleStream
+            if (string.Equals(inputFormat, outputFormat, StringComparison.OrdinalIgnoreCase))
             {
                 return subtitle.Item1;
             }
@@ -159,36 +171,17 @@ namespace MediaBrowser.MediaEncoding.Subtitles
             }
         }
 
-        private async Task<Tuple<Stream, string>> GetSubtitleStream(string itemId,
-            string mediaSourceId,
-            int subtitleStreamIndex,
+        private async Task<Tuple<Stream, string>> GetSubtitleStream(MediaSourceInfo mediaSource,
+            MediaStream subtitleStream,
             CancellationToken cancellationToken)
         {
-            if (string.IsNullOrWhiteSpace(itemId))
-            {
-                throw new ArgumentNullException("itemId");
-            }
-            if (string.IsNullOrWhiteSpace(mediaSourceId))
-            {
-                throw new ArgumentNullException("mediaSourceId");
-            }
-
-            var mediaSources = await _mediaSourceManager.GetPlayackMediaSources(itemId, null, false, new[] { MediaType.Audio, MediaType.Video }, cancellationToken).ConfigureAwait(false);
-
-            var mediaSource = mediaSources
-                .First(i => string.Equals(i.Id, mediaSourceId, StringComparison.OrdinalIgnoreCase));
-
-            var subtitleStream = mediaSource.MediaStreams
-                .First(i => i.Type == MediaStreamType.Subtitle && i.Index == subtitleStreamIndex);
-
             var inputFiles = new[] { mediaSource.Path };
 
             if (mediaSource.VideoType.HasValue)
             {
-                if (mediaSource.VideoType.Value == VideoType.BluRay ||
-                    mediaSource.VideoType.Value == VideoType.Dvd)
+                if (mediaSource.VideoType.Value == VideoType.BluRay || mediaSource.VideoType.Value == VideoType.Dvd)
                 {
-                    var mediaSourceItem = (Video)_libraryManager.GetItemById(new Guid(mediaSourceId));
+                    var mediaSourceItem = (Video)_libraryManager.GetItemById(new Guid(mediaSource.Id));
                     inputFiles = mediaSourceItem.GetPlayableStreamFiles().ToArray();
                 }
             }

+ 1 - 0
MediaBrowser.ServerApplication/MainStartup.cs

@@ -676,6 +676,7 @@ namespace MediaBrowser.ServerApplication
 
                 _appHostDisposed = true;
                 _appHost.Dispose();
+                _logger.Info("App host dispose complete");
             }
         }