2020-01-22 20:00:07 +00:00
|
|
|
#pragma warning disable CS1591
|
|
|
|
|
2016-10-29 22:22:20 +00:00
|
|
|
using System.IO;
|
|
|
|
using System.Linq;
|
2019-01-13 19:16:19 +00:00
|
|
|
using MediaBrowser.Controller.Entities;
|
|
|
|
using MediaBrowser.Model.Dlna;
|
|
|
|
using MediaBrowser.Model.Session;
|
2016-10-29 22:22:20 +00:00
|
|
|
|
2016-10-29 22:34:54 +00:00
|
|
|
namespace Emby.Dlna.PlayTo
|
2016-10-29 22:22:20 +00:00
|
|
|
{
|
2020-12-02 14:38:52 +00:00
|
|
|
public static class PlaylistItemFactory
|
2016-10-29 22:22:20 +00:00
|
|
|
{
|
2020-12-02 14:38:52 +00:00
|
|
|
public static PlaylistItem Create(Photo item, DeviceProfile profile)
|
2016-10-29 22:22:20 +00:00
|
|
|
{
|
|
|
|
var playlistItem = new PlaylistItem
|
|
|
|
{
|
|
|
|
StreamInfo = new StreamInfo
|
|
|
|
{
|
2018-09-12 17:26:21 +00:00
|
|
|
ItemId = item.Id,
|
2016-10-29 22:22:20 +00:00
|
|
|
MediaType = DlnaProfileType.Photo,
|
|
|
|
DeviceProfile = profile
|
|
|
|
},
|
|
|
|
|
|
|
|
Profile = profile
|
|
|
|
};
|
|
|
|
|
|
|
|
var directPlay = profile.DirectPlayProfiles
|
|
|
|
.FirstOrDefault(i => i.Type == DlnaProfileType.Photo && IsSupported(i, item));
|
|
|
|
|
|
|
|
if (directPlay != null)
|
|
|
|
{
|
|
|
|
playlistItem.StreamInfo.PlayMethod = PlayMethod.DirectStream;
|
|
|
|
playlistItem.StreamInfo.Container = Path.GetExtension(item.Path);
|
|
|
|
|
|
|
|
return playlistItem;
|
|
|
|
}
|
|
|
|
|
|
|
|
var transcodingProfile = profile.TranscodingProfiles
|
|
|
|
.FirstOrDefault(i => i.Type == DlnaProfileType.Photo);
|
|
|
|
|
|
|
|
if (transcodingProfile != null)
|
|
|
|
{
|
|
|
|
playlistItem.StreamInfo.PlayMethod = PlayMethod.Transcode;
|
|
|
|
playlistItem.StreamInfo.Container = "." + transcodingProfile.Container.TrimStart('.');
|
|
|
|
}
|
|
|
|
|
|
|
|
return playlistItem;
|
|
|
|
}
|
|
|
|
|
2019-01-06 20:50:43 +00:00
|
|
|
private static bool IsSupported(DirectPlayProfile profile, Photo item)
|
2016-10-29 22:22:20 +00:00
|
|
|
{
|
|
|
|
var mediaPath = item.Path;
|
|
|
|
|
|
|
|
if (profile.Container.Length > 0)
|
|
|
|
{
|
|
|
|
// Check container type
|
2017-07-14 15:57:44 +00:00
|
|
|
var mediaContainer = (Path.GetExtension(mediaPath) ?? string.Empty).TrimStart('.');
|
|
|
|
|
|
|
|
if (!profile.SupportsContainer(mediaContainer))
|
2016-10-29 22:22:20 +00:00
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|