aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Dlna/PlayTo/PlayToController.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Dlna/PlayTo/PlayToController.cs')
-rw-r--r--MediaBrowser.Dlna/PlayTo/PlayToController.cs76
1 files changed, 42 insertions, 34 deletions
diff --git a/MediaBrowser.Dlna/PlayTo/PlayToController.cs b/MediaBrowser.Dlna/PlayTo/PlayToController.cs
index bef3f6d0e8..1989c437aa 100644
--- a/MediaBrowser.Dlna/PlayTo/PlayToController.cs
+++ b/MediaBrowser.Dlna/PlayTo/PlayToController.cs
@@ -2,6 +2,7 @@
using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Localization;
using MediaBrowser.Controller.Persistence;
using MediaBrowser.Controller.Session;
using MediaBrowser.Dlna.Didl;
@@ -33,6 +34,7 @@ namespace MediaBrowser.Dlna.PlayTo
private readonly IUserManager _userManager;
private readonly IImageProcessor _imageProcessor;
private readonly IUserDataManager _userDataManager;
+ private readonly ILocalizationManager _localization;
private readonly DeviceDiscovery _deviceDiscovery;
private readonly string _serverAddress;
@@ -52,7 +54,7 @@ namespace MediaBrowser.Dlna.PlayTo
private Timer _updateTimer;
- public PlayToController(SessionInfo session, ISessionManager sessionManager, IItemRepository itemRepository, ILibraryManager libraryManager, ILogger logger, IDlnaManager dlnaManager, IUserManager userManager, IImageProcessor imageProcessor, string serverAddress, DeviceDiscovery deviceDiscovery, IUserDataManager userDataManager)
+ public PlayToController(SessionInfo session, ISessionManager sessionManager, IItemRepository itemRepository, ILibraryManager libraryManager, ILogger logger, IDlnaManager dlnaManager, IUserManager userManager, IImageProcessor imageProcessor, string serverAddress, DeviceDiscovery deviceDiscovery, IUserDataManager userDataManager, ILocalizationManager localization)
{
_session = session;
_itemRepository = itemRepository;
@@ -64,6 +66,7 @@ namespace MediaBrowser.Dlna.PlayTo
_serverAddress = serverAddress;
_deviceDiscovery = deviceDiscovery;
_userDataManager = userDataManager;
+ _localization = localization;
_logger = logger;
}
@@ -136,16 +139,21 @@ namespace MediaBrowser.Dlna.PlayTo
try
{
var streamInfo = StreamParams.ParseFromUrl(e.OldMediaInfo.Url, _libraryManager);
- var progress = GetProgressInfo(e.OldMediaInfo, streamInfo);
+ if (streamInfo.Item != null)
+ {
+ var progress = GetProgressInfo(e.OldMediaInfo, streamInfo);
- var positionTicks = progress.PositionTicks;
+ var positionTicks = progress.PositionTicks;
- ReportPlaybackStopped(e.OldMediaInfo, streamInfo, positionTicks);
+ ReportPlaybackStopped(e.OldMediaInfo, streamInfo, positionTicks);
+ }
streamInfo = StreamParams.ParseFromUrl(e.NewMediaInfo.Url, _libraryManager);
- progress = GetProgressInfo(e.NewMediaInfo, streamInfo);
+ if (streamInfo.Item == null) return;
+
+ var newItemProgress = GetProgressInfo(e.NewMediaInfo, streamInfo);
- await _sessionManager.OnPlaybackStart(progress).ConfigureAwait(false);
+ await _sessionManager.OnPlaybackStart(newItemProgress).ConfigureAwait(false);
}
catch (Exception ex)
{
@@ -158,6 +166,9 @@ namespace MediaBrowser.Dlna.PlayTo
try
{
var streamInfo = StreamParams.ParseFromUrl(e.MediaInfo.Url, _libraryManager);
+
+ if (streamInfo.Item == null) return;
+
var progress = GetProgressInfo(e.MediaInfo, streamInfo);
var positionTicks = progress.PositionTicks;
@@ -216,9 +227,14 @@ namespace MediaBrowser.Dlna.PlayTo
{
try
{
- var info = GetProgressInfo(e.MediaInfo);
+ var info = StreamParams.ParseFromUrl(e.MediaInfo.Url, _libraryManager);
+
+ if (info.Item != null)
+ {
+ var progress = GetProgressInfo(e.MediaInfo, info);
- await _sessionManager.OnPlaybackStart(info).ConfigureAwait(false);
+ await _sessionManager.OnPlaybackStart(progress).ConfigureAwait(false);
+ }
}
catch (Exception ex)
{
@@ -230,9 +246,14 @@ namespace MediaBrowser.Dlna.PlayTo
{
try
{
- var info = GetProgressInfo(e.MediaInfo);
+ var info = StreamParams.ParseFromUrl(e.MediaInfo.Url, _libraryManager);
+
+ if (info.Item != null)
+ {
+ var progress = GetProgressInfo(e.MediaInfo, info);
- await _sessionManager.OnPlaybackProgress(info).ConfigureAwait(false);
+ await _sessionManager.OnPlaybackProgress(progress).ConfigureAwait(false);
+ }
}
catch (Exception ex)
{
@@ -240,13 +261,6 @@ namespace MediaBrowser.Dlna.PlayTo
}
}
- private PlaybackStartInfo GetProgressInfo(uBaseObject mediaInfo)
- {
- var info = StreamParams.ParseFromUrl(mediaInfo.Url, _libraryManager);
-
- return GetProgressInfo(mediaInfo, info);
- }
-
private PlaybackStartInfo GetProgressInfo(uBaseObject mediaInfo, StreamParams info)
{
var ticks = _device.Position.Ticks;
@@ -438,19 +452,9 @@ namespace MediaBrowser.Dlna.PlayTo
private void AddItemFromId(Guid id, List<BaseItem> list)
{
var item = _libraryManager.GetItemById(id);
- if (item.IsFolder)
- {
- foreach (var childId in _itemRepository.GetChildren(item.Id))
- {
- AddItemFromId(childId, list);
- }
- }
- else
+ if (item.MediaType == MediaType.Audio || item.MediaType == MediaType.Video)
{
- if (item.MediaType == MediaType.Audio || item.MediaType == MediaType.Video)
- {
- list.Add(item);
- }
+ list.Add(item);
}
}
@@ -476,7 +480,8 @@ namespace MediaBrowser.Dlna.PlayTo
playlistItem.StreamUrl = playlistItem.StreamInfo.ToUrl(serverAddress);
- var itemXml = new DidlBuilder(profile, user, _imageProcessor, serverAddress, _userDataManager).GetItemDidl(item, _session.DeviceId, new Filter(), playlistItem.StreamInfo);
+ var itemXml = new DidlBuilder(profile, user, _imageProcessor, serverAddress, _userDataManager, _localization)
+ .GetItemDidl(item, null, _session.DeviceId, new Filter(), playlistItem.StreamInfo);
playlistItem.Didl = itemXml;
@@ -522,6 +527,7 @@ namespace MediaBrowser.Dlna.PlayTo
streamInfo.TargetPacketLength,
streamInfo.TranscodeSeekInfo,
streamInfo.IsTargetAnamorphic,
+ streamInfo.IsTargetCabac,
streamInfo.TargetRefFrames);
return list.FirstOrDefault();
@@ -732,10 +738,10 @@ namespace MediaBrowser.Dlna.PlayTo
if (media != null)
{
var info = StreamParams.ParseFromUrl(media.Url, _libraryManager);
- var progress = GetProgressInfo(media, info);
if (info.Item != null)
{
+ var progress = GetProgressInfo(media, info);
var newPosition = progress.PositionTicks ?? 0;
var user = _session.UserId.HasValue ? _userManager.GetUserById(_session.UserId.Value) : null;
@@ -758,10 +764,10 @@ namespace MediaBrowser.Dlna.PlayTo
if (media != null)
{
var info = StreamParams.ParseFromUrl(media.Url, _libraryManager);
- var progress = GetProgressInfo(media, info);
if (info.Item != null)
{
+ var progress = GetProgressInfo(media, info);
var newPosition = progress.PositionTicks ?? 0;
var user = _session.UserId.HasValue ? _userManager.GetUserById(_session.UserId.Value) : null;
@@ -825,7 +831,9 @@ namespace MediaBrowser.Dlna.PlayTo
ItemId = GetItemId(url)
};
- if (string.IsNullOrWhiteSpace(request.ItemId))
+ Guid parsedId;
+
+ if (string.IsNullOrWhiteSpace(request.ItemId) || !Guid.TryParse(request.ItemId, out parsedId))
{
return request;
}
@@ -878,7 +886,7 @@ namespace MediaBrowser.Dlna.PlayTo
request.Item = string.IsNullOrWhiteSpace(request.ItemId)
? null
- : libraryManager.GetItemById(new Guid(request.ItemId));
+ : libraryManager.GetItemById(parsedId);
var hasMediaSources = request.Item as IHasMediaSources;