public LinksysDMA2100Profile() { // Linksys DMA2100us does not need any transcoding of the formats we support statically Name = "Linksys DMA2100"; Identification = new DeviceIdentification { ModelName = "DMA2100us" }; DirectPlayProfiles = new[] { new DirectPlayProfile { Container = "mp3,flac,m4a,wma", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "avi,mp4,mkv,ts", Type = DlnaProfileType.Video } }; }
public XboxOneProfile() { Name = "Xbox One"; Identification = new DeviceIdentification { ModelName = "Xbox One", FriendlyName = "Xbox-SystemOS" }; TranscodingProfiles = new[] { new TranscodingProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new TranscodingProfile { Container = "ts", VideoCodec = "h264", AudioCodec = "aac", Type = DlnaProfileType.Video } }; DirectPlayProfiles = new[] { new DirectPlayProfile { Container = "mp3,wma", Type = DlnaProfileType.Audio } }; ResponseProfiles = new[] { new ResponseProfile { Container = "avi", MimeType = "video/x-msvideo", Type = DlnaProfileType.Video } }; }
public DenonAvrProfile() { Name = "Denon AVR"; Identification = new DeviceIdentification { FriendlyName = @"Denon:\[AVR:.*", Manufacturer = "Denon" }; DirectPlayProfiles = new[] { new DirectPlayProfile { Container = "mp3,flac,m4a,wma", Type = DlnaProfileType.Audio }, }; }
public Foobar2000Profile() { Name = "foobar2000"; SupportedMediaTypes = "Audio"; Identification = new DeviceIdentification { FriendlyName = @"foobar", Headers = new[] { new HttpHeaderInfo { Name = "User-Agent", Value = "foobar", Match = HeaderMatchType.Substring } } }; }
public DeviceProfile GetProfile(DeviceIdentification deviceInfo) { if (deviceInfo == null) { throw new ArgumentNullException("deviceInfo"); } var profile = GetProfiles() .FirstOrDefault(i => i.Identification != null && IsMatch(deviceInfo, i.Identification)); if (profile != null) { _logger.Debug("Found matching device profile: {0}", profile.Name); } else { _logger.Debug("No matching device profile found. The default will need to be used."); LogUnmatchedProfile(deviceInfo); } return profile; }
public Xbox360Profile() { Name = "Xbox 360"; ModelName = "Windows Media Player Sharing"; ModelNumber = "12.0"; ModelUrl = "http://www.microsoft.com/"; Manufacturer = "Microsoft Corporation"; ManufacturerUrl = "http://www.microsoft.com/"; XDlnaDoc = "DMS-1.50"; TimelineOffsetSeconds = 40; RequiresPlainFolders = true; RequiresPlainVideoItems = true; Identification = new DeviceIdentification { ModelName = "Xbox 360", Headers = new[] { new HttpHeaderInfo {Name = "User-Agent", Value = "Xbox", Match = HeaderMatchType.Substring}, new HttpHeaderInfo {Name = "User-Agent", Value = "Xenon", Match = HeaderMatchType.Substring} } }; TranscodingProfiles = new[] { new TranscodingProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new TranscodingProfile { Container = "asf", VideoCodec = "wmv2", AudioCodec = "wmav2", Type = DlnaProfileType.Video, TranscodeSeekInfo = TranscodeSeekInfo.Bytes, EstimateContentLength = true }, new TranscodingProfile { Container = "jpeg", Type = DlnaProfileType.Photo } }; DirectPlayProfiles = new[] { new DirectPlayProfile { Container = "avi", VideoCodec = "mpeg4", AudioCodec = "ac3,mp3", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "avi", VideoCodec = "h264", AudioCodec = "aac", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mp4,mov", VideoCodec = "h264,mpeg4", AudioCodec = "aac,ac3", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "asf", VideoCodec = "wmv2,wmv3,vc1", AudioCodec = "wmav2,wmapro", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "asf", AudioCodec = "wmav2,wmapro,wmavoice", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "jpeg", Type = DlnaProfileType.Photo } }; ResponseProfiles = new[] { new ResponseProfile { Container = "avi", MimeType = "video/avi", Type = DlnaProfileType.Video } }; ContainerProfiles = new[] { new ContainerProfile { Type = DlnaProfileType.Video, Container = "mp4,mov", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.Equals, Property = ProfileConditionValue.Has64BitOffsets, Value = "false", IsRequired = false } } }, new ContainerProfile { Type = DlnaProfileType.Photo, Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" } } } }; CodecProfiles = new[] { new CodecProfile { Type = CodecType.Video, Codec = "mpeg4", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1280" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "720" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoFramerate, Value = "30", IsRequired = false }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitrate, Value = "5120000", IsRequired = false } } }, new CodecProfile { Type = CodecType.Video, Codec = "h264", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoLevel, Value = "41", IsRequired = false }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitrate, Value = "10240000", IsRequired = false } } }, new CodecProfile { Type = CodecType.Video, Codec = "wmv2,wmv3,vc1", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoFramerate, Value = "30", IsRequired = false }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitrate, Value = "15360000", IsRequired = false } } }, new CodecProfile { Type = CodecType.VideoAudio, Codec = "ac3,wmav2,wmapro", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.AudioChannels, Value = "6", IsRequired = false } } }, new CodecProfile { Type = CodecType.VideoAudio, Codec = "aac", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.AudioChannels, Value = "2", IsRequired = false }, new ProfileCondition { Condition = ProfileConditionType.Equals, Property = ProfileConditionValue.AudioProfile, Value = "lc", IsRequired = false } } } }; }
public Foobar2000Profile() { Name = "foobar2000"; SupportedMediaTypes = "Audio"; Identification = new DeviceIdentification { FriendlyName = @"foobar", Headers = new[] { new HttpHeaderInfo { Name = "User-Agent", Value = "foobar", Match = HeaderMatchType.Substring } } }; DirectPlayProfiles = new[] { new DirectPlayProfile { Container = "mp3", AudioCodec = "mp2,mp3", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "mp4", AudioCodec = "mp4", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "aac,wav", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "flac", AudioCodec = "flac", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "asf", AudioCodec = "wmav2,wmapro,wmavoice", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "ogg", AudioCodec = "vorbis", Type = DlnaProfileType.Audio } }; ResponseProfiles = new ResponseProfile[] { }; }
private bool IsMatch(IDictionary<string, string> headers, DeviceIdentification profileInfo) { return profileInfo.Headers.Any(i => IsMatch(headers, i)); }
private bool IsMatch(DeviceIdentification deviceInfo, DeviceIdentification profileInfo) { if (!string.IsNullOrWhiteSpace(profileInfo.DeviceDescription)) { if (deviceInfo.DeviceDescription == null || !IsRegexMatch(deviceInfo.DeviceDescription, profileInfo.DeviceDescription)) return false; } if (!string.IsNullOrWhiteSpace(profileInfo.FriendlyName)) { if (deviceInfo.FriendlyName == null || !IsRegexMatch(deviceInfo.FriendlyName, profileInfo.FriendlyName)) return false; } if (!string.IsNullOrWhiteSpace(profileInfo.Manufacturer)) { if (deviceInfo.Manufacturer == null || !IsRegexMatch(deviceInfo.Manufacturer, profileInfo.Manufacturer)) return false; } if (!string.IsNullOrWhiteSpace(profileInfo.ManufacturerUrl)) { if (deviceInfo.ManufacturerUrl == null || !IsRegexMatch(deviceInfo.ManufacturerUrl, profileInfo.ManufacturerUrl)) return false; } if (!string.IsNullOrWhiteSpace(profileInfo.ModelDescription)) { if (deviceInfo.ModelDescription == null || !IsRegexMatch(deviceInfo.ModelDescription, profileInfo.ModelDescription)) return false; } if (!string.IsNullOrWhiteSpace(profileInfo.ModelName)) { if (deviceInfo.ModelName == null || !IsRegexMatch(deviceInfo.ModelName, profileInfo.ModelName)) return false; } if (!string.IsNullOrWhiteSpace(profileInfo.ModelNumber)) { if (deviceInfo.ModelNumber == null || !IsRegexMatch(deviceInfo.ModelNumber, profileInfo.ModelNumber)) return false; } if (!string.IsNullOrWhiteSpace(profileInfo.ModelUrl)) { if (deviceInfo.ModelUrl == null || !IsRegexMatch(deviceInfo.ModelUrl, profileInfo.ModelUrl)) return false; } if (!string.IsNullOrWhiteSpace(profileInfo.SerialNumber)) { if (deviceInfo.SerialNumber == null || !IsRegexMatch(deviceInfo.SerialNumber, profileInfo.SerialNumber)) return false; } return true; }
public SamsungSmartTvProfile() { Name = "Samsung Smart TV"; EnableAlbumArtInDidl = true; Identification = new DeviceIdentification { ModelUrl = "samsung.com" }; TranscodingProfiles = new[] { new TranscodingProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new TranscodingProfile { Container = "ts", AudioCodec = "ac3", VideoCodec = "h264", Type = DlnaProfileType.Video }, new TranscodingProfile { Container = "jpeg", Type = DlnaProfileType.Photo } }; DirectPlayProfiles = new[] { new DirectPlayProfile { Container = "asf", VideoCodec = "h264,mpeg4,mjpeg", AudioCodec = "mp3,ac3,wmav2,wmapro,wmavoice", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "avi", VideoCodec = "h264,mpeg4,mjpeg", AudioCodec = "mp3,ac3,dca", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mkv", VideoCodec = "h264,mpeg4,mjpeg4", AudioCodec = "mp3,ac3,dca,aac", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mp4", VideoCodec = "h264,mpeg4", AudioCodec = "mp3,aac", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "3gpp", VideoCodec = "h264,mpeg4", AudioCodec = "aac,he-aac", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mpg,mpeg", VideoCodec = "mpeg1video,mpeg2video,h264", AudioCodec = "ac3,mp2,mp3,aac", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "vro,vob", VideoCodec = "mpeg1video,mpeg2video", AudioCodec = "ac3,mp2,mp3", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "ts", VideoCodec = "mpeg2video,h264,vc1", AudioCodec = "ac3,aac,mp3,eac3", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "asf", VideoCodec = "wmv2,wmv3", AudioCodec = "wmav2,wmavoice", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "jpeg", Type = DlnaProfileType.Photo } }; ContainerProfiles = new[] { new ContainerProfile { Type = DlnaProfileType.Photo, Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" } } } }; CodecProfiles = new[] { new CodecProfile { Type = CodecType.Video, Codec = "mpeg2video", Conditions = new[] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoFramerate, Value = "30" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitrate, Value = "30720000" } } }, new CodecProfile { Type = CodecType.Video, Codec = "mpeg4", Conditions = new[] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoFramerate, Value = "30" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitrate, Value = "8192000" } } }, new CodecProfile { Type = CodecType.Video, Codec = "h264", Conditions = new[] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoFramerate, Value = "30" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitrate, Value = "37500000" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoLevel, Value = "41" } } }, new CodecProfile { Type = CodecType.Video, Codec = "wmv2,wmv3,vc1", Conditions = new[] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoFramerate, Value = "30" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitrate, Value = "25600000" } } }, new CodecProfile { Type = CodecType.VideoAudio, Codec = "ac3,wmav2,dca,aac,mp3", Conditions = new[] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.AudioChannels, Value = "6" } } } }; ResponseProfiles = new[] { new ResponseProfile { Container = "avi", MimeType = "video/x-msvideo", Type = DlnaProfileType.Video }, new ResponseProfile { Container = "mkv", MimeType = "video/x-mkv", Type = DlnaProfileType.Video } }; }
public PanasonicVieraProfile() { Name = "Panasonic Viera"; Identification = new DeviceIdentification { FriendlyName = @"VIERA", Manufacturer = "Panasonic", Headers = new[] { new HttpHeaderInfo { Name = "User-Agent", Value = "Panasonic MIL DLNA", Match = HeaderMatchType.Substring } } }; TimelineOffsetSeconds = 10; TranscodingProfiles = new[] { new TranscodingProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new TranscodingProfile { Container = "ts", AudioCodec = "ac3", VideoCodec = "h264", Type = DlnaProfileType.Video }, new TranscodingProfile { Container = "jpeg", Type = DlnaProfileType.Photo } }; DirectPlayProfiles = new[] { new DirectPlayProfile { Container = "mpeg", VideoCodec = "mpeg2video,mpeg4", AudioCodec = "ac3,mp3", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mkv", VideoCodec = "h264", AudioCodec = "aac,ac3,mp3,pcm", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "ts", VideoCodec = "h264", AudioCodec = "aac,mp3", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mp4", VideoCodec = "h264", AudioCodec = "aac,ac3,mp3,pcm", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mov", VideoCodec = "h264", AudioCodec = "aac,pcm", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "avi", VideoCodec = "mpeg4", AudioCodec = "pcm", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "flv", VideoCodec = "h264", AudioCodec = "aac", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "mp4", AudioCodec = "aac", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "jpeg", Type = DlnaProfileType.Photo } }; ContainerProfiles = new[] { new ContainerProfile { Type = DlnaProfileType.Photo, Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" } } } }; CodecProfiles = new[] { new CodecProfile { Type = CodecType.Video, Conditions = new[] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitDepth, Value = "8", IsRequired = false } } } }; }
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, 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, Codec = "mpeg2video", 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 } } } }; ResponseProfiles = new[] { new ResponseProfile { Container = "mkv,ts", Type = DlnaProfileType.Video, MimeType = "video/mp4" } }; }
public SamsungSmartTvProfile() { Name = "Samsung Smart TV"; EnableAlbumArtInDidl = true; Identification = new DeviceIdentification { ModelUrl = "samsung.com", Headers = new[] { new HttpHeaderInfo { Name = "User-Agent", Value = @"SEC_", Match = HeaderMatchType.Substring } } }; AddXmlRootAttribute("xmlns:sec", "http://www.sec.co.kr/"); TranscodingProfiles = new[] { new TranscodingProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new TranscodingProfile { Container = "ts", AudioCodec = "ac3", VideoCodec = "h264", Type = DlnaProfileType.Video, EstimateContentLength = true }, new TranscodingProfile { Container = "jpeg", Type = DlnaProfileType.Photo } }; DirectPlayProfiles = new[] { new DirectPlayProfile { Container = "asf", VideoCodec = "h264,mpeg4,mjpeg", AudioCodec = "mp3,ac3,wmav2,wmapro,wmavoice", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "avi", VideoCodec = "h264,mpeg4,mjpeg", AudioCodec = "mp3,ac3,dca", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mkv", VideoCodec = "h264,mpeg4,mjpeg4", AudioCodec = "mp3,ac3,dca,aac", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mp4", VideoCodec = "h264,mpeg4", AudioCodec = "mp3,aac", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "3gp", VideoCodec = "h264,mpeg4", AudioCodec = "aac,he-aac", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mpg,mpeg", VideoCodec = "mpeg1video,mpeg2video,h264", AudioCodec = "ac3,mp2,mp3,aac", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "vro,vob", VideoCodec = "mpeg1video,mpeg2video", AudioCodec = "ac3,mp2,mp3", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "ts", VideoCodec = "mpeg2video,h264,vc1", AudioCodec = "ac3,aac,mp3,eac3", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "asf", VideoCodec = "wmv2,wmv3", AudioCodec = "wmav2,wmavoice", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mp3,flac", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "jpeg", Type = DlnaProfileType.Photo } }; ContainerProfiles = new[] { new ContainerProfile { Type = DlnaProfileType.Photo, Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" } } } }; CodecProfiles = new[] { new CodecProfile { Type = CodecType.Video, Codec = "mpeg2video", Conditions = new[] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoFramerate, Value = "30" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitrate, Value = "30720000" } } }, new CodecProfile { Type = CodecType.Video, Codec = "mpeg4", Conditions = new[] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoFramerate, Value = "30" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitrate, Value = "8192000" } } }, new CodecProfile { Type = CodecType.Video, Codec = "h264", Conditions = new[] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoFramerate, Value = "30" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitrate, Value = "37500000" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoLevel, Value = "41" } } }, new CodecProfile { Type = CodecType.Video, Codec = "wmv2,wmv3,vc1", Conditions = new[] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoFramerate, Value = "30" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitrate, Value = "25600000" } } }, new CodecProfile { Type = CodecType.VideoAudio, Codec = "ac3,wmav2,dca,aac,mp3", Conditions = new[] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.AudioChannels, Value = "6" } } } }; ResponseProfiles = new[] { new ResponseProfile { Container = "avi", MimeType = "video/x-msvideo", Type = DlnaProfileType.Video }, new ResponseProfile { Container = "mkv", MimeType = "video/x-mkv", Type = DlnaProfileType.Video }, new ResponseProfile { Container = "flac", MimeType = "audio/x-flac", Type = DlnaProfileType.Audio } }; SubtitleProfiles = new[] { new SubtitleProfile { Format = "srt", Method = SubtitleDeliveryMethod.External, DidlMode = "CaptionInfoEx" } }; }
public WdtvLiveProfile() { Name = "WDTV Live"; TimelineOffsetSeconds = 5; IgnoreTranscodeByteRangeRequests = true; Identification = new DeviceIdentification { ModelName = "WD TV", Headers = new [] { new HttpHeaderInfo {Name = "User-Agent", Value = "alphanetworks", Match = HeaderMatchType.Substring}, new HttpHeaderInfo { Name = "User-Agent", Value = "ALPHA Networks", Match = HeaderMatchType.Substring } } }; TranscodingProfiles = new[] { new TranscodingProfile { Container = "mp3", Type = DlnaProfileType.Audio, AudioCodec = "mp3" }, new TranscodingProfile { Container = "ts", Type = DlnaProfileType.Video, VideoCodec = "h264", AudioCodec = "aac" }, new TranscodingProfile { Container = "jpeg", Type = DlnaProfileType.Photo } }; DirectPlayProfiles = new[] { new DirectPlayProfile { Container = "avi", Type = DlnaProfileType.Video, VideoCodec = "mpeg1video,mpeg2video,mpeg4,h264,vc1", AudioCodec = "ac3,dca,mp2,mp3,pcm,dca" }, new DirectPlayProfile { Container = "mpeg", Type = DlnaProfileType.Video, VideoCodec = "mpeg1video,mpeg2video", AudioCodec = "ac3,dca,mp2,mp3,pcm,dca" }, new DirectPlayProfile { Container = "mkv", Type = DlnaProfileType.Video, VideoCodec = "mpeg1video,mpeg2video,mpeg4,h264,vc1", AudioCodec = "ac3,dca,aac,mp2,mp3,pcm,dca" }, new DirectPlayProfile { Container = "ts,m2ts", Type = DlnaProfileType.Video, VideoCodec = "mpeg1video,mpeg2video,h264,vc1", AudioCodec = "ac3,dca,mp2,mp3,aac,dca" }, new DirectPlayProfile { Container = "mp4,mov", Type = DlnaProfileType.Video, VideoCodec = "h264,mpeg4", AudioCodec = "ac3,aac,mp2,mp3,dca" }, new DirectPlayProfile { Container = "asf", Type = DlnaProfileType.Video, VideoCodec = "vc1", AudioCodec = "wmav2,wmapro" }, new DirectPlayProfile { Container = "asf", Type = DlnaProfileType.Video, VideoCodec = "mpeg2video", AudioCodec = "mp2,ac3" }, new DirectPlayProfile { Container = "mp3", AudioCodec = "mp2,mp3", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "mp4", AudioCodec = "mp4", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "flac", AudioCodec = "flac", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "asf", AudioCodec = "wmav2,wmapro,wmavoice", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "ogg", AudioCodec = "vorbis", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Type = DlnaProfileType.Photo, Container = "jpeg,png,gif,bmp,tiff" } }; ResponseProfiles = new[] { new ResponseProfile { Container = "ts", OrgPn = "MPEG_TS_SD_NA", Type = DlnaProfileType.Video } }; ContainerProfiles = new[] { new ContainerProfile { Type = DlnaProfileType.Photo, Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" } } } }; CodecProfiles = new[] { new CodecProfile { Type = CodecType.Video, Codec = "h264", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoLevel, Value = "41" } } }, new CodecProfile { Type = CodecType.VideoAudio, Codec = "aac", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.AudioChannels, Value = "2" } } } }; SubtitleProfiles = new[] { new SubtitleProfile { Format = "srt", Method = SubtitleDeliveryMethod.External }, new SubtitleProfile { Format = "srt", Method = SubtitleDeliveryMethod.Embed }, new SubtitleProfile { Format = "sub", Method = SubtitleDeliveryMethod.Embed }, new SubtitleProfile { Format = "subrip", Method = SubtitleDeliveryMethod.Embed }, new SubtitleProfile { Format = "idx", Method = SubtitleDeliveryMethod.Embed } }; }
public SonyBlurayPlayer2013() { Name = "Sony Blu-ray Player 2013"; Identification = new DeviceIdentification { ModelNumber = "BDP-2013", Headers = new[] { new HttpHeaderInfo { Name = "X-AV-Physical-Unit-Info", Value = "BDP-S1100", Match = HeaderMatchType.Substring }, new HttpHeaderInfo { Name = "X-AV-Physical-Unit-Info", Value = "BDP-S3100", Match = HeaderMatchType.Substring }, new HttpHeaderInfo { Name = "X-AV-Physical-Unit-Info", Value = "BDP-S5100", Match = HeaderMatchType.Substring }, new HttpHeaderInfo { Name = "X-AV-Physical-Unit-Info", Value = "BDP-S6100", Match = HeaderMatchType.Substring }, new HttpHeaderInfo { Name = "X-AV-Physical-Unit-Info", Value = "BDP-S7100", Match = HeaderMatchType.Substring } } }; AddXmlRootAttribute("xmlns:av", "urn:schemas-sony-com:av"); ModelName = "Windows Media Player Sharing"; ModelNumber = "3.0"; Manufacturer = "Microsoft Corporation"; ProtocolInfo = "http-get:*:video/divx:DLNA.ORG_PN=MATROSKA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMABASE;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMAFULL;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/mp4:DLNA.ORG_PN=AAC_ISO;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/mp4:DLNA.ORG_PN=AAC_ISO_320;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/vnd.dlna.adts:DLNA.ORG_PN=AAC_ADTS;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/vnd.dlna.adts:DLNA.ORG_PN=AAC_ADTS_320;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/flac:DLNA.ORG_PN=FLAC;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/ogg:DLNA.ORG_PN=OGG;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/png:DLNA.ORG_PN=PNG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/png:DLNA.ORG_PN=PNG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/gif:DLNA.ORG_PN=GIF_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_KO_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_JP_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-msvideo:DLNA.ORG_PN=AVI;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-flv:DLNA.ORG_PN=FLV;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-dvr:DLNA.ORG_PN=DVR_MS;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/wtv:DLNA.ORG_PN=WTV;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/ogg:DLNA.ORG_PN=OGV;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.rn-realvideo:DLNA.ORG_PN=REAL_VIDEO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L2_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L3_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/3gpp:DLNA.ORG_PN=MPEG4_P2_3GPP_SP_L0B_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/3gpp:DLNA.ORG_PN=MPEG4_P2_3GPP_SP_L0B_AMR;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/3gpp:DLNA.ORG_PN=MPEG4_H263_3GPP_P0_L10_AMR;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/3gpp:DLNA.ORG_PN=MPEG4_H263_MP4_P0_L10_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000"; TranscodingProfiles = new[] { new TranscodingProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new TranscodingProfile { Container = "mkv", VideoCodec = "h264", AudioCodec = "ac3,aac,mp3", Type = DlnaProfileType.Video }, new TranscodingProfile { Container = "jpeg", Type = DlnaProfileType.Photo } }; DirectPlayProfiles = new[] { new DirectPlayProfile { Container = "ts,mpegts", VideoCodec = "mpeg1video,mpeg2video,h264", AudioCodec = "ac3,aac,mp3,pcm", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mpeg,mpg", VideoCodec = "mpeg1video,mpeg2video", AudioCodec = "ac3,mp3,mp2,pcm", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mp4,m4v", VideoCodec = "mpeg4,h264", AudioCodec = "ac3,aac,pcm,mp3", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "avi", VideoCodec = "mpeg4,h264", AudioCodec = "ac3,aac,mp3,pcm", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mkv", VideoCodec = "mpeg4,h264", AudioCodec = "ac3,dca,aac,mp3,pcm", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "m2ts,mts", VideoCodec = "h264,mpeg4,vc1", AudioCodec = "aac,mp3,ac3,dca,dts", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "wmv,asf", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mp3,m4a,wma,wav", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "jpeg,png,gif", Type = DlnaProfileType.Photo } }; CodecProfiles = new[] { new CodecProfile { Type = CodecType.Video, Codec = "h264", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoFramerate, Value = "30", IsRequired = false } } }, new CodecProfile { Type = CodecType.VideoAudio, Codec = "ac3", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.AudioChannels, Value = "6", IsRequired = false } } } }; ContainerProfiles = new[] { new ContainerProfile { Type = DlnaProfileType.Photo, Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" } } } }; SubtitleProfiles = new[] { new SubtitleProfile { Format = "srt", Method = SubtitleDeliveryMethod.Embed } }; ResponseProfiles = new ResponseProfile[] { }; }
public SonyBlurayPlayer2013Profile() { Name = "Sony Blu-ray Player 2013"; Identification = new DeviceIdentification { FriendlyName = @"Blu-ray Disc Player", Manufacturer = "Sony", ModelNumber = "BDP-2013" }; XmlRootAttributes = new[] { new XmlAttribute { Name = "xmlns:av", Value = "urn:schemas-sony-com:av" } }; ModelName = "Windows Media Player Sharing"; ModelNumber = "3.0"; Manufacturer = "Microsoft Corporation"; ProtocolInfo = "http-get:*:video/divx:DLNA.ORG_PN=MATROSKA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMABASE;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMAFULL;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/mp4:DLNA.ORG_PN=AAC_ISO;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/mp4:DLNA.ORG_PN=AAC_ISO_320;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/vnd.dlna.adts:DLNA.ORG_PN=AAC_ADTS;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/vnd.dlna.adts:DLNA.ORG_PN=AAC_ADTS_320;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/flac:DLNA.ORG_PN=FLAC;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/ogg:DLNA.ORG_PN=OGG;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/png:DLNA.ORG_PN=PNG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/png:DLNA.ORG_PN=PNG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/gif:DLNA.ORG_PN=GIF_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_KO_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_JP_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-msvideo:DLNA.ORG_PN=AVI;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-flv:DLNA.ORG_PN=FLV;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-dvr:DLNA.ORG_PN=DVR_MS;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/wtv:DLNA.ORG_PN=WTV;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/ogg:DLNA.ORG_PN=OGV;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.rn-realvideo:DLNA.ORG_PN=REAL_VIDEO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L2_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L3_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/3gpp:DLNA.ORG_PN=MPEG4_P2_3GPP_SP_L0B_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/3gpp:DLNA.ORG_PN=MPEG4_P2_3GPP_SP_L0B_AMR;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/3gpp:DLNA.ORG_PN=MPEG4_H263_3GPP_P0_L10_AMR;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/3gpp:DLNA.ORG_PN=MPEG4_H263_MP4_P0_L10_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000"; TranscodingProfiles = new[] { new TranscodingProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new TranscodingProfile { Container = "ts", VideoCodec = "h264", AudioCodec = "ac3", Type = DlnaProfileType.Video }, new TranscodingProfile { Container = "jpeg", Type = DlnaProfileType.Photo } }; DirectPlayProfiles = new[] { new DirectPlayProfile { Container = "ts", VideoCodec = "mpeg1video,mpeg2video,h264", AudioCodec = "ac3,aac,mp3,pcm", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mpeg", VideoCodec = "mpeg1video,mpeg2video", AudioCodec = "ac3,mp3,mp2,pcm", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mp4", VideoCodec = "mpeg4,h264", AudioCodec = "ac3,aac,pcm,mp3", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "avi", VideoCodec = "mpeg4,h264", AudioCodec = "ac3,aac,mp3,pcm", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mkv", VideoCodec = "mpeg4,h264", AudioCodec = "ac3,dca,aac,mp3,pcm", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "mp4", AudioCodec = "aac", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "asf", AudioCodec = "wmav2,wmapro,wmavoice", 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" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoFramerate, Value = "30", IsRequired = false } } }, new CodecProfile { Type = CodecType.VideoAudio, Codec = "ac3", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.AudioChannels, Value = "6", IsRequired = false } } } }; ContainerProfiles = new[] { new ContainerProfile { Type = DlnaProfileType.Photo, Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" } } } }; }
public DirectTvProfile() { Name = "DirecTV HD-DVR"; TimelineOffsetSeconds = 10; RequiresPlainFolders = true; RequiresPlainVideoItems = true; Identification = new DeviceIdentification { Headers = new[] { new HttpHeaderInfo { Match = HeaderMatchType.Substring, Name = "User-Agent", Value = "DIRECTV" } }, FriendlyName = "^DIRECTV.*$" }; DirectPlayProfiles = new[] { new DirectPlayProfile { Container = "mpeg", VideoCodec = "mpeg2video", AudioCodec = "mp2", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "jpeg,jpg", Type = DlnaProfileType.Photo } }; TranscodingProfiles = new[] { new TranscodingProfile { Container = "mpeg", VideoCodec = "mpeg2video", AudioCodec = "mp2", Type = DlnaProfileType.Video }, new TranscodingProfile { Container = "jpeg", Type = DlnaProfileType.Photo } }; CodecProfiles = new[] { new CodecProfile { Codec = "mpeg2video", Type = CodecType.Video, Conditions = new[] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoFramerate, Value = "30" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitrate, Value = "8192000" } } }, new CodecProfile { Codec = "mp2", Type = CodecType.Audio, Conditions = new[] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.AudioChannels, Value = "2" } } } }; }
public PanasonicVieraProfile() { Name = "Panasonic Viera"; Identification = new DeviceIdentification { FriendlyName = @"VIERA", Manufacturer = "Panasonic", Headers = new[] { new HttpHeaderInfo { Name = "User-Agent", Value = "Panasonic MIL DLNA", Match = HeaderMatchType.Substring } } }; AddXmlRootAttribute("xmlns:pv", "http://www.pv.com/pvns/"); TimelineOffsetSeconds = 10; TranscodingProfiles = new[] { new TranscodingProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new TranscodingProfile { Container = "ts", AudioCodec = "ac3", VideoCodec = "h264", Type = DlnaProfileType.Video }, new TranscodingProfile { Container = "jpeg", Type = DlnaProfileType.Photo } }; DirectPlayProfiles = new[] { new DirectPlayProfile { Container = "mpeg,mpg", VideoCodec = "mpeg2video,mpeg4", AudioCodec = "ac3,mp3,pcm_dvd", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mkv", VideoCodec = "h264,mpeg2video", AudioCodec = "aac,ac3,dca,mp3,mp2,pcm", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "ts", VideoCodec = "h264,mpeg2video", AudioCodec = "aac,mp3,mp2", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mp4", VideoCodec = "h264", AudioCodec = "aac,ac3,mp3,pcm", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mov", VideoCodec = "h264", AudioCodec = "aac,pcm", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "avi", VideoCodec = "mpeg4", AudioCodec = "pcm", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "flv", VideoCodec = "h264", AudioCodec = "aac", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "mp4", AudioCodec = "aac", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "jpeg", Type = DlnaProfileType.Photo } }; ContainerProfiles = new[] { new ContainerProfile { Type = DlnaProfileType.Photo, Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" } } } }; CodecProfiles = new[] { new CodecProfile { Type = CodecType.Video, Conditions = new[] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitDepth, Value = "8", IsRequired = false } } } }; SubtitleProfiles = new[] { new SubtitleProfile { Format = "srt", Method = SubtitleDeliveryMethod.External } }; ResponseProfiles = new[] { new ResponseProfile { Type = DlnaProfileType.Video, Container = "ts", OrgPn = "MPEG_TS_SD_EU,MPEG_TS_SD_NA,MPEG_TS_SD_KO", MimeType = "video/vnd.dlna.mpeg-tts" } }; }
public VlcProfile() { Name = "Vlc"; TimelineOffsetSeconds = 5; Identification = new DeviceIdentification { ModelName = "Vlc", Headers = new[] { new HttpHeaderInfo {Name = "User-Agent", Value = "vlc", Match = HeaderMatchType.Substring} } }; TranscodingProfiles = new[] { new TranscodingProfile { Container = "mp3", Type = DlnaProfileType.Audio, AudioCodec = "mp3" }, new TranscodingProfile { Container = "ts", Type = DlnaProfileType.Video, VideoCodec = "h264", AudioCodec = "aac" }, new TranscodingProfile { Container = "jpeg", Type = DlnaProfileType.Photo } }; DirectPlayProfiles = new[] { new DirectPlayProfile { Container = "avi,mpeg,mkv,ts,mp4,mov,m4v,asf,webm,ogg,ogv,iso", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mp3,flac,asf,off,oga,aac", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Type = DlnaProfileType.Photo, Container = "jpeg,png,gif,bmp,tiff" } }; ResponseProfiles = new ResponseProfile[] { }; ContainerProfiles = new ContainerProfile[] { }; CodecProfiles = new CodecProfile[] { }; }
public KodiProfile() { Name = "Kodi"; MaxStreamingBitrate = 100000000; MusicStreamingTranscodingBitrate = 1280000; TimelineOffsetSeconds = 5; Identification = new DeviceIdentification { ModelName = "Kodi", Headers = new[] { new HttpHeaderInfo {Name = "User-Agent", Value = "Kodi", Match = HeaderMatchType.Substring} } }; TranscodingProfiles = new[] { new TranscodingProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new TranscodingProfile { Container = "ts", Type = DlnaProfileType.Video, AudioCodec = "aac", VideoCodec = "h264" }, new TranscodingProfile { Container = "jpeg", Type = DlnaProfileType.Photo } }; DirectPlayProfiles = new[] { new DirectPlayProfile { Container = "", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "", Type = DlnaProfileType.Photo, } }; ResponseProfiles = new ResponseProfile[] { }; ContainerProfiles = new ContainerProfile[] { }; CodecProfiles = new CodecProfile[] { }; SubtitleProfiles = new[] { new SubtitleProfile { Format = "srt", Method = SubtitleDeliveryMethod.External, }, new SubtitleProfile { Format = "sub", Method = SubtitleDeliveryMethod.External, }, new SubtitleProfile { Format = "srt", Method = SubtitleDeliveryMethod.Embed, DidlMode = "", }, new SubtitleProfile { Format = "ass", Method = SubtitleDeliveryMethod.Embed, DidlMode = "", }, new SubtitleProfile { Format = "ssa", Method = SubtitleDeliveryMethod.Embed, DidlMode = "", }, new SubtitleProfile { Format = "smi", Method = SubtitleDeliveryMethod.Embed, DidlMode = "", }, new SubtitleProfile { Format = "dvdsub", Method = SubtitleDeliveryMethod.Embed, DidlMode = "", }, new SubtitleProfile { Format = "pgs", Method = SubtitleDeliveryMethod.Embed, DidlMode = "", }, new SubtitleProfile { Format = "pgssub", Method = SubtitleDeliveryMethod.Embed, DidlMode = "", }, new SubtitleProfile { Format = "sub", Method = SubtitleDeliveryMethod.Embed, DidlMode = "", } }; }
public XboxOneProfile() { Name = "Xbox One"; XDlnaDoc = "DMS-1.50"; Identification = new DeviceIdentification { ModelName = "Xbox One", FriendlyName = "Xbox-SystemOS" }; TranscodingProfiles = new[] { new TranscodingProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new TranscodingProfile { Container = "ts", VideoCodec = "h264", AudioCodec = "ac3", Type = DlnaProfileType.Video, EstimateContentLength = true } }; DirectPlayProfiles = new[] { new DirectPlayProfile { Container = "ts", VideoCodec = "h264", AudioCodec = "ac3", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "avi", VideoCodec = "mpeg4", AudioCodec = "ac3,mp3", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "avi", VideoCodec = "h264", AudioCodec = "aac", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mp4,mov,mkv", VideoCodec = "h264,mpeg4", AudioCodec = "aac,ac3", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "asf", VideoCodec = "wmv2,wmv3,vc1", AudioCodec = "wmav2,wmapro", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "asf", AudioCodec = "wmav2,wmapro,wmavoice", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "jpeg", Type = DlnaProfileType.Photo } }; ContainerProfiles = new[] { new ContainerProfile { Type = DlnaProfileType.Video, Container = "mp4,mov", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.Equals, Property = ProfileConditionValue.Has64BitOffsets, Value = "false", IsRequired = false } } } }; CodecProfiles = new[] { new CodecProfile { Type = CodecType.Video, Codec = "mpeg4", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoFramerate, Value = "30", IsRequired = false }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitrate, Value = "5120000", IsRequired = false } } }, new CodecProfile { Type = CodecType.Video, Codec = "h264", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" } } }, new CodecProfile { Type = CodecType.Video, Codec = "wmv2,wmv3,vc1", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoFramerate, Value = "30", IsRequired = false }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitrate, Value = "15360000", IsRequired = false } } }, new CodecProfile { Type = CodecType.VideoAudio, Codec = "ac3,wmav2,wmapro", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.AudioChannels, Value = "6", IsRequired = false } } }, new CodecProfile { Type = CodecType.VideoAudio, Codec = "aac", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.AudioChannels, Value = "2", IsRequired = false }, new ProfileCondition { Condition = ProfileConditionType.Equals, Property = ProfileConditionValue.AudioProfile, Value = "lc", IsRequired = false } } } }; ResponseProfiles = new[] { new ResponseProfile { Container = "avi", MimeType = "video/avi", Type = DlnaProfileType.Video } }; }
public XboxOneProfile() { Name = "Xbox One"; TimelineOffsetSeconds = 40; Identification = new DeviceIdentification { ModelName = "Xbox One", Headers = new[] { new HttpHeaderInfo { Name = "FriendlyName.DLNA.ORG", Value = "XboxOne", Match = HeaderMatchType.Substring }, new HttpHeaderInfo { Name = "User-Agent", Value = "NSPlayer/12", Match = HeaderMatchType.Substring } } }; var videoProfile = "high|main|baseline|constrained baseline"; var videoLevel = "41"; TranscodingProfiles = new[] { new TranscodingProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new TranscodingProfile { Container = "jpeg", VideoCodec = "jpeg", Type = DlnaProfileType.Photo }, new TranscodingProfile { Container = "ts", VideoCodec = "h264", AudioCodec = "aac", Type = DlnaProfileType.Video } }; DirectPlayProfiles = new[] { new DirectPlayProfile { Container = "ts", VideoCodec = "h264", AudioCodec = "ac3", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "avi", VideoCodec = "mpeg4", AudioCodec = "ac3,mp3", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "avi", VideoCodec = "h264", AudioCodec = "aac", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mp4,mov,mkv", VideoCodec = "h264,mpeg4", AudioCodec = "aac,ac3", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "asf", VideoCodec = "wmv2,wmv3,vc1", AudioCodec = "wmav2,wmapro", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "asf", AudioCodec = "wmav2,wmapro,wmavoice", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "jpeg", Type = DlnaProfileType.Photo } }; ContainerProfiles = new[] { new ContainerProfile { Type = DlnaProfileType.Video, Container = "mp4,mov", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.Equals, Property = ProfileConditionValue.Has64BitOffsets, Value = "false", IsRequired = false } } } }; CodecProfiles = new[] { new CodecProfile { Type = CodecType.Video, Codec = "mpeg4", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.NotEquals, Property = ProfileConditionValue.IsAnamorphic, Value = "true", IsRequired = false }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitDepth, Value = "8", IsRequired = false }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoFramerate, Value = "30", IsRequired = false }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitrate, Value = "5120000", IsRequired = false } } }, new CodecProfile { Type = CodecType.Video, Codec = "h264", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.NotEquals, Property = ProfileConditionValue.IsAnamorphic, Value = "true", IsRequired = false }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitDepth, Value = "8", IsRequired = false }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoLevel, Value = videoLevel, IsRequired = false }, new ProfileCondition { Condition = ProfileConditionType.EqualsAny, Property = ProfileConditionValue.VideoProfile, Value = videoProfile, IsRequired = false } } }, new CodecProfile { Type = CodecType.Video, Codec = "wmv2,wmv3,vc1", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.NotEquals, Property = ProfileConditionValue.IsAnamorphic, Value = "true", IsRequired = false }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitDepth, Value = "8", IsRequired = false }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoFramerate, Value = "30", IsRequired = false }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitrate, Value = "15360000", IsRequired = false } } }, new CodecProfile { Type = CodecType.Video, Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.NotEquals, Property = ProfileConditionValue.IsAnamorphic, Value = "true", IsRequired = false }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitDepth, Value = "8", IsRequired = false } } }, new CodecProfile { Type = CodecType.VideoAudio, Codec = "ac3,wmav2,wmapro", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.AudioChannels, Value = "6", IsRequired = false } } }, new CodecProfile { Type = CodecType.VideoAudio, Codec = "aac", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.AudioChannels, Value = "2", IsRequired = false }, new ProfileCondition { Condition = ProfileConditionType.Equals, Property = ProfileConditionValue.AudioProfile, Value = "lc", IsRequired = false } } } }; ResponseProfiles = new[] { new ResponseProfile { Container = "avi", MimeType = "video/avi", Type = DlnaProfileType.Video } }; }
public SonyBravia2012Profile() { Name = "Sony Bravia (2012)"; Identification = new DeviceIdentification { FriendlyName = @"KDL-\d{2}[A-Z]X\d5(\d|G).*", Manufacturer = "Sony", Headers = new[] { new HttpHeaderInfo { Name = "X-AV-Client-Info", Value = @".*KDL-\d{2}[A-Z]X\d5(\d|G).*", Match = HeaderMatchType.Regex } } }; ModelName = "Windows Media Player Sharing"; ModelNumber = "3.0"; ModelUrl = "http://www.microsoft.com/"; Manufacturer = "Microsoft Corporation"; ManufacturerUrl = "http://www.microsoft.com/"; SonyAggregationFlags = "10"; TranscodingProfiles = new[] { new TranscodingProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new TranscodingProfile { Container = "ts", VideoCodec = "h264", AudioCodec = "ac3,aac", Type = DlnaProfileType.Video, EnableMpegtsM2TsMode = true }, new TranscodingProfile { Container = "jpeg", Type = DlnaProfileType.Photo } }; DirectPlayProfiles = new[] { new DirectPlayProfile { Container = "ts", VideoCodec = "h264", AudioCodec = "ac3,aac,mp3", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "ts", VideoCodec = "mpeg2video", AudioCodec = "mp3,mp2", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mp4", VideoCodec = "h264,mpeg4", AudioCodec = "ac3,aac,mp3,mp2", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "avi", VideoCodec = "mpeg4", AudioCodec = "ac3,mp3", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mpeg", VideoCodec = "mpeg2video,mpeg1video", AudioCodec = "mp3,mp2", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "asf", VideoCodec = "wmv2,wmv3,vc1", AudioCodec = "wmav2,wmapro,wmavoice", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "asf", AudioCodec = "wmav2,wmapro,wmavoice", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "jpeg", Type = DlnaProfileType.Photo } }; ResponseProfiles = new[] { new ResponseProfile { Container = "ts", VideoCodec="h264", AudioCodec="ac3,aac,mp3", MimeType = "video/vnd.dlna.mpeg-tts", OrgPn="AVC_TS_HD_24_AC3_T,AVC_TS_HD_50_AC3_T,AVC_TS_HD_60_AC3_T,AVC_TS_HD_EU_T", Type = DlnaProfileType.Video }, new ResponseProfile { Container = "ts", VideoCodec="h264", AudioCodec="ac3,aac,mp3", MimeType = "video/mpeg", OrgPn="AVC_TS_HD_24_AC3_ISO,AVC_TS_HD_50_AC3_ISO,AVC_TS_HD_60_AC3_ISO,AVC_TS_HD_EU_ISO", Type = DlnaProfileType.Video }, new ResponseProfile { Container = "ts", VideoCodec="h264", AudioCodec="ac3,aac,mp3", MimeType = "video/vnd.dlna.mpeg-tts", OrgPn="AVC_TS_HD_24_AC3,AVC_TS_HD_50_AC3,AVC_TS_HD_60_AC3,AVC_TS_HD_EU", Type = DlnaProfileType.Video }, new ResponseProfile { Container = "ts", VideoCodec="mpeg2video", MimeType = "video/vnd.dlna.mpeg-tts", OrgPn="MPEG_TS_SD_EU,MPEG_TS_SD_NA,MPEG_TS_SD_KO", Type = DlnaProfileType.Video }, new ResponseProfile { Container = "mpeg", VideoCodec="mpeg1video,mpeg2video", MimeType = "video/mpeg", OrgPn="MPEG_PS_NTSC,MPEG_PS_PAL", Type = DlnaProfileType.Video } }; ContainerProfiles = new[] { new ContainerProfile { Type = DlnaProfileType.Photo, Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" } } } }; CodecProfiles = new[] { new CodecProfile { Type = CodecType.Video, Conditions = new[] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" } } }, new CodecProfile { Type = CodecType.VideoAudio, Codec = "ac3", Conditions = new[] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.AudioChannels, Value = "6" } } } }; }
public SonyBlurayPlayerProfile() { Name = "Sony Blu-ray Player"; Identification = new DeviceIdentification { FriendlyName = @"Blu-ray Disc Player", Manufacturer = "Sony", Headers = new[] { new HttpHeaderInfo { Name = "X-AV-Client-Info", Value = @"(Blu-ray Disc Player|Home Theater System|Home Theatre System|Media Player)", Match = HeaderMatchType.Regex }, new HttpHeaderInfo { Name = "X-AV-Physical-Unit-Info", Value = @"(Blu-ray Disc Player|Home Theater System|Home Theatre System|Media Player)", Match = HeaderMatchType.Regex } } }; ModelName = "Windows Media Player Sharing"; ModelNumber = "3.0"; Manufacturer = "Microsoft Corporation"; ProtocolInfo = "http-get:*:video/divx:DLNA.ORG_PN=MATROSKA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMABASE;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMAFULL;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=1:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/L16;rate=48000;channels=2:DLNA.ORG_PN=LPCM;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/mp4:DLNA.ORG_PN=AAC_ISO;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/mp4:DLNA.ORG_PN=AAC_ISO_320;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/vnd.dlna.adts:DLNA.ORG_PN=AAC_ADTS;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/vnd.dlna.adts:DLNA.ORG_PN=AAC_ADTS_320;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/flac:DLNA.ORG_PN=FLAC;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:audio/ogg:DLNA.ORG_PN=OGG;DLNA.ORG_OP=01;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/png:DLNA.ORG_PN=PNG_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/png:DLNA.ORG_PN=PNG_TN;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:image/gif:DLNA.ORG_PN=GIF_LRG;DLNA.ORG_OP=00;DLNA.ORG_FLAGS=00D00000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_KO_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_KO_ISO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_JP_T;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-msvideo:DLNA.ORG_PN=AVI;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-flv:DLNA.ORG_PN=FLV;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-dvr:DLNA.ORG_PN=DVR_MS;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/wtv:DLNA.ORG_PN=WTV;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/ogg:DLNA.ORG_PN=OGV;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/vnd.rn-realvideo:DLNA.ORG_PN=REAL_VIDEO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L1_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L2_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/x-ms-asf:DLNA.ORG_PN=VC1_ASF_AP_L3_WMA;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/3gpp:DLNA.ORG_PN=MPEG4_P2_3GPP_SP_L0B_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/3gpp:DLNA.ORG_PN=MPEG4_P2_3GPP_SP_L0B_AMR;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/3gpp:DLNA.ORG_PN=MPEG4_H263_3GPP_P0_L10_AMR;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000,http-get:*:video/3gpp:DLNA.ORG_PN=MPEG4_H263_MP4_P0_L10_AAC;DLNA.ORG_OP=11;DLNA.ORG_FLAGS=81500000000000000000000000000000"; TranscodingProfiles = new[] { new TranscodingProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new TranscodingProfile { Container = "ts", VideoCodec = "mpeg2video", AudioCodec = "ac3", Type = DlnaProfileType.Video }, new TranscodingProfile { Container = "jpeg", Type = DlnaProfileType.Photo } }; DirectPlayProfiles = new[] { new DirectPlayProfile { Container = "ts", VideoCodec = "mpeg1video,mpeg2video,h264", AudioCodec = "ac3,aac,mp3,pcm", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mpeg", VideoCodec = "mpeg1video,mpeg2video", AudioCodec = "ac3,mp3,pcm", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "avi,mp4", VideoCodec = "mpeg4,h264", AudioCodec = "ac3,aac,mp3,pcm", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "asf", AudioCodec = "wmav2,wmapro,wmavoice", 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" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoFramerate, Value = "30", IsRequired = false }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoLevel, Value = "41", IsRequired = false }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitrate, Value = "15360000", IsRequired = false } } }, new CodecProfile { Type = CodecType.VideoAudio, Codec = "ac3", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.AudioChannels, Value = "6", IsRequired = false } } }, new CodecProfile { Type = CodecType.VideoAudio, Codec = "aac", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.AudioChannels, Value = "2", IsRequired = false } } } }; ContainerProfiles = new[] { new ContainerProfile { Type = DlnaProfileType.Photo, Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" } } } }; ResponseProfiles = new[] { new ResponseProfile { Container = "ts", VideoCodec = "h264,mpeg4,vc1", AudioCodec = "ac3,aac,mp3", MimeType = "video/vnd.dlna.mpeg-tts", OrgPn="MPEG_TS_SD_EU,MPEG_TS_SD_NA,MPEG_TS_SD_KO", Type = DlnaProfileType.Video }, new ResponseProfile { Container = "avi", MimeType = "video/mpeg", Type = DlnaProfileType.Video }, new ResponseProfile { Container = "mkv", MimeType = "video/vnd.dlna.mpeg-tts", Type = DlnaProfileType.Video }, new ResponseProfile { Container = "ts", MimeType = "video/vnd.dlna.mpeg-tts", Type = DlnaProfileType.Video }, new ResponseProfile { Container = "mp4", MimeType = "video/mpeg", Type = DlnaProfileType.Video }, new ResponseProfile { Container = "mpeg", MimeType = "video/mpeg", Type = DlnaProfileType.Video }, new ResponseProfile { Container = "mp3", MimeType = "audio/mpeg", Type = DlnaProfileType.Audio } }; }
public LgTvProfile() { Name = "LG Smart TV"; TimelineOffsetSeconds = 10; Identification = new DeviceIdentification { FriendlyName = @"LG.*", Headers = new[] { new HttpHeaderInfo { Name = "User-Agent", Value = "LG", Match = HeaderMatchType.Substring } } }; TranscodingProfiles = new[] { new TranscodingProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new TranscodingProfile { Container = "ts", AudioCodec = "ac3", VideoCodec = "h264", Type = DlnaProfileType.Video }, new TranscodingProfile { Container = "jpeg", Type = DlnaProfileType.Photo } }; DirectPlayProfiles = new[] { new DirectPlayProfile { Container = "ts", VideoCodec = "h264,hevc", AudioCodec = "aac,ac3,mp3", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mkv", VideoCodec = "h264,hevc", AudioCodec = "aac,ac3,mp3", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mp4", VideoCodec = "h264,mpeg4,hevc", AudioCodec = "aac,ac3,mp3", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "jpeg", Type = DlnaProfileType.Photo } }; ContainerProfiles = new[] { new ContainerProfile { Type = DlnaProfileType.Photo, Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" } } } }; CodecProfiles = new[] { new CodecProfile { Type = CodecType.Video, Codec = "mpeg4", Conditions = new[] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoFramerate, Value = "30" } } }, new CodecProfile { Type = CodecType.Video, Codec = "h264", Conditions = new[] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoFramerate, Value = "30" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoLevel, Value = "41" } } }, new CodecProfile { Type = CodecType.VideoAudio, Codec = "ac3,aac,mp3", Conditions = new[] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.AudioChannels, Value = "6" } } } }; }
public Windows81Profile() { Name = "Windows 8/RT"; Identification = new DeviceIdentification { Manufacturer = "Microsoft SDK Customer" }; TranscodingProfiles = new[] { new TranscodingProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio, Context = EncodingContext.Streaming }, new TranscodingProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio, Context = EncodingContext.Static }, new TranscodingProfile { Protocol = "hls", Container = "ts", VideoCodec = "h264", AudioCodec = "aac", Type = DlnaProfileType.Video, Context = EncodingContext.Streaming }, new TranscodingProfile { Container = "ts", VideoCodec = "h264", AudioCodec = "aac", Type = DlnaProfileType.Video, Context = EncodingContext.Streaming }, new TranscodingProfile { Container = "mp4", VideoCodec = "h264", AudioCodec = "aac,ac3,eac3", Type = DlnaProfileType.Video, Context = EncodingContext.Static } }; DirectPlayProfiles = new[] { new DirectPlayProfile { Container = "mp4,mov", VideoCodec = "h264,mpeg4", AudioCodec = "aac,ac3,eac3,mp3,pcm", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "ts", VideoCodec = "h264", AudioCodec = "aac,ac3,eac3,mp3,mp2,pcm", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "asf", VideoCodec = "wmv2,wmv3,vc1", AudioCodec = "wmav2,wmapro,wmavoice", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "avi", VideoCodec = "mpeg4,msmpeg4,mjpeg", AudioCodec = "mp3,ac3,eac3,mp2,pcm", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mp4", AudioCodec = "aac", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "m4a", AudioCodec = "aac", VideoCodec = "", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "jpeg", Type = DlnaProfileType.Photo } }; CodecProfiles = new[] { new CodecProfile { Type = CodecType.Video, Codec="h264", Conditions = new [] { // Note: Add any of the following if supported //"Constrained Baseline", //"Baseline", //"Extended", //"Main", //"High", //"Progressive High", //"Constrained High" // The first one in the list should be the higest one, e.g. if High profile is supported, make sure it appears before baseline: high|baseline new ProfileCondition(ProfileConditionType.EqualsAny, ProfileConditionValue.VideoProfile, "high|main|extended|baseline|constrained baseline"), new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoLevel, Value = "51" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitDepth, Value = "8", IsRequired = false } } }, new CodecProfile { Type = CodecType.Video, Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitDepth, Value = "8", IsRequired = false } } }, new CodecProfile { Type = CodecType.VideoAudio, Codec = "aac,eac3", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.AudioChannels, Value = "8" } } }, new CodecProfile { Type = CodecType.VideoAudio, Codec = "ac3", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.AudioChannels, Value = "6" } } } }; SubtitleProfiles = new[] { new SubtitleProfile { Format = "vtt", Method = SubtitleDeliveryMethod.External } }; }
public SonyPs3Profile() { Name = "Sony PlayStation 3"; Identification = new DeviceIdentification { FriendlyName = "PLAYSTATION 3", Headers = new[] { new HttpHeaderInfo { Name = "User-Agent", Value = @"PLAYSTATION 3", Match = HeaderMatchType.Substring }, new HttpHeaderInfo { Name = "X-AV-Client-Info", Value = @"PLAYSTATION 3", Match = HeaderMatchType.Substring } } }; AlbumArtPn = "JPEG_TN"; SonyAggregationFlags = "10"; XDlnaDoc = "DMS-1.50"; EnableSingleAlbumArtLimit = true; DirectPlayProfiles = new[] { new DirectPlayProfile { Container = "avi", Type = DlnaProfileType.Video, VideoCodec = "mpeg4", AudioCodec = "mp2,mp3" }, new DirectPlayProfile { Container = "ts", Type = DlnaProfileType.Video, VideoCodec = "mpeg1video,mpeg2video,h264", AudioCodec = "ac3,mp2,mp3,aac" }, new DirectPlayProfile { Container = "mpeg", Type = DlnaProfileType.Video, VideoCodec = "mpeg1video,mpeg2video", AudioCodec = "mp2" }, new DirectPlayProfile { Container = "mp4", Type = DlnaProfileType.Video, VideoCodec = "h264,mpeg4", AudioCodec = "aac,ac3" }, new DirectPlayProfile { Container = "aac,mp3,wav", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "jpeg,png,gif,bmp,tiff", Type = DlnaProfileType.Photo } }; TranscodingProfiles = new[] { new TranscodingProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new TranscodingProfile { Container = "ts", VideoCodec = "h264", AudioCodec = "mp3", Type = DlnaProfileType.Video }, new TranscodingProfile { Container = "jpeg", Type = DlnaProfileType.Photo } }; ContainerProfiles = new[] { new ContainerProfile { Type = DlnaProfileType.Photo, Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" } } } }; CodecProfiles = new[] { new CodecProfile { Type = CodecType.Video, Codec = "h264", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoFramerate, Value = "30", IsRequired = false }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitrate, Value = "15360000", IsRequired = false }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoLevel, Value = "41", IsRequired = false } } }, new CodecProfile { Type = CodecType.VideoAudio, Codec = "ac3", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.AudioChannels, Value = "6", IsRequired = false }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.AudioBitrate, Value = "640000", IsRequired = false } } }, new CodecProfile { Type = CodecType.VideoAudio, Codec = "wmapro", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.AudioChannels, Value = "2" } } }, new CodecProfile { Type = CodecType.VideoAudio, Codec = "aac", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.NotEquals, Property = ProfileConditionValue.AudioProfile, Value = "he-aac", IsRequired = false } } } }; ResponseProfiles = new[] { new ResponseProfile { Container = "mp4,mov", AudioCodec="aac", MimeType = "video/mp4", Type = DlnaProfileType.Video }, new ResponseProfile { Container = "avi", MimeType = "video/divx", OrgPn="AVI", Type = DlnaProfileType.Video }, new ResponseProfile { Container = "wav", MimeType = "audio/wav", Type = DlnaProfileType.Audio } }; }
public Windows81Profile() { Name = "Windows 8/RT"; Identification = new DeviceIdentification { Manufacturer = "Microsoft SDK Customer" }; TranscodingProfiles = new[] { new TranscodingProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new TranscodingProfile { Protocol = "hls", Container = "ts", VideoCodec = "h264", AudioCodec = "aac", Type = DlnaProfileType.Video, VideoProfile = "Baseline", Context = EncodingContext.Streaming }, new TranscodingProfile { Container = "ts", VideoCodec = "h264", AudioCodec = "aac", Type = DlnaProfileType.Video, VideoProfile = "Baseline", Context = EncodingContext.Streaming }, new TranscodingProfile { Container = "mp4", VideoCodec = "h264", AudioCodec = "aac,ac3,eac3", Type = DlnaProfileType.Video, Context = EncodingContext.Static } }; DirectPlayProfiles = new[] { new DirectPlayProfile { Container = "mp4,mov", VideoCodec = "h264,mpeg4", AudioCodec = "aac,ac3,eac3,mp3,pcm", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "ts", VideoCodec = "h264", AudioCodec = "aac,ac3,eac3,mp3,mp2,pcm", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "asf", VideoCodec = "wmv2,wmv3,vc1", AudioCodec = "wmav2,wmapro,wmavoice", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "avi", VideoCodec = "mpeg4,msmpeg4,mjpeg", AudioCodec = "mp3,ac3,eac3,mp2,pcm", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mp4", AudioCodec = "aac", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "jpeg", Type = DlnaProfileType.Photo } }; CodecProfiles = new[] { new CodecProfile { Type = CodecType.Video, Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitDepth, Value = "8", IsRequired = false } } }, new CodecProfile { Type = CodecType.VideoAudio, Codec = "aac,eac3", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.AudioChannels, Value = "8" } } }, new CodecProfile { Type = CodecType.VideoAudio, Codec = "ac3", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.AudioChannels, Value = "6" } } } }; SubtitleProfiles = new[] { new SubtitleProfile { Format = "vtt", Method = SubtitleDeliveryMethod.External } }; }
public SonyBravia2011Profile() { Name = "Sony Bravia (2011)"; Identification = new DeviceIdentification { FriendlyName = @"KDL-\d{2}([A-Z]X\d2\d|CX400).*", Manufacturer = "Sony", Headers = new[] { new HttpHeaderInfo { Name = "X-AV-Client-Info", Value = @".*KDL-\d{2}([A-Z]X\d2\d|CX400).*", Match = HeaderMatchType.Regex } } }; XmlRootAttributes = new[] { new XmlAttribute { Name = "xmlns:av", Value = "urn:schemas-sony-com:av" } }; AlbumArtPn = "JPEG_TN"; ModelName = "Windows Media Player Sharing"; ModelNumber = "3.0"; ModelUrl = "http://www.microsoft.com/"; Manufacturer = "Microsoft Corporation"; ManufacturerUrl = "http://www.microsoft.com/"; SonyAggregationFlags = "10"; EnableSingleAlbumArtLimit = true; TranscodingProfiles = new[] { new TranscodingProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new TranscodingProfile { Container = "ts", VideoCodec = "h264", AudioCodec = "ac3,aac", Type = DlnaProfileType.Video, EnableMpegtsM2TsMode = true }, new TranscodingProfile { Container = "jpeg", Type = DlnaProfileType.Photo } }; DirectPlayProfiles = new[] { new DirectPlayProfile { Container = "ts", VideoCodec = "h264", AudioCodec = "ac3,aac,mp3", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "ts", VideoCodec = "mpeg2video", AudioCodec = "mp3,mp2", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mp4", VideoCodec = "h264,mpeg4", AudioCodec = "ac3,aac,mp3,mp2", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mpeg", VideoCodec = "mpeg2video,mpeg1video", AudioCodec = "mp3,mp2", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "asf", VideoCodec = "wmv2,wmv3,vc1", AudioCodec = "wmav2,wmapro,wmavoice", Type = DlnaProfileType.Video }, new DirectPlayProfile { Container = "mp3", AudioCodec = "mp3", Type = DlnaProfileType.Audio }, new DirectPlayProfile { Container = "asf", AudioCodec = "wmav2,wmapro,wmavoice", Type = DlnaProfileType.Audio } }; ContainerProfiles = new[] { new ContainerProfile { Type = DlnaProfileType.Photo, Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" } } } }; ResponseProfiles = new[] { new ResponseProfile { Container = "ts", VideoCodec="h264", AudioCodec="ac3,aac,mp3", MimeType = "video/vnd.dlna.mpeg-tts", OrgPn="AVC_TS_HD_24_AC3_T,AVC_TS_HD_50_AC3_T,AVC_TS_HD_60_AC3_T,AVC_TS_HD_EU_T", Type = DlnaProfileType.Video, Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.Equals, Property = ProfileConditionValue.PacketLength, Value = "192" }, new ProfileCondition { Condition = ProfileConditionType.Equals, Property = ProfileConditionValue.VideoTimestamp, Value = "Valid" } } }, new ResponseProfile { Container = "ts", VideoCodec="h264", AudioCodec="ac3,aac,mp3", MimeType = "video/mpeg", OrgPn="AVC_TS_HD_24_AC3_ISO,AVC_TS_HD_50_AC3_ISO,AVC_TS_HD_60_AC3_ISO,AVC_TS_HD_EU_ISO", Type = DlnaProfileType.Video, Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.Equals, Property = ProfileConditionValue.PacketLength, Value = "188" } } }, new ResponseProfile { Container = "ts", VideoCodec="h264", AudioCodec="ac3,aac,mp3", MimeType = "video/vnd.dlna.mpeg-tts", OrgPn="AVC_TS_HD_24_AC3,AVC_TS_HD_50_AC3,AVC_TS_HD_60_AC3,AVC_TS_HD_EU", Type = DlnaProfileType.Video }, new ResponseProfile { Container = "ts", VideoCodec="mpeg2video", MimeType = "video/vnd.dlna.mpeg-tts", OrgPn="MPEG_TS_SD_EU,MPEG_TS_SD_NA,MPEG_TS_SD_KO", Type = DlnaProfileType.Video }, new ResponseProfile { Container = "mpeg", VideoCodec="mpeg1video,mpeg2video", MimeType = "video/mpeg", OrgPn="MPEG_PS_NTSC,MPEG_PS_PAL", Type = DlnaProfileType.Video } }; CodecProfiles = new[] { new CodecProfile { Type = CodecType.Video, Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Width, Value = "1920" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.Height, Value = "1080" } } }, new CodecProfile { Type = CodecType.Video, Codec = "h264", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoFramerate, Value = "30" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitrate, Value = "20000000" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoLevel, Value = "41" } } }, new CodecProfile { Type = CodecType.Video, Codec = "mpeg2video", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoFramerate, Value = "30" }, new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.VideoBitrate, Value = "20000000" } } }, new CodecProfile { Type = CodecType.VideoAudio, Codec = "ac3", Conditions = new [] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.AudioChannels, Value = "6" } } }, new CodecProfile { Type = CodecType.VideoAudio, Codec = "aac", Conditions = new[] { new ProfileCondition { Condition = ProfileConditionType.LessThanEqual, Property = ProfileConditionValue.AudioChannels, Value = "2" }, new ProfileCondition { Condition = ProfileConditionType.NotEquals, Property = ProfileConditionValue.AudioProfile, Value = "he-aac" } } } }; }
private void LogUnmatchedProfile(DeviceIdentification profile) { var builder = new StringBuilder(); builder.AppendLine(string.Format("DeviceDescription:{0}", profile.DeviceDescription ?? string.Empty)); builder.AppendLine(string.Format("FriendlyName:{0}", profile.FriendlyName ?? string.Empty)); builder.AppendLine(string.Format("Manufacturer:{0}", profile.Manufacturer ?? string.Empty)); builder.AppendLine(string.Format("ManufacturerUrl:{0}", profile.ManufacturerUrl ?? string.Empty)); builder.AppendLine(string.Format("ModelDescription:{0}", profile.ModelDescription ?? string.Empty)); builder.AppendLine(string.Format("ModelName:{0}", profile.ModelName ?? string.Empty)); builder.AppendLine(string.Format("ModelNumber:{0}", profile.ModelNumber ?? string.Empty)); builder.AppendLine(string.Format("ModelUrl:{0}", profile.ModelUrl ?? string.Empty)); builder.AppendLine(string.Format("SerialNumber:{0}", profile.SerialNumber ?? string.Empty)); _logger.LogMultiline("No matching device profile found. The default will need to be used.", LogSeverity.Info, builder); }