diff options
| author | Joshua M. Boniface <joshua@boniface.me> | 2021-05-04 21:59:42 -0400 |
|---|---|---|
| committer | Joshua M. Boniface <joshua@boniface.me> | 2021-05-04 22:07:32 -0400 |
| commit | b7c3510da102793eb0a9241a7c0f330244a11022 (patch) | |
| tree | 461cee54956b1cd39b7b3ca5d84352995109b4cd | |
| parent | fd102abd81b919f4eeee52fab5e92db25238495c (diff) | |
Revert "Merge pull request #5943 from Maxr1998/device-profile-defaults"
This PR broke direct play in JMP and caused aspect ratio issues in web.
This reverts commit 4c8df4c5bbc7138ec23066b98de17cdb405e9fe0.
| -rw-r--r-- | Emby.Dlna/Didl/DidlBuilder.cs | 26 | ||||
| -rw-r--r-- | Jellyfin.Api/Controllers/UniversalAudioController.cs | 6 | ||||
| -rw-r--r-- | MediaBrowser.Model/Dlna/ContainerProfile.cs | 61 | ||||
| -rw-r--r-- | MediaBrowser.Model/Dlna/DeviceProfile.cs | 108 | ||||
| -rw-r--r-- | MediaBrowser.Model/Dlna/DirectPlayProfile.cs | 8 | ||||
| -rw-r--r-- | MediaBrowser.Model/Dlna/TranscodingProfile.cs | 22 |
6 files changed, 124 insertions, 107 deletions
diff --git a/Emby.Dlna/Didl/DidlBuilder.cs b/Emby.Dlna/Didl/DidlBuilder.cs index 23ce21f12..8b50d47fb 100644 --- a/Emby.Dlna/Didl/DidlBuilder.cs +++ b/Emby.Dlna/Didl/DidlBuilder.cs @@ -974,28 +974,15 @@ namespace Emby.Dlna.Didl return; } - // TODO: Remove these default values - var albumArtUrlInfo = GetImageUrl( - imageInfo, - _profile.MaxAlbumArtWidth ?? 10000, - _profile.MaxAlbumArtHeight ?? 10000, - "jpg"); + var albumartUrlInfo = GetImageUrl(imageInfo, _profile.MaxAlbumArtWidth, _profile.MaxAlbumArtHeight, "jpg"); writer.WriteStartElement("upnp", "albumArtURI", NsUpnp); - if (!string.IsNullOrEmpty(_profile.AlbumArtPn)) - { - writer.WriteAttributeString("dlna", "profileID", NsDlna, _profile.AlbumArtPn); - } - - writer.WriteString(albumArtUrlInfo.url); + writer.WriteAttributeString("dlna", "profileID", NsDlna, _profile.AlbumArtPn); + writer.WriteString(albumartUrlInfo.url); writer.WriteFullEndElement(); - // TODO: Remove these default values - var iconUrlInfo = GetImageUrl( - imageInfo, - _profile.MaxIconWidth ?? 48, - _profile.MaxIconHeight ?? 48, - "jpg"); + // TOOD: Remove these default values + var iconUrlInfo = GetImageUrl(imageInfo, _profile.MaxIconWidth ?? 48, _profile.MaxIconHeight ?? 48, "jpg"); writer.WriteElementString("upnp", "icon", NsUpnp, iconUrlInfo.url); if (!_profile.EnableAlbumArtInDidl) @@ -1219,7 +1206,8 @@ namespace Emby.Dlna.Didl if (width.HasValue && height.HasValue) { - var newSize = DrawingUtils.Resize(new ImageDimensions(width.Value, height.Value), 0, 0, maxWidth, maxHeight); + var newSize = DrawingUtils.Resize( + new ImageDimensions(width.Value, height.Value), 0, 0, maxWidth, maxHeight); width = newSize.Width; height = newSize.Height; diff --git a/Jellyfin.Api/Controllers/UniversalAudioController.cs b/Jellyfin.Api/Controllers/UniversalAudioController.cs index ea9bc675f..9e093fd0f 100644 --- a/Jellyfin.Api/Controllers/UniversalAudioController.cs +++ b/Jellyfin.Api/Controllers/UniversalAudioController.cs @@ -298,9 +298,9 @@ namespace Jellyfin.Api.Controllers { Type = DlnaProfileType.Audio, Context = EncodingContext.Streaming, - Container = transcodingContainer ?? "mp3", - AudioCodec = audioCodec ?? "mp3", - Protocol = transcodingProtocol ?? "http", + Container = transcodingContainer, + AudioCodec = audioCodec, + Protocol = transcodingProtocol, BreakOnNonKeyFrames = breakOnNonKeyFrames ?? false, MaxAudioChannels = transcodingAudioChannels?.ToString(CultureInfo.InvariantCulture) } diff --git a/MediaBrowser.Model/Dlna/ContainerProfile.cs b/MediaBrowser.Model/Dlna/ContainerProfile.cs index c66ec8bc3..56c89d854 100644 --- a/MediaBrowser.Model/Dlna/ContainerProfile.cs +++ b/MediaBrowser.Model/Dlna/ContainerProfile.cs @@ -1,7 +1,7 @@ +#nullable disable #pragma warning disable CS1591 using System; -using System.ComponentModel.DataAnnotations; using System.Linq; using System.Xml.Serialization; @@ -12,12 +12,22 @@ namespace MediaBrowser.Model.Dlna [XmlAttribute("type")] public DlnaProfileType Type { get; set; } - public ProfileCondition[]? Conditions { get; set; } = Array.Empty<ProfileCondition>(); + public ProfileCondition[] Conditions { get; set; } [XmlAttribute("container")] - public string Container { get; set; } = string.Empty; + public string Container { get; set; } - public static string[] SplitValue(string? value) + public ContainerProfile() + { + Conditions = Array.Empty<ProfileCondition>(); + } + + public string[] GetContainers() + { + return SplitValue(Container); + } + + public static string[] SplitValue(string value) { if (string.IsNullOrEmpty(value)) { @@ -27,14 +37,14 @@ namespace MediaBrowser.Model.Dlna return value.Split(',', StringSplitOptions.RemoveEmptyEntries); } - public bool ContainsContainer(string? container) + public bool ContainsContainer(string container) { - var containers = SplitValue(Container); + var containers = GetContainers(); return ContainsContainer(containers, container); } - public static bool ContainsContainer(string? profileContainers, string? inputContainer) + public static bool ContainsContainer(string profileContainers, string inputContainer) { var isNegativeList = false; if (profileContainers != null && profileContainers.StartsWith('-')) @@ -46,29 +56,46 @@ namespace MediaBrowser.Model.Dlna return ContainsContainer(SplitValue(profileContainers), isNegativeList, inputContainer); } - public static bool ContainsContainer(string[]? profileContainers, string? inputContainer) + public static bool ContainsContainer(string[] profileContainers, string inputContainer) { return ContainsContainer(profileContainers, false, inputContainer); } - public static bool ContainsContainer(string[]? profileContainers, bool isNegativeList, string? inputContainer) + public static bool ContainsContainer(string[] profileContainers, bool isNegativeList, string inputContainer) { - if (profileContainers == null || profileContainers.Length == 0) + if (profileContainers.Length == 0) { - return isNegativeList; + return true; } - var allInputContainers = SplitValue(inputContainer); - - foreach (var container in allInputContainers) + if (isNegativeList) { - if (profileContainers.Contains(container, StringComparer.OrdinalIgnoreCase)) + var allInputContainers = SplitValue(inputContainer); + + foreach (var container in allInputContainers) { - return !isNegativeList; + if (profileContainers.Contains(container, StringComparer.OrdinalIgnoreCase)) + { + return false; + } } + + return true; } + else + { + var allInputContainers = SplitValue(inputContainer); - return isNegativeList; + foreach (var container in allInputContainers) + { + if (profileContainers.Contains(container, StringComparer.OrdinalIgnoreCase)) + { + return true; + } + } + + return false; + } } } } diff --git a/MediaBrowser.Model/Dlna/DeviceProfile.cs b/MediaBrowser.Model/Dlna/DeviceProfile.cs index 47d101613..ff5186658 100644 --- a/MediaBrowser.Model/Dlna/DeviceProfile.cs +++ b/MediaBrowser.Model/Dlna/DeviceProfile.cs @@ -1,6 +1,6 @@ +#nullable disable #pragma warning disable CA1819 // Properties should not return arrays using System; -using System.ComponentModel; using System.Linq; using System.Xml.Serialization; using MediaBrowser.Model.MediaInfo; @@ -14,103 +14,120 @@ namespace MediaBrowser.Model.Dlna public class DeviceProfile { /// <summary> + /// Initializes a new instance of the <see cref="DeviceProfile"/> class. + /// </summary> + public DeviceProfile() + { + DirectPlayProfiles = Array.Empty<DirectPlayProfile>(); + TranscodingProfiles = Array.Empty<TranscodingProfile>(); + ResponseProfiles = Array.Empty<ResponseProfile>(); + CodecProfiles = Array.Empty<CodecProfile>(); + ContainerProfiles = Array.Empty<ContainerProfile>(); + SubtitleProfiles = Array.Empty<SubtitleProfile>(); + + XmlRootAttributes = Array.Empty<XmlAttribute>(); + + SupportedMediaTypes = "Audio,Photo,Video"; + MaxStreamingBitrate = 8000000; + MaxStaticBitrate = 8000000; + MusicStreamingTranscodingBitrate = 128000; + } + + /// <summary> /// Gets or sets the Name. /// </summary> - public string? Name { get; set; } + public string Name { get; set; } /// <summary> /// Gets or sets the Id. /// </summary> [XmlIgnore] - public string? Id { get; set; } + public string Id { get; set; } /// <summary> /// Gets or sets the Identification. /// </summary> - public DeviceIdentification? Identification { get; set; } + public DeviceIdentification Identification { get; set; } /// <summary> /// Gets or sets the FriendlyName. /// </summary> - public string? FriendlyName { get; set; } + public string FriendlyName { get; set; } /// <summary> /// Gets or sets the Manufacturer. /// </summary> - public string? Manufacturer { get; set; } + public string Manufacturer { get; set; } /// <summary> /// Gets or sets the ManufacturerUrl. /// </summary> - public string? ManufacturerUrl { get; set; } + public string ManufacturerUrl { get; set; } /// <summary> /// Gets or sets the ModelName. /// </summary> - public string? ModelName { get; set; } + public string ModelName { get; set; } /// <summary> /// Gets or sets the ModelDescription. /// </summary> - public string? ModelDescription { get; set; } + public string ModelDescription { get; set; } /// <summary> /// Gets or sets the ModelNumber. /// </summary> - public string? ModelNumber { get; set; } + public string ModelNumber { get; set; } /// <summary> /// Gets or sets the ModelUrl. /// </summary> - public string? ModelUrl { get; set; } + public string ModelUrl { get; set; } /// <summary> /// Gets or sets the SerialNumber. /// </summary> - public string? SerialNumber { get; set; } + public string SerialNumber { get; set; } /// <summary> /// Gets or sets a value indicating whether EnableAlbumArtInDidl. /// </summary> - [DefaultValue(false)] public bool EnableAlbumArtInDidl { get; set; } /// <summary> /// Gets or sets a value indicating whether EnableSingleAlbumArtLimit. /// </summary> - [DefaultValue(false)] public bool EnableSingleAlbumArtLimit { get; set; } /// <summary> /// Gets or sets a value indicating whether EnableSingleSubtitleLimit. /// </summary> - [DefaultValue(false)] public bool EnableSingleSubtitleLimit { get; set; } /// <summary> /// Gets or sets the SupportedMediaTypes. /// </summary> - public string SupportedMediaTypes { get; set; } = "Audio,Photo,Video"; + public string SupportedMediaTypes { get; set; } /// <summary> /// Gets or sets the UserId. /// </summary> - public string? UserId { get; set; } + public string UserId { get; set; } /// <summary> /// Gets or sets the AlbumArtPn. /// </summary> - public string? AlbumArtPn { get; set; } + public string AlbumArtPn { get; set; } /// <summary> /// Gets or sets the MaxAlbumArtWidth. /// </summary> - public int? MaxAlbumArtWidth { get; set; } + public int MaxAlbumArtWidth { get; set; } /// <summary> /// Gets or sets the MaxAlbumArtHeight. /// </summary> - public int? MaxAlbumArtHeight { get; set; } + public int MaxAlbumArtHeight { get; set; } /// <summary> /// Gets or sets the MaxIconWidth. @@ -125,97 +142,92 @@ namespace MediaBrowser.Model.Dlna /// <summary> /// Gets or sets the MaxStreamingBitrate. /// </summary> - public int? MaxStreamingBitrate { get; set; } = 8000000; + public int? MaxStreamingBitrate { get; set; } /// <summary> /// Gets or sets the MaxStaticBitrate. /// </summary> - public int? MaxStaticBitrate { get; set; } = 8000000; + public int? MaxStaticBitrate { get; set; } /// <summary> /// Gets or sets the MusicStreamingTranscodingBitrate. /// </summary> - public int? MusicStreamingTranscodingBitrate { get; set; } = 128000; + public int? MusicStreamingTranscodingBitrate { get; set; } /// <summary> /// Gets or sets the MaxStaticMusicBitrate. /// </summary> - public int? MaxStaticMusicBitrate { get; set; } = 8000000; + public int? MaxStaticMusicBitrate { get; set; } /// <summary> /// Gets or sets the content of the aggregationFlags element in the urn:schemas-sonycom:av namespace. /// </summary> - public string? SonyAggregationFlags { get; set; } + public string SonyAggregationFlags { get; set; } /// <summary> /// Gets or sets the ProtocolInfo. /// </summary> - public string? ProtocolInfo { get; set; } + public string ProtocolInfo { get; set; } /// <summary> /// Gets or sets the TimelineOffsetSeconds. /// </summary> - [DefaultValue(0)] public int TimelineOffsetSeconds { get; set; } /// <summary> /// Gets or sets a value indicating whether RequiresPlainVideoItems. /// </summary> - [DefaultValue(false)] public bool RequiresPlainVideoItems { get; set; } /// <summary> /// Gets or sets a value indicating whether RequiresPlainFolders. /// </summary> - [DefaultValue(false)] public bool RequiresPlainFolders { get; set; } /// <summary> /// Gets or sets a value indicating whether EnableMSMediaReceiverRegistrar. /// </summary> - [DefaultValue(false)] public bool EnableMSMediaReceiverRegistrar { get; set; } /// <summary> /// Gets or sets a value indicating whether IgnoreTranscodeByteRangeRequests. /// </summary> - [DefaultValue(false)] public bool IgnoreTranscodeByteRangeRequests { get; set; } /// <summary> /// Gets or sets the XmlRootAttributes. /// </summary> - public XmlAttribute[] XmlRootAttributes { get; set; } = Array.Empty<XmlAttribute>(); + public XmlAttribute[] XmlRootAttributes { get; set; } /// <summary> /// Gets or sets the direct play profiles. /// </summary> - public DirectPlayProfile[] DirectPlayProfiles { get; set; } = Array.Empty<DirectPlayProfile>(); + public DirectPlayProfile[] DirectPlayProfiles { get; set; } /// <summary> /// Gets or sets the transcoding profiles. /// </summary> - public TranscodingProfile[] TranscodingProfiles { get; set; } = Array.Empty<TranscodingProfile>(); + public TranscodingProfile[] TranscodingProfiles { get; set; } /// <summary> /// Gets or sets the ContainerProfiles. /// </summary> - public ContainerProfile[] ContainerProfiles { get; set; } = Array.Empty<ContainerProfile>(); + public ContainerProfile[] ContainerProfiles { get; set; } /// <summary> /// Gets or sets the CodecProfiles. /// </summary> - public CodecProfile[] CodecProfiles { get; set; } = Array.Empty<CodecProfile>(); + public CodecProfile[] CodecProfiles { get; set; } /// <summary> /// Gets or sets the ResponseProfiles. /// </summary> - public ResponseProfile[] ResponseProfiles { get; set; } = Array.Empty<ResponseProfile>(); + public ResponseProfile[] ResponseProfiles { get; set; } /// <summary> /// Gets or sets the SubtitleProfiles. /// </summary> - public SubtitleProfile[] SubtitleProfiles { get; set; } = Array.Empty<SubtitleProfile>(); + public SubtitleProfile[] SubtitleProfiles { get; set; } /// <summary> /// The GetSupportedMediaTypes. @@ -232,13 +244,13 @@ namespace MediaBrowser.Model.Dlna /// <param name="container">The container.</param> /// <param name="audioCodec">The audio Codec.</param> /// <returns>A <see cref="TranscodingProfile"/>.</returns> - public TranscodingProfile? GetAudioTranscodingProfile(string? container, string? audioCodec) + public TranscodingProfile GetAudioTranscodingProfile(string container, string audioCodec) { container = (container ?? string.Empty).TrimStart('.'); foreach (var i in TranscodingProfiles) { - if (i.Type != DlnaProfileType.Audio) + if (i.Type != MediaBrowser.Model.Dlna.DlnaProfileType.Audio) { continue; } @@ -266,13 +278,13 @@ namespace MediaBrowser.Model.Dlna /// <param name="audioCodec">The audio Codec.</param> /// <param name="videoCodec">The video Codec.</param> /// <returns>The <see cref="TranscodingProfile"/>.</returns> - public TranscodingProfile? GetVideoTranscodingProfile(string? container, string? audioCodec, string? videoCodec) + public TranscodingProfile GetVideoTranscodingProfile(string container, string audioCodec, string videoCodec) { container = (container ?? string.Empty).TrimStart('.'); foreach (var i in TranscodingProfiles) { - if (i.Type != DlnaProfileType.Video) + if (i.Type != MediaBrowser.Model.Dlna.DlnaProfileType.Video) { continue; } @@ -287,7 +299,7 @@ namespace MediaBrowser.Model.Dlna continue; } - if (!string.Equals(videoCodec, i.VideoCodec, StringComparison.OrdinalIgnoreCase)) + if (!string.Equals(videoCodec, i.VideoCodec ?? string.Empty, StringComparison.OrdinalIgnoreCase)) { continue; } @@ -308,7 +320,7 @@ namespace MediaBrowser.Model.Dlna /// <param name="audioSampleRate">The audio sample rate.</param> /// <param name="audioBitDepth">The audio bit depth.</param> /// <returns>The <see cref="ResponseProfile"/>.</returns> - public ResponseProfile? GetAudioMediaProfile(string container, string? audioCodec, int? audioChannels, int? audioBitrate, int? audioSampleRate, int? audioBitDepth) + public ResponseProfile GetAudioMediaProfile(string container, string audioCodec, int? audioChannels, int? audioBitrate, int? audioSampleRate, int? audioBitDepth) { foreach (var i in ResponseProfiles) { @@ -372,7 +384,7 @@ namespace MediaBrowser.Model.Dlna /// <param name="width">The width.</param> /// <param name="height">The height.</param> /// <returns>The <see cref="ResponseProfile"/>.</returns> - public ResponseProfile? GetImageMediaProfile(string container, int? width, int? height) + public ResponseProfile GetImageMediaProfile(string container, int? width, int? height) { foreach (var i in ResponseProfiles) { @@ -430,10 +442,10 @@ namespace MediaBrowser.Model.Dlna /// <param name="videoCodecTag">The video Codec tag.</param> /// <param name="isAvc">True if Avc.</param> /// <returns>The <see cref="ResponseProfile"/>.</returns> - public ResponseProfile? GetVideoMediaProfile( + public ResponseProfile GetVideoMediaProfile( string container, - string? audioCodec, - string? videoCodec, + string audioCodec, + string videoCodec, int? width, int? height, int? bitDepth, diff --git a/MediaBrowser.Model/Dlna/DirectPlayProfile.cs b/MediaBrowser.Model/Dlna/DirectPlayProfile.cs index fa3ad098f..88cb83991 100644 --- a/MediaBrowser.Model/Dlna/DirectPlayProfile.cs +++ b/MediaBrowser.Model/Dlna/DirectPlayProfile.cs @@ -1,6 +1,6 @@ +#nullable disable #pragma warning disable CS1591 -using System.ComponentModel.DataAnnotations; using System.Xml.Serialization; namespace MediaBrowser.Model.Dlna @@ -8,13 +8,13 @@ namespace MediaBrowser.Model.Dlna public class DirectPlayProfile { [XmlAttribute("container")] - public string? Container { get; set; } + public string Container { get; set; } [XmlAttribute("audioCodec")] - public string? AudioCodec { get; set; } + public string AudioCodec { get; set; } [XmlAttribute("videoCodec")] - public string? VideoCodec { get; set; } + public string VideoCodec { get; set; } [XmlAttribute("type")] public DlnaProfileType Type { get; set; } diff --git a/MediaBrowser.Model/Dlna/TranscodingProfile.cs b/MediaBrowser.Model/Dlna/TranscodingProfile.cs index 214578a85..f05e31047 100644 --- a/MediaBrowser.Model/Dlna/TranscodingProfile.cs +++ b/MediaBrowser.Model/Dlna/TranscodingProfile.cs @@ -1,7 +1,6 @@ +#nullable disable #pragma warning disable CS1591 -using System.ComponentModel; -using System.ComponentModel.DataAnnotations; using System.Xml.Serialization; namespace MediaBrowser.Model.Dlna @@ -9,56 +8,47 @@ namespace MediaBrowser.Model.Dlna public class TranscodingProfile { [XmlAttribute("container")] - public string Container { get; set; } = string.Empty; + public string Container { get; set; } [XmlAttribute("type")] public DlnaProfileType Type { get; set; } [XmlAttribute("videoCodec")] - public string VideoCodec { get; set; } = string.Empty; + public string VideoCodec { get; set; } [XmlAttribute("audioCodec")] - public string AudioCodec { get; set; } = string.Empty; + public string AudioCodec { get; set; } [XmlAttribute("protocol")] - public string Protocol { get; set; } = string.Empty; + public string Protocol { get; set; } - [DefaultValue(false)] [XmlAttribute("estimateContentLength")] public bool EstimateContentLength { get; set; } - [DefaultValue(false)] [XmlAttribute("enableMpegtsM2TsMode")] public bool EnableMpegtsM2TsMode { get; set; } - [DefaultValue(TranscodeSeekInfo.Auto)] [XmlAttribute("transcodeSeekInfo")] public TranscodeSeekInfo TranscodeSeekInfo { get; set; } - [DefaultValue(false)] [XmlAttribute("copyTimestamps")] public bool CopyTimestamps { get; set; } - [DefaultValue(EncodingContext.Streaming)] [XmlAttribute("context")] public EncodingContext Context { get; set; } - [DefaultValue(false)] [XmlAttribute("enableSubtitlesInManifest")] public bool EnableSubtitlesInManifest { get; set; } [XmlAttribute("maxAudioChannels")] - public string? MaxAudioChannels { get; set; } + public string MaxAudioChannels { get; set; } - [DefaultValue(0)] [XmlAttribute("minSegments")] public int MinSegments { get; set; } - [DefaultValue(0)] [XmlAttribute("segmentLength")] public int SegmentLength { get; set; } - [DefaultValue(false)] [XmlAttribute("breakOnNonKeyFrames")] public bool BreakOnNonKeyFrames { get; set; } |
