diff options
Diffstat (limited to 'MediaBrowser.Model')
20 files changed, 215 insertions, 79 deletions
diff --git a/MediaBrowser.Model/Configuration/EncodingOptions.cs b/MediaBrowser.Model/Configuration/EncodingOptions.cs index 84c735f9c..9a192f584 100644 --- a/MediaBrowser.Model/Configuration/EncodingOptions.cs +++ b/MediaBrowser.Model/Configuration/EncodingOptions.cs @@ -28,6 +28,7 @@ public class EncodingOptions VaapiDevice = "/dev/dri/renderD128"; EnableTonemapping = false; EnableVppTonemapping = false; + EnableVideoToolboxTonemapping = false; TonemappingAlgorithm = "bt2390"; TonemappingMode = "auto"; TonemappingRange = "auto"; @@ -50,7 +51,6 @@ public class EncodingOptions EnableHardwareEncoding = true; AllowHevcEncoding = false; AllowAv1Encoding = false; - AllowMjpegEncoding = false; EnableSubtitleExtraction = true; AllowOnDemandMetadataBasedKeyframeExtractionForExtensions = new[] { "mkv" }; HardwareDecodingCodecs = new string[] { "h264", "vc1" }; @@ -147,6 +147,11 @@ public class EncodingOptions public bool EnableVppTonemapping { get; set; } /// <summary> + /// Gets or sets a value indicating whether videotoolbox tonemapping is enabled. + /// </summary> + public bool EnableVideoToolboxTonemapping { get; set; } + + /// <summary> /// Gets or sets the tone-mapping algorithm. /// </summary> public string TonemappingAlgorithm { get; set; } @@ -257,11 +262,6 @@ public class EncodingOptions public bool AllowAv1Encoding { get; set; } /// <summary> - /// Gets or sets a value indicating whether MJPEG encoding is enabled. - /// </summary> - public bool AllowMjpegEncoding { get; set; } - - /// <summary> /// Gets or sets a value indicating whether subtitle extraction is enabled. /// </summary> public bool EnableSubtitleExtraction { get; set; } diff --git a/MediaBrowser.Model/Configuration/LibraryOptions.cs b/MediaBrowser.Model/Configuration/LibraryOptions.cs index 42148a276..e777d5fd8 100644 --- a/MediaBrowser.Model/Configuration/LibraryOptions.cs +++ b/MediaBrowser.Model/Configuration/LibraryOptions.cs @@ -27,6 +27,8 @@ namespace MediaBrowser.Model.Configuration SeasonZeroDisplayName = "Specials"; } + public bool Enabled { get; set; } = true; + public bool EnablePhotos { get; set; } public bool EnableRealtimeMonitor { get; set; } diff --git a/MediaBrowser.Model/Configuration/TrickplayOptions.cs b/MediaBrowser.Model/Configuration/TrickplayOptions.cs index 92c16ee84..a151d3429 100644 --- a/MediaBrowser.Model/Configuration/TrickplayOptions.cs +++ b/MediaBrowser.Model/Configuration/TrickplayOptions.cs @@ -14,6 +14,11 @@ public class TrickplayOptions public bool EnableHwAcceleration { get; set; } = false; /// <summary> + /// Gets or sets a value indicating whether or not to use HW accelerated MJPEG encoding. + /// </summary> + public bool EnableHwEncoding { get; set; } = false; + + /// <summary> /// Gets or sets the behavior used by trickplay provider on library scan/update. /// </summary> public TrickplayScanBehavior ScanBehavior { get; set; } = TrickplayScanBehavior.NonBlocking; diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs index 7d9449b74..55d1c3d51 100644 --- a/MediaBrowser.Model/Dlna/StreamBuilder.cs +++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs @@ -345,7 +345,7 @@ namespace MediaBrowser.Model.Dlna /// <param name="profile">The <see cref="DeviceProfile"/>.</param> /// <param name="type">The <see cref="DlnaProfileType"/>.</param> /// <param name="playProfile">The <see cref="DirectPlayProfile"/> object to get the video stream from.</param> - /// <returns>The the normalized input container.</returns> + /// <returns>The normalized input container.</returns> public static string? NormalizeMediaSourceFormatIntoSingleContainer(string inputContainer, DeviceProfile? profile, DlnaProfileType type, DirectPlayProfile? playProfile = null) { if (string.IsNullOrEmpty(inputContainer)) @@ -557,7 +557,7 @@ namespace MediaBrowser.Model.Dlna private static void SetStreamInfoOptionsFromDirectPlayProfile(MediaOptions options, MediaSourceInfo item, StreamInfo playlistItem, DirectPlayProfile? directPlayProfile) { var container = NormalizeMediaSourceFormatIntoSingleContainer(item.Container, options.Profile, DlnaProfileType.Video, directPlayProfile); - var protocol = MediaStreamProtocol.Http; + var protocol = MediaStreamProtocol.http; item.TranscodingContainer = container; item.TranscodingSubProtocol = protocol; @@ -648,7 +648,7 @@ namespace MediaBrowser.Model.Dlna if (directPlay == PlayMethod.DirectPlay) { - playlistItem.SubProtocol = MediaStreamProtocol.Http; + playlistItem.SubProtocol = MediaStreamProtocol.http; var audioStreamIndex = directPlayInfo.AudioStreamIndex ?? audioStream?.Index; if (audioStreamIndex.HasValue) @@ -803,7 +803,7 @@ namespace MediaBrowser.Model.Dlna var videoCodecs = ContainerProfile.SplitValue(videoCodec); // Enforce HLS video codec restrictions - if (playlistItem.SubProtocol == MediaStreamProtocol.Hls) + if (playlistItem.SubProtocol == MediaStreamProtocol.hls) { videoCodecs = videoCodecs.Where(codec => _supportedHlsVideoCodecs.Contains(codec)).ToArray(); } @@ -840,7 +840,7 @@ namespace MediaBrowser.Model.Dlna var audioCodecs = ContainerProfile.SplitValue(audioCodec); // Enforce HLS audio codec restrictions - if (playlistItem.SubProtocol == MediaStreamProtocol.Hls) + if (playlistItem.SubProtocol == MediaStreamProtocol.hls) { if (string.Equals(playlistItem.Container, "mp4", StringComparison.OrdinalIgnoreCase)) { @@ -1350,7 +1350,7 @@ namespace MediaBrowser.Model.Dlna /// <param name="transcoderSupport">The <see cref="ITranscoderSupport"/>.</param> /// <param name="outputContainer">The output container.</param> /// <param name="transcodingSubProtocol">The subtitle transoding protocol.</param> - /// <returns>The the normalized input container.</returns> + /// <returns>The normalized input container.</returns> public static SubtitleProfile GetSubtitleProfile( MediaSourceInfo mediaSource, MediaStream subtitleStream, @@ -1360,7 +1360,7 @@ namespace MediaBrowser.Model.Dlna string? outputContainer, MediaStreamProtocol? transcodingSubProtocol) { - if (!subtitleStream.IsExternal && (playMethod != PlayMethod.Transcode || transcodingSubProtocol != MediaStreamProtocol.Hls)) + if (!subtitleStream.IsExternal && (playMethod != PlayMethod.Transcode || transcodingSubProtocol != MediaStreamProtocol.hls)) { // Look for supported embedded subs of the same format foreach (var profile in subtitleProfiles) diff --git a/MediaBrowser.Model/Dlna/StreamInfo.cs b/MediaBrowser.Model/Dlna/StreamInfo.cs index cd6d34be2..75e5b6d18 100644 --- a/MediaBrowser.Model/Dlna/StreamInfo.cs +++ b/MediaBrowser.Model/Dlna/StreamInfo.cs @@ -670,7 +670,7 @@ namespace MediaBrowser.Model.Dlna if (MediaType == DlnaProfileType.Audio) { - if (SubProtocol == MediaStreamProtocol.Hls) + if (SubProtocol == MediaStreamProtocol.hls) { return string.Format(CultureInfo.InvariantCulture, "{0}/audio/{1}/master.m3u8?{2}", baseUrl, ItemId, queryString); } @@ -678,7 +678,7 @@ namespace MediaBrowser.Model.Dlna return string.Format(CultureInfo.InvariantCulture, "{0}/audio/{1}/stream{2}?{3}", baseUrl, ItemId, extension, queryString); } - if (SubProtocol == MediaStreamProtocol.Hls) + if (SubProtocol == MediaStreamProtocol.hls) { return string.Format(CultureInfo.InvariantCulture, "{0}/videos/{1}/master.m3u8?{2}", baseUrl, ItemId, queryString); } @@ -716,7 +716,7 @@ namespace MediaBrowser.Model.Dlna long startPositionTicks = item.StartPositionTicks; - if (item.SubProtocol == MediaStreamProtocol.Hls) + if (item.SubProtocol == MediaStreamProtocol.hls) { list.Add(new NameValuePair("StartTimeTicks", string.Empty)); } @@ -778,7 +778,7 @@ namespace MediaBrowser.Model.Dlna list.Add(new NameValuePair("SubtitleCodec", item.SubtitleStreamIndex.HasValue && item.SubtitleDeliveryMethod == SubtitleDeliveryMethod.Embed ? subtitleCodecs : string.Empty)); - if (item.SubProtocol == MediaStreamProtocol.Hls) + if (item.SubProtocol == MediaStreamProtocol.hls) { list.Add(new NameValuePair("SegmentContainer", item.Container ?? string.Empty)); @@ -829,7 +829,7 @@ namespace MediaBrowser.Model.Dlna var list = new List<SubtitleStreamInfo>(); // HLS will preserve timestamps so we can just grab the full subtitle stream - long startPositionTicks = SubProtocol == MediaStreamProtocol.Hls + long startPositionTicks = SubProtocol == MediaStreamProtocol.hls ? 0 : (PlayMethod == PlayMethod.Transcode && !CopyTimestamps ? StartPositionTicks : 0); diff --git a/MediaBrowser.Model/Dlna/TranscodingProfile.cs b/MediaBrowser.Model/Dlna/TranscodingProfile.cs index 8f4f3e2f8..891448c66 100644 --- a/MediaBrowser.Model/Dlna/TranscodingProfile.cs +++ b/MediaBrowser.Model/Dlna/TranscodingProfile.cs @@ -27,7 +27,7 @@ namespace MediaBrowser.Model.Dlna public string AudioCodec { get; set; } = string.Empty; [XmlAttribute("protocol")] - public MediaStreamProtocol Protocol { get; set; } = MediaStreamProtocol.Http; + public MediaStreamProtocol Protocol { get; set; } = MediaStreamProtocol.http; [DefaultValue(false)] [XmlAttribute("estimateContentLength")] diff --git a/MediaBrowser.Model/Dto/BaseItemDto.cs b/MediaBrowser.Model/Dto/BaseItemDto.cs index cfff717db..6d5c84e1d 100644 --- a/MediaBrowser.Model/Dto/BaseItemDto.cs +++ b/MediaBrowser.Model/Dto/BaseItemDto.cs @@ -65,7 +65,7 @@ namespace MediaBrowser.Model.Dto public DateTime? DateLastMediaAdded { get; set; } - public string ExtraType { get; set; } + public ExtraType? ExtraType { get; set; } public int? AirsBeforeSeasonNumber { get; set; } diff --git a/MediaBrowser.Model/Entities/CollectionTypeOptions.cs b/MediaBrowser.Model/Entities/CollectionTypeOptions.cs index e1894d84a..fc4cfdd66 100644 --- a/MediaBrowser.Model/Entities/CollectionTypeOptions.cs +++ b/MediaBrowser.Model/Entities/CollectionTypeOptions.cs @@ -1,16 +1,49 @@ -#pragma warning disable CS1591 +#pragma warning disable SA1300 // Lowercase required for backwards compat. -namespace MediaBrowser.Model.Entities +namespace MediaBrowser.Model.Entities; + +/// <summary> +/// The collection type options. +/// </summary> +public enum CollectionTypeOptions { - public enum CollectionTypeOptions - { - Movies = 0, - TvShows = 1, - Music = 2, - MusicVideos = 3, - HomeVideos = 4, - BoxSets = 5, - Books = 6, - Mixed = 7 - } + /// <summary> + /// Movies. + /// </summary> + movies = 0, + + /// <summary> + /// TV Shows. + /// </summary> + tvshows = 1, + + /// <summary> + /// Music. + /// </summary> + music = 2, + + /// <summary> + /// Music Videos. + /// </summary> + musicvideos = 3, + + /// <summary> + /// Home Videos (and Photos). + /// </summary> + homevideos = 4, + + /// <summary> + /// Box Sets. + /// </summary> + boxsets = 5, + + /// <summary> + /// Books. + /// </summary> + books = 6, + + /// <summary> + /// Mixed Movies and TV Shows. + /// </summary> + mixed = 7 } diff --git a/MediaBrowser.Model/Entities/IHasShares.cs b/MediaBrowser.Model/Entities/IHasShares.cs index b34d1a037..8c4ba6c42 100644 --- a/MediaBrowser.Model/Entities/IHasShares.cs +++ b/MediaBrowser.Model/Entities/IHasShares.cs @@ -1,4 +1,6 @@ -namespace MediaBrowser.Model.Entities; +using System.Collections.Generic; + +namespace MediaBrowser.Model.Entities; /// <summary> /// Interface for access to shares. @@ -8,5 +10,5 @@ public interface IHasShares /// <summary> /// Gets or sets the shares. /// </summary> - Share[] Shares { get; set; } + IReadOnlyList<PlaylistUserPermissions> Shares { get; set; } } diff --git a/MediaBrowser.Model/Entities/MediaStream.cs b/MediaBrowser.Model/Entities/MediaStream.cs index ae4a008bb..0d2d7c696 100644 --- a/MediaBrowser.Model/Entities/MediaStream.cs +++ b/MediaBrowser.Model/Entities/MediaStream.cs @@ -707,34 +707,48 @@ namespace MediaBrowser.Model.Entities return (VideoRange.Unknown, VideoRangeType.Unknown); } - var colorTransfer = ColorTransfer; - - if (string.Equals(colorTransfer, "smpte2084", StringComparison.OrdinalIgnoreCase)) - { - return (VideoRange.HDR, VideoRangeType.HDR10); - } - - if (string.Equals(colorTransfer, "arib-std-b67", StringComparison.OrdinalIgnoreCase)) - { - return (VideoRange.HDR, VideoRangeType.HLG); - } - var codecTag = CodecTag; var dvProfile = DvProfile; var rpuPresentFlag = RpuPresentFlag == 1; var blPresentFlag = BlPresentFlag == 1; var dvBlCompatId = DvBlSignalCompatibilityId; - var isDoViHDRProfile = dvProfile == 5 || dvProfile == 7 || dvProfile == 8; - var isDoViHDRFlag = rpuPresentFlag && blPresentFlag && (dvBlCompatId == 0 || dvBlCompatId == 1 || dvBlCompatId == 4); + var isDoViProfile = dvProfile == 5 || dvProfile == 7 || dvProfile == 8; + var isDoViFlag = rpuPresentFlag && blPresentFlag && (dvBlCompatId == 0 || dvBlCompatId == 1 || dvBlCompatId == 4 || dvBlCompatId == 2 || dvBlCompatId == 6); - if ((isDoViHDRProfile && isDoViHDRFlag) + if ((isDoViProfile && isDoViFlag) || string.Equals(codecTag, "dovi", StringComparison.OrdinalIgnoreCase) || string.Equals(codecTag, "dvh1", StringComparison.OrdinalIgnoreCase) || string.Equals(codecTag, "dvhe", StringComparison.OrdinalIgnoreCase) || string.Equals(codecTag, "dav1", StringComparison.OrdinalIgnoreCase)) { - return (VideoRange.HDR, VideoRangeType.DOVI); + return dvProfile switch + { + 5 => (VideoRange.HDR, VideoRangeType.DOVI), + 8 => dvBlCompatId switch + { + 1 => (VideoRange.HDR, VideoRangeType.DOVIWithHDR10), + 4 => (VideoRange.HDR, VideoRangeType.DOVIWithHLG), + 2 => (VideoRange.SDR, VideoRangeType.DOVIWithSDR), + // While not in Dolby Spec, Profile 8 CCid 6 media are possible to create, and since CCid 6 stems from Bluray (Profile 7 originally) an HDR10 base layer is guaranteed to exist. + 6 => (VideoRange.HDR, VideoRangeType.DOVIWithHDR10), + // There is no other case to handle here as per Dolby Spec. Default case included for completeness and linting purposes + _ => (VideoRange.SDR, VideoRangeType.SDR) + }, + 7 => (VideoRange.HDR, VideoRangeType.HDR10), + _ => (VideoRange.SDR, VideoRangeType.SDR) + }; + } + + var colorTransfer = ColorTransfer; + + if (string.Equals(colorTransfer, "smpte2084", StringComparison.OrdinalIgnoreCase)) + { + return (VideoRange.HDR, VideoRangeType.HDR10); + } + else if (string.Equals(colorTransfer, "arib-std-b67", StringComparison.OrdinalIgnoreCase)) + { + return (VideoRange.HDR, VideoRangeType.HLG); } return (VideoRange.SDR, VideoRangeType.SDR); diff --git a/MediaBrowser.Model/Entities/PlaylistUserPermissions.cs b/MediaBrowser.Model/Entities/PlaylistUserPermissions.cs new file mode 100644 index 000000000..b5f017d2b --- /dev/null +++ b/MediaBrowser.Model/Entities/PlaylistUserPermissions.cs @@ -0,0 +1,30 @@ +using System; + +namespace MediaBrowser.Model.Entities; + +/// <summary> +/// Class to hold data on user permissions for playlists. +/// </summary> +public class PlaylistUserPermissions +{ + /// <summary> + /// Initializes a new instance of the <see cref="PlaylistUserPermissions"/> class. + /// </summary> + /// <param name="userId">The user id.</param> + /// <param name="canEdit">Edit permission.</param> + public PlaylistUserPermissions(Guid userId, bool canEdit = false) + { + UserId = userId; + CanEdit = canEdit; + } + + /// <summary> + /// Gets or sets the user id. + /// </summary> + public Guid UserId { get; set; } + + /// <summary> + /// Gets or sets a value indicating whether the user has edit permissions. + /// </summary> + public bool CanEdit { get; set; } +} diff --git a/MediaBrowser.Model/Entities/Share.cs b/MediaBrowser.Model/Entities/Share.cs deleted file mode 100644 index 186aad189..000000000 --- a/MediaBrowser.Model/Entities/Share.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace MediaBrowser.Model.Entities; - -/// <summary> -/// Class to hold data on sharing permissions. -/// </summary> -public class Share -{ - /// <summary> - /// Gets or sets the user id. - /// </summary> - public string? UserId { get; set; } - - /// <summary> - /// Gets or sets a value indicating whether the user has edit permissions. - /// </summary> - public bool CanEdit { get; set; } -} diff --git a/MediaBrowser.Model/Entities/VirtualFolderInfo.cs b/MediaBrowser.Model/Entities/VirtualFolderInfo.cs index 2b2bda12c..89bb72c3c 100644 --- a/MediaBrowser.Model/Entities/VirtualFolderInfo.cs +++ b/MediaBrowser.Model/Entities/VirtualFolderInfo.cs @@ -37,7 +37,6 @@ namespace MediaBrowser.Model.Entities /// Gets or sets the type of the collection. /// </summary> /// <value>The type of the collection.</value> - [JsonConverter(typeof(JsonLowerCaseConverter<CollectionTypeOptions?>))] public CollectionTypeOptions? CollectionType { get; set; } public LibraryOptions LibraryOptions { get; set; } diff --git a/MediaBrowser.Model/Playlists/PlaylistCreationRequest.cs b/MediaBrowser.Model/Playlists/PlaylistCreationRequest.cs index 62d496d04..ec54b1afd 100644 --- a/MediaBrowser.Model/Playlists/PlaylistCreationRequest.cs +++ b/MediaBrowser.Model/Playlists/PlaylistCreationRequest.cs @@ -18,7 +18,7 @@ public class PlaylistCreationRequest /// <summary> /// Gets or sets the list of items. /// </summary> - public IReadOnlyList<Guid> ItemIdList { get; set; } = Array.Empty<Guid>(); + public IReadOnlyList<Guid> ItemIdList { get; set; } = []; /// <summary> /// Gets or sets the media type. @@ -31,7 +31,12 @@ public class PlaylistCreationRequest public Guid UserId { get; set; } /// <summary> - /// Gets or sets the shares. + /// Gets or sets the user permissions. /// </summary> - public Share[]? Shares { get; set; } + public IReadOnlyList<PlaylistUserPermissions> Users { get; set; } = []; + + /// <summary> + /// Gets or sets a value indicating whether the playlist is public. + /// </summary> + public bool? Public { get; set; } = true; } diff --git a/MediaBrowser.Model/Playlists/PlaylistUpdateRequest.cs b/MediaBrowser.Model/Playlists/PlaylistUpdateRequest.cs new file mode 100644 index 000000000..db290bbdb --- /dev/null +++ b/MediaBrowser.Model/Playlists/PlaylistUpdateRequest.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using MediaBrowser.Model.Entities; + +namespace MediaBrowser.Model.Playlists; + +/// <summary> +/// A playlist update request. +/// </summary> +public class PlaylistUpdateRequest +{ + /// <summary> + /// Gets or sets the id of the playlist. + /// </summary> + public Guid Id { get; set; } + + /// <summary> + /// Gets or sets the id of the user updating the playlist. + /// </summary> + public Guid UserId { get; set; } + + /// <summary> + /// Gets or sets the name of the playlist. + /// </summary> + public string? Name { get; set; } + + /// <summary> + /// Gets or sets item ids to add to the playlist. + /// </summary> + public IReadOnlyList<Guid>? Ids { get; set; } + + /// <summary> + /// Gets or sets the playlist users. + /// </summary> + public IReadOnlyList<PlaylistUserPermissions>? Users { get; set; } + + /// <summary> + /// Gets or sets a value indicating whether the playlist is public. + /// </summary> + public bool? Public { get; set; } +} diff --git a/MediaBrowser.Model/Playlists/PlaylistUserUpdateRequest.cs b/MediaBrowser.Model/Playlists/PlaylistUserUpdateRequest.cs new file mode 100644 index 000000000..1840efdf3 --- /dev/null +++ b/MediaBrowser.Model/Playlists/PlaylistUserUpdateRequest.cs @@ -0,0 +1,24 @@ +using System; + +namespace MediaBrowser.Model.Playlists; + +/// <summary> +/// A playlist user update request. +/// </summary> +public class PlaylistUserUpdateRequest +{ + /// <summary> + /// Gets or sets the id of the playlist. + /// </summary> + public Guid Id { get; set; } + + /// <summary> + /// Gets or sets the id of the updated user. + /// </summary> + public Guid UserId { get; set; } + + /// <summary> + /// Gets or sets a value indicating whether the user can edit the playlist. + /// </summary> + public bool? CanEdit { get; set; } +} diff --git a/MediaBrowser.Model/Search/SearchQuery.cs b/MediaBrowser.Model/Search/SearchQuery.cs index b91fd8657..8126b8bfc 100644 --- a/MediaBrowser.Model/Search/SearchQuery.cs +++ b/MediaBrowser.Model/Search/SearchQuery.cs @@ -1,4 +1,3 @@ -#nullable disable #pragma warning disable CS1591 using System; @@ -31,7 +30,7 @@ namespace MediaBrowser.Model.Search /// Gets or sets the search term. /// </summary> /// <value>The search term.</value> - public string SearchTerm { get; set; } + public required string SearchTerm { get; set; } /// <summary> /// Gets or sets the start index. Used for paging. diff --git a/MediaBrowser.Model/Session/ClientCapabilities.cs b/MediaBrowser.Model/Session/ClientCapabilities.cs index 5f51fb21c..fc1f24ae1 100644 --- a/MediaBrowser.Model/Session/ClientCapabilities.cs +++ b/MediaBrowser.Model/Session/ClientCapabilities.cs @@ -35,11 +35,11 @@ namespace MediaBrowser.Model.Session // TODO: Remove after 10.9 [Obsolete("Unused")] [DefaultValue(false)] - public bool? SupportsContentUploading { get; set; } + public bool? SupportsContentUploading { get; set; } = false; // TODO: Remove after 10.9 [Obsolete("Unused")] [DefaultValue(false)] - public bool? SupportsSync { get; set; } + public bool? SupportsSync { get; set; } = false; } } diff --git a/MediaBrowser.Model/System/LogFile.cs b/MediaBrowser.Model/System/LogFile.cs index aec910c92..d4eb6bafc 100644 --- a/MediaBrowser.Model/System/LogFile.cs +++ b/MediaBrowser.Model/System/LogFile.cs @@ -1,4 +1,3 @@ -#nullable disable #pragma warning disable CS1591 using System; @@ -29,6 +28,6 @@ namespace MediaBrowser.Model.System /// Gets or sets the name. /// </summary> /// <value>The name.</value> - public string Name { get; set; } + public required string Name { get; set; } } } diff --git a/MediaBrowser.Model/Tasks/ITaskTrigger.cs b/MediaBrowser.Model/Tasks/ITaskTrigger.cs index 0536f4ef7..bc8438855 100644 --- a/MediaBrowser.Model/Tasks/ITaskTrigger.cs +++ b/MediaBrowser.Model/Tasks/ITaskTrigger.cs @@ -24,7 +24,7 @@ namespace MediaBrowser.Model.Tasks /// <param name="lastResult">Result of the last run triggered task.</param> /// <param name="logger">The <see cref="ILogger"/>.</param> /// <param name="taskName">The name of the task.</param> - /// <param name="isApplicationStartup">Whether or not this is is fired during startup.</param> + /// <param name="isApplicationStartup">Whether or not this is fired during startup.</param> void Start(TaskResult? lastResult, ILogger logger, string taskName, bool isApplicationStartup); /// <summary> |
