using MediaBrowser.Model.Dlna; using System.Xml.Serialization; namespace Emby.Dlna.Profiles { [XmlRoot("Profile")] public class DishHopperJoeyProfile : DefaultProfile { public DishHopperJoeyProfile() { Name = "Dish Hopper-Joey"; ProtocolInfo = "http-get:*:video/mp2t:*,http-get:*:video/MP1S:*,http-get:*:video/mpeg2:*,http-get:*:video/mp4:*,http-get:*:video/x-matroska:*,http-get:*:audio/mpeg:*,http-get:*:audio/mpeg3:*,http-get:*:audio/mp3:*,http-get:*:audio/mp4:*,http-get:*:audio/mp4a-latm:*,http-get:*:image/jpeg:*"; Identification = new DeviceIdentification { Manufacturer = "Echostar Technologies LLC", ManufacturerUrl = "http://www.echostar.com", Headers = new[] { new HttpHeaderInfo { Match = HeaderMatchType.Substring, Name = "User-Agent", Value ="XiP" } } }; TranscodingProfiles = new[] { new TranscodingProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new TranscodingProfile { Container = "mp4", Type = DlnaProfileType.Video, AudioCodec = "aac", VideoCodec = "h264" }, new TranscodingProfile { Container = "jpeg", Type = DlnaProfileType.Photo } }; DirectPlayProfiles = new[] { new DirectPlayProfile { Container = "mp4,mkv,mpeg,ts", VideoCodec = "h264,mpeg2video", AudioCodec = "mp3,ac3,aac,he-aac,pcm", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "alac", AudioCodec = "alac", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "flac", AudioCodec = "flac", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "jpeg", Type = DlnaProfileType.Photo } }; CodecProfiles = new[] { new CodecProfile { Type = CodecType.Video, Codec = "h264", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920", IsRequired = true }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080", IsRequired = true }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoFramerate, Value = "30", IsRequired = true }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitrate, Value = "20000000", IsRequired = true }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoLevel, Value = "41", IsRequired = true } } }, new CodecProfile { Type = CodecType.Video, Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920", IsRequired = true }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080", IsRequired = true }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoFramerate, Value = "30", IsRequired = true }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitrate, Value = "20000000", IsRequired = true } } }, new CodecProfile { Type = CodecType.VideoAudio, Codec = "ac3,he-aac", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.AudioChannels, Value = "6", IsRequired = true } } }, new CodecProfile { Type = CodecType.VideoAudio, Codec = "aac", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.AudioChannels, Value = "2", IsRequired = true } } }, new CodecProfile { Type = CodecType.VideoAudio, Conditions = new [] { // The device does not have any audio switching capabilities new ProfileCondition { Condition = ProfileConditionType.Equals, Property = ProfileConditionValue.IsSecondaryAudio, Value = "false" } } } }; ResponseProfiles = new[] { new ResponseProfile { Container = "mkv,ts", Type = DlnaProfileType.Video, MimeType = "video/mp4" } }; } } }