aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2015-03-29 18:38:32 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2015-03-29 18:38:32 -0400
commit5474215141d92c4012f387d6d9ebe9116ca74abc (patch)
treedec40a098880fe76b28b4a2d100a394442ea0ded
parent66ea0b256686b15f01a062cc5deaaf445905f4fb (diff)
sync updates
-rw-r--r--MediaBrowser.Api/Playback/MediaInfoService.cs12
-rw-r--r--MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs14
-rw-r--r--MediaBrowser.Server.Implementations/Sync/MediaSync.cs8
-rw-r--r--MediaBrowser.Server.Implementations/Sync/SyncManager.cs2
-rw-r--r--MediaBrowser.Server.Implementations/Sync/SyncedMediaSourceProvider.cs11
5 files changed, 34 insertions, 13 deletions
diff --git a/MediaBrowser.Api/Playback/MediaInfoService.cs b/MediaBrowser.Api/Playback/MediaInfoService.cs
index c6678d1ed..b833dd735 100644
--- a/MediaBrowser.Api/Playback/MediaInfoService.cs
+++ b/MediaBrowser.Api/Playback/MediaInfoService.cs
@@ -119,12 +119,16 @@ namespace MediaBrowser.Api.Playback
{
var item = _libraryManager.GetItemById(request.ItemId);
- SetDeviceSpecificData(item, result.MediaSource, profile, authInfo, request.MaxStreamingBitrate, request.StartTimeTicks ?? 0, result.MediaSource.Id, request.AudioStreamIndex, request.SubtitleStreamIndex);
+ SetDeviceSpecificData(item, result.MediaSource, profile, authInfo, request.MaxStreamingBitrate,
+ request.StartTimeTicks ?? 0, result.MediaSource.Id, request.AudioStreamIndex,
+ request.SubtitleStreamIndex);
}
-
- if (!string.IsNullOrWhiteSpace(result.MediaSource.TranscodingUrl))
+ else
{
- result.MediaSource.TranscodingUrl += "&LiveStreamId=" + result.MediaSource.LiveStreamId;
+ if (!string.IsNullOrWhiteSpace(result.MediaSource.TranscodingUrl))
+ {
+ result.MediaSource.TranscodingUrl += "&LiveStreamId=" + result.MediaSource.LiveStreamId;
+ }
}
return ToOptimizedResult(result);
diff --git a/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs b/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs
index 64b1f2c89..e832142a9 100644
--- a/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs
@@ -316,7 +316,7 @@ namespace MediaBrowser.Server.Implementations.Library
return GetStaticMediaSources(item, enablePathSubstitution).FirstOrDefault(i => string.Equals(i.Id, mediaSourceId, StringComparison.OrdinalIgnoreCase));
}
- private readonly ConcurrentDictionary<string, LiveStreamInfo> _openStreams = new ConcurrentDictionary<string, LiveStreamInfo>();
+ private readonly ConcurrentDictionary<string, LiveStreamInfo> _openStreams = new ConcurrentDictionary<string, LiveStreamInfo>(StringComparer.OrdinalIgnoreCase);
private readonly SemaphoreSlim _liveStreamSemaphore = new SemaphoreSlim(1, 1);
public async Task<LiveStreamResponse> OpenLiveStream(LiveStreamRequest request, bool enableAutoClose, CancellationToken cancellationToken)
@@ -330,6 +330,11 @@ namespace MediaBrowser.Server.Implementations.Library
var mediaSource = await provider.OpenMediaSource(tuple.Item2, cancellationToken).ConfigureAwait(false);
+ if (string.IsNullOrWhiteSpace(mediaSource.LiveStreamId))
+ {
+ throw new InvalidOperationException(string.Format("{0} returned null LiveStreamId", provider.GetType().Name));
+ }
+
SetKeyProperties(provider, mediaSource);
var info = new LiveStreamInfo
@@ -368,6 +373,13 @@ namespace MediaBrowser.Server.Implementations.Library
public async Task<MediaSourceInfo> GetLiveStream(string id, CancellationToken cancellationToken)
{
+ if (string.IsNullOrWhiteSpace(id))
+ {
+ throw new ArgumentNullException("id");
+ }
+
+ _logger.Debug("Getting live stream {0}", id);
+
await _liveStreamSemaphore.WaitAsync(cancellationToken).ConfigureAwait(false);
try
diff --git a/MediaBrowser.Server.Implementations/Sync/MediaSync.cs b/MediaBrowser.Server.Implementations/Sync/MediaSync.cs
index dd8ce82ef..620143f17 100644
--- a/MediaBrowser.Server.Implementations/Sync/MediaSync.cs
+++ b/MediaBrowser.Server.Implementations/Sync/MediaSync.cs
@@ -371,7 +371,7 @@ namespace MediaBrowser.Server.Implementations.Sync
if (item.IsType("episode"))
{
- parts.Add("TV");
+ //parts.Add("TV");
if (!string.IsNullOrWhiteSpace(item.SeriesName))
{
parts.Add(item.SeriesName);
@@ -379,12 +379,12 @@ namespace MediaBrowser.Server.Implementations.Sync
}
else if (item.IsVideo)
{
- parts.Add("Videos");
+ //parts.Add("Videos");
parts.Add(item.Name);
}
else if (item.IsAudio)
{
- parts.Add("Music");
+ //parts.Add("Music");
if (!string.IsNullOrWhiteSpace(item.AlbumArtist))
{
@@ -398,7 +398,7 @@ namespace MediaBrowser.Server.Implementations.Sync
}
else if (string.Equals(item.MediaType, MediaType.Photo, StringComparison.OrdinalIgnoreCase))
{
- parts.Add("Photos");
+ //parts.Add("Photos");
if (!string.IsNullOrWhiteSpace(item.Album))
{
diff --git a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs
index 2cf6c6853..d1ebbd28e 100644
--- a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs
+++ b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs
@@ -721,7 +721,7 @@ namespace MediaBrowser.Server.Implementations.Sync
var jobItemResult = GetJobItems(new SyncJobItemQuery
{
TargetId = targetId,
- Statuses = new SyncJobItemStatus[]
+ Statuses = new[]
{
SyncJobItemStatus.ReadyToTransfer
}
diff --git a/MediaBrowser.Server.Implementations/Sync/SyncedMediaSourceProvider.cs b/MediaBrowser.Server.Implementations/Sync/SyncedMediaSourceProvider.cs
index 1c17b9993..d1ef523e1 100644
--- a/MediaBrowser.Server.Implementations/Sync/SyncedMediaSourceProvider.cs
+++ b/MediaBrowser.Server.Implementations/Sync/SyncedMediaSourceProvider.cs
@@ -92,6 +92,8 @@ namespace MediaBrowser.Server.Implementations.Sync
keyList.Add(item.Id);
mediaSource.OpenToken = string.Join("|", keyList.ToArray());
}
+
+ list.Add(mediaSource);
}
public async Task<MediaSourceInfo> OpenMediaSource(string openToken, CancellationToken cancellationToken)
@@ -111,13 +113,16 @@ namespace MediaBrowser.Server.Implementations.Sync
var dynamicInfo = await requiresDynamicAccess.GetSyncedFileInfo(localItem.LocalPath, target, cancellationToken).ConfigureAwait(false);
var mediaSource = localItem.Item.MediaSources.First();
+ mediaSource.LiveStreamId = Guid.NewGuid().ToString();
SetStaticMediaSourceInfo(localItem, mediaSource);
foreach (var stream in mediaSource.MediaStreams)
{
- var dynamicStreamInfo = await requiresDynamicAccess.GetSyncedFileInfo(stream.ExternalId, target, cancellationToken).ConfigureAwait(false);
-
- stream.Path = dynamicStreamInfo.Path;
+ if (!string.IsNullOrWhiteSpace(stream.ExternalId))
+ {
+ var dynamicStreamInfo = await requiresDynamicAccess.GetSyncedFileInfo(stream.ExternalId, target, cancellationToken).ConfigureAwait(false);
+ stream.Path = dynamicStreamInfo.Path;
+ }
}
mediaSource.Path = dynamicInfo.Path;