Browse Source

Merge pull request #2403 from MediaBrowser/dev

Dev
Luke 8 years ago
parent
commit
5b32d2cd64

+ 6 - 2
Emby.Dlna/Profiles/SharpSmartTvProfile.cs

@@ -10,6 +10,9 @@ namespace Emby.Dlna.Profiles
         {
             Name = "Sharp Smart TV";
 
+            RequiresPlainFolders = true;
+            RequiresPlainVideoItems = true;
+
             Identification = new DeviceIdentification
             {
                 Manufacturer = "Sharp",
@@ -36,10 +39,11 @@ namespace Emby.Dlna.Profiles
 
                 new TranscodingProfile
                 {
-                    Container = "mkv",
+                    Container = "ts",
                     Type = DlnaProfileType.Video,
                     AudioCodec = "ac3,aac,mp3,dts,dca",
-                    VideoCodec = "h264"
+                    VideoCodec = "h264",
+                    EnableMpegtsM2TsMode = true
                 },
 
                 new TranscodingProfile

File diff suppressed because it is too large
+ 0 - 0
Emby.Dlna/Profiles/Xml/Sharp Smart TV.xml


+ 4 - 0
Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs

@@ -127,6 +127,10 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
                 {
                     protocol = MediaProtocol.Udp;
                 }
+                else if (path.StartsWith("rtp", StringComparison.OrdinalIgnoreCase))
+                {
+                    protocol = MediaProtocol.Rtmp;
+                }
 
                 var mediaSource = new MediaSourceInfo
                 {

+ 26 - 6
Emby.Server.Implementations/Sync/TargetDataProvider.cs

@@ -19,6 +19,7 @@ namespace Emby.Server.Implementations.Sync
         private readonly IServerSyncProvider _provider;
 
         private readonly SemaphoreSlim _dataLock = new SemaphoreSlim(1, 1);
+        private readonly SemaphoreSlim _remoteDataLock = new SemaphoreSlim(1, 1);
         private List<LocalItem> _items;
 
         private readonly ILogger _logger;
@@ -63,15 +64,24 @@ namespace Emby.Server.Implementations.Sync
         {
             _logger.Debug("Getting {0} from {1}", string.Join(MediaSync.PathSeparatorString, GetRemotePath().ToArray()), _provider.Name);
 
-            var fileResult = await _provider.GetFiles(GetRemotePath().ToArray(), _target, cancellationToken).ConfigureAwait(false);
+            await _remoteDataLock.WaitAsync(cancellationToken).ConfigureAwait(false);
 
-            if (fileResult.Items.Length > 0)
+            try
             {
-                using (var stream = await _provider.GetFile(fileResult.Items[0].FullName, _target, new Progress<double>(), cancellationToken))
+                var fileResult = await _provider.GetFiles(GetRemotePath().ToArray(), _target, cancellationToken).ConfigureAwait(false);
+
+                if (fileResult.Items.Length > 0)
                 {
-                    return _json.DeserializeFromStream<List<LocalItem>>(stream);
+                    using (var stream = await _provider.GetFile(fileResult.Items[0].FullName, _target, new Progress<double>(), cancellationToken))
+                    {
+                        return _json.DeserializeFromStream<List<LocalItem>>(stream);
+                    }
                 }
             }
+            finally
+            {
+                _remoteDataLock.Release();
+            }
 
             return new List<LocalItem>();
         }
@@ -93,9 +103,19 @@ namespace Emby.Server.Implementations.Sync
                 // Save to sync provider
                 stream.Position = 0;
                 var remotePath = GetRemotePath();
-                _logger.Debug("Saving data.json to {0}. Remote path: {1}", _provider.Name, string.Join("/", remotePath));
 
-                await _provider.SendFile(stream, remotePath, _target, new Progress<double>(), cancellationToken).ConfigureAwait(false);
+                await _remoteDataLock.WaitAsync(cancellationToken).ConfigureAwait(false);
+
+                try
+                {
+                    _logger.Debug("Saving data.json to {0}. Remote path: {1}", _provider.Name, string.Join("/", remotePath));
+
+                    await _provider.SendFile(stream, remotePath, _target, new Progress<double>(), cancellationToken).ConfigureAwait(false);
+                }
+                finally
+                {
+                    _remoteDataLock.Release();
+                }
             }
         }
 

+ 1 - 19
MediaBrowser.MediaEncoding/Encoder/EncodingUtils.cs

@@ -8,25 +8,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
     {
         public static string GetInputArgument(List<string> inputFiles, MediaProtocol protocol)
         {
-            if (protocol == MediaProtocol.Http)
-            {
-                var url = inputFiles.First();
-
-                return string.Format("\"{0}\"", url);
-            }
-            if (protocol == MediaProtocol.Rtmp)
-            {
-                var url = inputFiles.First();
-
-                return string.Format("\"{0}\"", url);
-            }
-            if (protocol == MediaProtocol.Rtsp)
-            {
-                var url = inputFiles.First();
-
-                return string.Format("\"{0}\"", url);
-            }
-            if (protocol == MediaProtocol.Udp)
+            if (protocol != MediaProtocol.File)
             {
                 var url = inputFiles.First();
 

+ 2 - 1
MediaBrowser.Model/MediaInfo/MediaProtocol.cs

@@ -6,6 +6,7 @@ namespace MediaBrowser.Model.MediaInfo
         Http = 1,
         Rtmp = 2,
         Rtsp = 3,
-        Udp = 4
+        Udp = 4,
+        Rtp = 5
     }
 }

Some files were not shown because too many files changed in this diff