1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- #pragma warning disable CS1591
- using System.IO;
- using System.Linq;
- using MediaBrowser.Controller.Entities;
- using MediaBrowser.Model.Dlna;
- using MediaBrowser.Model.Session;
- namespace Emby.Dlna.PlayTo
- {
- public class PlaylistItemFactory
- {
- public PlaylistItem Create(Photo item, DeviceProfile profile)
- {
- var playlistItem = new PlaylistItem
- {
- StreamInfo = new StreamInfo
- {
- ItemId = item.Id,
- 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;
- }
- private static bool IsSupported(DirectPlayProfile profile, Photo item)
- {
- var mediaPath = item.Path;
- if (profile.Container.Length > 0)
- {
- // Check container type
- var mediaContainer = (Path.GetExtension(mediaPath) ?? string.Empty).TrimStart('.');
- if (!profile.SupportsContainer(mediaContainer))
- {
- return false;
- }
- }
- return true;
- }
- }
- }
|