commit
43d91a392f
|
@ -488,7 +488,8 @@ namespace Emby.Dlna.Didl
|
|||
var mediaProfile = _profile.GetAudioMediaProfile(streamInfo.Container,
|
||||
streamInfo.TargetAudioCodec,
|
||||
targetChannels,
|
||||
targetAudioBitrate);
|
||||
targetAudioBitrate,
|
||||
targetSampleRate);
|
||||
|
||||
var filename = url.Substring(0, url.IndexOf('?'));
|
||||
|
||||
|
|
|
@ -124,7 +124,7 @@ namespace Emby.Server.Implementations.Data
|
|||
|
||||
if (CacheSize.HasValue)
|
||||
{
|
||||
queries.Add("PRAGMA cache_size=-" + CacheSize.Value.ToString(CultureInfo.InvariantCulture));
|
||||
queries.Add("PRAGMA cache_size=" + CacheSize.Value.ToString(CultureInfo.InvariantCulture));
|
||||
}
|
||||
|
||||
if (EnableTempStoreMemory)
|
||||
|
@ -132,12 +132,6 @@ namespace Emby.Server.Implementations.Data
|
|||
queries.Add("PRAGMA temp_store = memory");
|
||||
}
|
||||
|
||||
//var cacheSize = CacheSize;
|
||||
//if (cacheSize.HasValue)
|
||||
//{
|
||||
|
||||
//}
|
||||
|
||||
////foreach (var query in queries)
|
||||
////{
|
||||
//// db.Execute(query);
|
||||
|
|
|
@ -142,7 +142,7 @@ namespace Emby.Server.Implementations.Data
|
|||
= "create table if not exists mediastreams (ItemId GUID, StreamIndex INT, StreamType TEXT, Codec TEXT, Language TEXT, ChannelLayout TEXT, Profile TEXT, AspectRatio TEXT, Path TEXT, IsInterlaced BIT, BitRate INT NULL, Channels INT NULL, SampleRate INT NULL, IsDefault BIT, IsForced BIT, IsExternal BIT, Height INT NULL, Width INT NULL, AverageFrameRate FLOAT NULL, RealFrameRate FLOAT NULL, Level FLOAT NULL, PixelFormat TEXT, BitDepth INT NULL, IsAnamorphic BIT NULL, RefFrames INT NULL, CodecTag TEXT NULL, Comment TEXT NULL, NalLengthSize TEXT NULL, IsAvc BIT NULL, Title TEXT NULL, TimeBase TEXT NULL, CodecTimeBase TEXT NULL, PRIMARY KEY (ItemId, StreamIndex))";
|
||||
|
||||
string[] queries = {
|
||||
"PRAGMA locking_mode=NORMAL",
|
||||
"PRAGMA locking_mode=EXCLUSIVE",
|
||||
|
||||
"create table if not exists TypedBaseItems (guid GUID primary key NOT NULL, type TEXT NOT NULL, data BLOB NULL, ParentId GUID NULL, Path TEXT NULL)",
|
||||
|
||||
|
@ -1258,22 +1258,6 @@ namespace Emby.Server.Implementations.Data
|
|||
{
|
||||
if (_config.Configuration.SkipDeserializationForBasicTypes)
|
||||
{
|
||||
if (type == typeof(MusicGenre))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (type == typeof(GameGenre))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (type == typeof(Genre))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (type == typeof(Studio))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (type == typeof(Person))
|
||||
{
|
||||
return false;
|
||||
|
@ -1282,26 +1266,10 @@ namespace Emby.Server.Implementations.Data
|
|||
{
|
||||
return false;
|
||||
}
|
||||
if (type == typeof(ManualCollectionsFolder))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (type == typeof(CameraUploadsFolder))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (type == typeof(PlaylistsFolder))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (type == typeof(UserRootFolder))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (type == typeof(PhotoAlbum))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (type == typeof(Season))
|
||||
{
|
||||
return false;
|
||||
|
@ -1312,6 +1280,41 @@ namespace Emby.Server.Implementations.Data
|
|||
}
|
||||
}
|
||||
|
||||
if (type == typeof(MusicGenre))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (type == typeof(GameGenre))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (type == typeof(Genre))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (type == typeof(Studio))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (type == typeof(ManualCollectionsFolder))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (type == typeof(CameraUploadsFolder))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (type == typeof(PlaylistsFolder))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (type == typeof(PhotoAlbum))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (type == typeof(Year))
|
||||
{
|
||||
return false;
|
||||
|
|
|
@ -883,15 +883,6 @@ namespace Emby.Server.Implementations.Dto
|
|||
dto.AspectRatio = hasAspectRatio.AspectRatio;
|
||||
}
|
||||
|
||||
if (fields.Contains(ItemFields.AwardSummary))
|
||||
{
|
||||
var hasAwards = item as IHasAwards;
|
||||
if (hasAwards != null)
|
||||
{
|
||||
dto.AwardSummary = hasAwards.AwardSummary;
|
||||
}
|
||||
}
|
||||
|
||||
var backdropLimit = options.GetImageLimit(ImageType.Backdrop);
|
||||
if (backdropLimit > 0)
|
||||
{
|
||||
|
|
|
@ -335,12 +335,6 @@ namespace MediaBrowser.Api
|
|||
video.Video3DFormat = request.Video3DFormat;
|
||||
}
|
||||
|
||||
var hasAwards = item as IHasAwards;
|
||||
if (hasAwards != null)
|
||||
{
|
||||
hasAwards.AwardSummary = request.AwardSummary;
|
||||
}
|
||||
|
||||
var game = item as Game;
|
||||
|
||||
if (game != null)
|
||||
|
|
|
@ -866,7 +866,7 @@ namespace MediaBrowser.Api.Playback
|
|||
var videoCodec = state.ActualOutputVideoCodec;
|
||||
|
||||
var mediaProfile = state.VideoRequest == null ?
|
||||
profile.GetAudioMediaProfile(state.OutputContainer, audioCodec, state.OutputAudioChannels, state.OutputAudioBitrate) :
|
||||
profile.GetAudioMediaProfile(state.OutputContainer, audioCodec, state.OutputAudioChannels, state.OutputAudioBitrate, state.OutputAudioSampleRate) :
|
||||
profile.GetVideoMediaProfile(state.OutputContainer,
|
||||
audioCodec,
|
||||
videoCodec,
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
|
||||
namespace MediaBrowser.Controller.Entities
|
||||
{
|
||||
/// <summary>
|
||||
/// Interface IHasAwards
|
||||
/// </summary>
|
||||
public interface IHasAwards
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets or sets the awards summary.
|
||||
/// </summary>
|
||||
/// <value>The awards summary.</value>
|
||||
string AwardSummary { get; set; }
|
||||
}
|
||||
}
|
|
@ -17,7 +17,7 @@ namespace MediaBrowser.Controller.Entities.Movies
|
|||
/// <summary>
|
||||
/// Class Movie
|
||||
/// </summary>
|
||||
public class Movie : Video, IHasSpecialFeatures, IHasTrailers, IHasAwards, IHasLookupInfo<MovieInfo>, ISupportsBoxSetGrouping
|
||||
public class Movie : Video, IHasSpecialFeatures, IHasTrailers, IHasLookupInfo<MovieInfo>, ISupportsBoxSetGrouping
|
||||
{
|
||||
public List<Guid> SpecialFeatureIds { get; set; }
|
||||
|
||||
|
@ -29,8 +29,6 @@ namespace MediaBrowser.Controller.Entities.Movies
|
|||
RemoteTrailerIds = new List<Guid>();
|
||||
}
|
||||
|
||||
public string AwardSummary { get; set; }
|
||||
|
||||
public List<Guid> LocalTrailerIds { get; set; }
|
||||
public List<Guid> RemoteTrailerIds { get; set; }
|
||||
|
||||
|
|
|
@ -131,7 +131,6 @@
|
|||
<Compile Include="Entities\ItemImageInfo.cs" />
|
||||
<Compile Include="Entities\LinkedChild.cs" />
|
||||
<Compile Include="Entities\MusicVideo.cs" />
|
||||
<Compile Include="Entities\IHasAwards.cs" />
|
||||
<Compile Include="Entities\PeopleHelper.cs" />
|
||||
<Compile Include="Entities\Photo.cs" />
|
||||
<Compile Include="Entities\PhotoAlbum.cs" />
|
||||
|
|
|
@ -1749,7 +1749,8 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|||
{
|
||||
if (!string.IsNullOrWhiteSpace(encodingOptions.HardwareAccelerationType))
|
||||
{
|
||||
return "-hwaccel auto";
|
||||
// causing unpredictable results
|
||||
//return "-hwaccel auto";
|
||||
}
|
||||
|
||||
if (string.Equals(encodingOptions.HardwareAccelerationType, "qsv", StringComparison.OrdinalIgnoreCase))
|
||||
|
|
|
@ -207,21 +207,6 @@ namespace MediaBrowser.LocalMetadata.Parsers
|
|||
break;
|
||||
}
|
||||
|
||||
case "AwardSummary":
|
||||
{
|
||||
var text = reader.ReadElementContentAsString();
|
||||
var hasAwards = item as IHasAwards;
|
||||
if (hasAwards != null)
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(text))
|
||||
{
|
||||
hasAwards.AwardSummary = text;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case "SortTitle":
|
||||
{
|
||||
var val = reader.ReadElementContentAsString();
|
||||
|
|
|
@ -35,7 +35,6 @@ namespace MediaBrowser.LocalMetadata.Savers
|
|||
"AspectRatio",
|
||||
"AudioDbAlbumId",
|
||||
"AudioDbArtistId",
|
||||
"AwardSummary",
|
||||
"BirthDate",
|
||||
|
||||
// Deprecated. No longer saving in this field.
|
||||
|
@ -403,12 +402,6 @@ namespace MediaBrowser.LocalMetadata.Savers
|
|||
writer.WriteElementString("DisplayOrder", hasDisplayOrder.DisplayOrder);
|
||||
}
|
||||
|
||||
var hasAwards = item as IHasAwards;
|
||||
if (hasAwards != null && !string.IsNullOrEmpty(hasAwards.AwardSummary))
|
||||
{
|
||||
writer.WriteElementString("AwardSummary", hasAwards.AwardSummary);
|
||||
}
|
||||
|
||||
if (item.CommunityRating.HasValue)
|
||||
{
|
||||
writer.WriteElementString("Rating", item.CommunityRating.Value.ToString(UsCulture));
|
||||
|
|
|
@ -263,7 +263,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
|
|||
var outputContainer = state.Options.OutputContainer;
|
||||
|
||||
var mediaProfile = state.IsVideoRequest ?
|
||||
profile.GetAudioMediaProfile(outputContainer, audioCodec, state.OutputAudioChannels, state.OutputAudioBitrate) :
|
||||
profile.GetAudioMediaProfile(outputContainer, audioCodec, state.OutputAudioChannels, state.OutputAudioBitrate, state.OutputAudioSampleRate) :
|
||||
profile.GetVideoMediaProfile(outputContainer,
|
||||
audioCodec,
|
||||
videoCodec,
|
||||
|
|
|
@ -76,7 +76,7 @@ namespace MediaBrowser.Model.Dlna
|
|||
}
|
||||
}
|
||||
|
||||
public bool IsAudioConditionSatisfied(ProfileCondition condition, int? audioChannels, int? audioBitrate)
|
||||
public bool IsAudioConditionSatisfied(ProfileCondition condition, int? audioChannels, int? audioBitrate, int? audioSampleRate)
|
||||
{
|
||||
switch (condition.Property)
|
||||
{
|
||||
|
@ -84,6 +84,8 @@ namespace MediaBrowser.Model.Dlna
|
|||
return IsConditionSatisfied(condition, audioBitrate);
|
||||
case ProfileConditionValue.AudioChannels:
|
||||
return IsConditionSatisfied(condition, audioChannels);
|
||||
case ProfileConditionValue.AudioSampleRate:
|
||||
return IsConditionSatisfied(condition, audioSampleRate);
|
||||
default:
|
||||
throw new ArgumentException("Unexpected condition on audio file: " + condition.Property);
|
||||
}
|
||||
|
@ -92,6 +94,7 @@ namespace MediaBrowser.Model.Dlna
|
|||
public bool IsVideoAudioConditionSatisfied(ProfileCondition condition,
|
||||
int? audioChannels,
|
||||
int? audioBitrate,
|
||||
int? audioSampleRate,
|
||||
string audioProfile,
|
||||
bool? isSecondaryTrack)
|
||||
{
|
||||
|
@ -105,6 +108,8 @@ namespace MediaBrowser.Model.Dlna
|
|||
return IsConditionSatisfied(condition, audioChannels);
|
||||
case ProfileConditionValue.IsSecondaryAudio:
|
||||
return IsConditionSatisfied(condition, isSecondaryTrack);
|
||||
case ProfileConditionValue.AudioSampleRate:
|
||||
return IsConditionSatisfied(condition, audioSampleRate);
|
||||
default:
|
||||
throw new ArgumentException("Unexpected condition on audio file: " + condition.Property);
|
||||
}
|
||||
|
|
|
@ -85,7 +85,8 @@ namespace MediaBrowser.Model.Dlna
|
|||
ResponseProfile mediaProfile = _profile.GetAudioMediaProfile(container,
|
||||
audioCodec,
|
||||
audioChannels,
|
||||
audioBitrate);
|
||||
audioBitrate,
|
||||
audioSampleRate);
|
||||
|
||||
string orgPn = mediaProfile == null ? null : mediaProfile.OrgPn;
|
||||
|
||||
|
|
|
@ -185,7 +185,7 @@ namespace MediaBrowser.Model.Dlna
|
|||
return null;
|
||||
}
|
||||
|
||||
public ResponseProfile GetAudioMediaProfile(string container, string audioCodec, int? audioChannels, int? audioBitrate)
|
||||
public ResponseProfile GetAudioMediaProfile(string container, string audioCodec, int? audioChannels, int? audioBitrate, int? audioSampleRate)
|
||||
{
|
||||
container = StringHelper.TrimStart(container ?? string.Empty, '.');
|
||||
|
||||
|
@ -213,7 +213,7 @@ namespace MediaBrowser.Model.Dlna
|
|||
var anyOff = false;
|
||||
foreach (ProfileCondition c in i.Conditions)
|
||||
{
|
||||
if (!conditionProcessor.IsAudioConditionSatisfied(GetModelProfileCondition(c), audioChannels, audioBitrate))
|
||||
if (!conditionProcessor.IsAudioConditionSatisfied(GetModelProfileCondition(c), audioChannels, audioBitrate, audioSampleRate))
|
||||
{
|
||||
anyOff = true;
|
||||
break;
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
IsSecondaryAudio = 18,
|
||||
VideoCodecTag = 19,
|
||||
IsAvc = 20,
|
||||
IsInterlaced = 21
|
||||
IsInterlaced = 21,
|
||||
AudioSampleRate = 22
|
||||
}
|
||||
}
|
|
@ -139,6 +139,7 @@ namespace MediaBrowser.Model.Dlna
|
|||
|
||||
int? inputAudioChannels = audioStream == null ? null : audioStream.Channels;
|
||||
int? inputAudioBitrate = audioStream == null ? null : audioStream.BitDepth;
|
||||
int? inputAudioSampleRate = audioStream == null ? null : audioStream.SampleRate;
|
||||
|
||||
if (directPlayMethods.Count > 0)
|
||||
{
|
||||
|
@ -155,7 +156,7 @@ namespace MediaBrowser.Model.Dlna
|
|||
bool applyConditions = true;
|
||||
foreach (ProfileCondition applyCondition in i.ApplyConditions)
|
||||
{
|
||||
if (!conditionProcessor.IsAudioConditionSatisfied(applyCondition, inputAudioChannels, inputAudioBitrate))
|
||||
if (!conditionProcessor.IsAudioConditionSatisfied(applyCondition, inputAudioChannels, inputAudioBitrate, inputAudioSampleRate))
|
||||
{
|
||||
LogConditionFailure(options.Profile, "AudioCodecProfile", applyCondition, item);
|
||||
applyConditions = false;
|
||||
|
@ -176,7 +177,7 @@ namespace MediaBrowser.Model.Dlna
|
|||
bool all = true;
|
||||
foreach (ProfileCondition c in conditions)
|
||||
{
|
||||
if (!conditionProcessor.IsAudioConditionSatisfied(c, inputAudioChannels, inputAudioBitrate))
|
||||
if (!conditionProcessor.IsAudioConditionSatisfied(c, inputAudioChannels, inputAudioBitrate, inputAudioSampleRate))
|
||||
{
|
||||
LogConditionFailure(options.Profile, "AudioCodecProfile", c, item);
|
||||
all = false;
|
||||
|
@ -251,7 +252,7 @@ namespace MediaBrowser.Model.Dlna
|
|||
bool applyConditions = true;
|
||||
foreach (ProfileCondition applyCondition in i.ApplyConditions)
|
||||
{
|
||||
if (!conditionProcessor.IsAudioConditionSatisfied(applyCondition, inputAudioChannels, inputAudioBitrate))
|
||||
if (!conditionProcessor.IsAudioConditionSatisfied(applyCondition, inputAudioChannels, inputAudioBitrate, inputAudioSampleRate))
|
||||
{
|
||||
LogConditionFailure(options.Profile, "AudioCodecProfile", applyCondition, item);
|
||||
applyConditions = false;
|
||||
|
@ -519,8 +520,9 @@ namespace MediaBrowser.Model.Dlna
|
|||
int? inputAudioBitrate = audioStream == null ? null : audioStream.BitRate;
|
||||
int? audioChannels = audioStream == null ? null : audioStream.Channels;
|
||||
string audioProfile = audioStream == null ? null : audioStream.Profile;
|
||||
int? inputAudioSampleRate = audioStream == null ? null : audioStream.SampleRate;
|
||||
|
||||
if (!conditionProcessor.IsVideoAudioConditionSatisfied(applyCondition, audioChannels, inputAudioBitrate, audioProfile, isSecondaryAudio))
|
||||
if (!conditionProcessor.IsVideoAudioConditionSatisfied(applyCondition, audioChannels, inputAudioBitrate, inputAudioSampleRate, audioProfile, isSecondaryAudio))
|
||||
{
|
||||
LogConditionFailure(options.Profile, "AudioCodecProfile", applyCondition, item);
|
||||
applyConditions = false;
|
||||
|
@ -752,6 +754,7 @@ namespace MediaBrowser.Model.Dlna
|
|||
int? audioBitrate = audioStream == null ? null : audioStream.BitRate;
|
||||
int? audioChannels = audioStream == null ? null : audioStream.Channels;
|
||||
string audioProfile = audioStream == null ? null : audioStream.Profile;
|
||||
int? audioSampleRate = audioStream == null ? null : audioStream.SampleRate;
|
||||
|
||||
TransportStreamTimestamp? timestamp = videoStream == null ? TransportStreamTimestamp.None : mediaSource.Timestamp;
|
||||
int? packetLength = videoStream == null ? null : videoStream.PacketLength;
|
||||
|
@ -841,7 +844,7 @@ namespace MediaBrowser.Model.Dlna
|
|||
bool applyConditions = true;
|
||||
foreach (ProfileCondition applyCondition in i.ApplyConditions)
|
||||
{
|
||||
if (!conditionProcessor.IsVideoAudioConditionSatisfied(applyCondition, audioChannels, audioBitrate, audioProfile, isSecondaryAudio))
|
||||
if (!conditionProcessor.IsVideoAudioConditionSatisfied(applyCondition, audioChannels, audioBitrate, audioSampleRate, audioProfile, isSecondaryAudio))
|
||||
{
|
||||
LogConditionFailure(profile, "VideoAudioCodecProfile", applyCondition, mediaSource);
|
||||
applyConditions = false;
|
||||
|
@ -861,7 +864,7 @@ namespace MediaBrowser.Model.Dlna
|
|||
|
||||
foreach (ProfileCondition i in conditions)
|
||||
{
|
||||
if (!conditionProcessor.IsVideoAudioConditionSatisfied(i, audioChannels, audioBitrate, audioProfile, isSecondaryAudio))
|
||||
if (!conditionProcessor.IsVideoAudioConditionSatisfied(i, audioChannels, audioBitrate, audioSampleRate, audioProfile, isSecondaryAudio))
|
||||
{
|
||||
LogConditionFailure(profile, "VideoAudioCodecProfile", i, mediaSource);
|
||||
|
||||
|
|
|
@ -79,8 +79,6 @@ namespace MediaBrowser.Model.Dto
|
|||
public string PreferredMetadataLanguage { get; set; }
|
||||
public string PreferredMetadataCountryCode { get; set; }
|
||||
|
||||
public string AwardSummary { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether [supports synchronize].
|
||||
/// </summary>
|
||||
|
|
|
@ -15,11 +15,6 @@
|
|||
/// </summary>
|
||||
AlternateEpisodeNumbers,
|
||||
|
||||
/// <summary>
|
||||
/// The awards summary
|
||||
/// </summary>
|
||||
AwardSummary,
|
||||
|
||||
/// <summary>
|
||||
/// The can delete
|
||||
/// </summary>
|
||||
|
|
|
@ -198,7 +198,6 @@ namespace MediaBrowser.Providers.Manager
|
|||
|
||||
MergeAlbumArtist(source, target, lockedFields, replaceData);
|
||||
MergeCriticRating(source, target, lockedFields, replaceData);
|
||||
MergeAwards(source, target, lockedFields, replaceData);
|
||||
MergeTrailers(source, target, lockedFields, replaceData);
|
||||
MergeVideoInfo(source, target, lockedFields, replaceData);
|
||||
|
||||
|
@ -273,20 +272,6 @@ namespace MediaBrowser.Providers.Manager
|
|||
}
|
||||
}
|
||||
|
||||
private static void MergeAwards(BaseItem source, BaseItem target, List<MetadataFields> lockedFields, bool replaceData)
|
||||
{
|
||||
var sourceCast = source as IHasAwards;
|
||||
var targetCast = target as IHasAwards;
|
||||
|
||||
if (sourceCast != null && targetCast != null)
|
||||
{
|
||||
if (replaceData || string.IsNullOrEmpty(targetCast.AwardSummary))
|
||||
{
|
||||
targetCast.AwardSummary = sourceCast.AwardSummary;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void MergeCriticRating(BaseItem source, BaseItem target, List<MetadataFields> lockedFields, bool replaceData)
|
||||
{
|
||||
if (replaceData || !target.CriticRating.HasValue)
|
||||
|
|
|
@ -406,12 +406,6 @@ namespace MediaBrowser.Providers.Omdb
|
|||
}
|
||||
}
|
||||
|
||||
var hasAwards = item as IHasAwards;
|
||||
if (hasAwards != null && !string.IsNullOrEmpty(result.Awards))
|
||||
{
|
||||
hasAwards.AwardSummary = WebUtility.HtmlDecode(result.Awards);
|
||||
}
|
||||
|
||||
if (isConfiguredForEnglish)
|
||||
{
|
||||
// Omdb is currently english only, so for other languages skip this and let secondary providers fill it in
|
||||
|
|
|
@ -37,8 +37,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DvdLib", "DvdLib\DvdLib.csp
|
|||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Dlna", "Emby.Dlna\Emby.Dlna.csproj", "{805844AB-E92F-45E6-9D99-4F6D48D129A5}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Drawing.Net", "Emby.Drawing.Net\Emby.Drawing.Net.csproj", "{C97A239E-A96C-4D64-A844-CCF8CC30AECB}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Photos", "Emby.Photos\Emby.Photos.csproj", "{89AB4548-770D-41FD-A891-8DAFF44F452C}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Server.Implementations", "Emby.Server.Implementations\Emby.Server.Implementations.csproj", "{E383961B-9356-4D5D-8233-9A1079D03055}"
|
||||
|
@ -47,6 +45,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RSSDP", "RSSDP\RSSDP.csproj
|
|||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SocketHttpListener.Portable", "SocketHttpListener.Portable\SocketHttpListener.Portable.csproj", "{4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Drawing.Skia", "Emby.Drawing.Skia\Emby.Drawing.Skia.csproj", "{2312DA6D-FF86-4597-9777-BCEEC32D96DD}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
AppStore|Any CPU = AppStore|Any CPU
|
||||
|
@ -398,26 +398,6 @@ Global
|
|||
{805844AB-E92F-45E6-9D99-4F6D48D129A5}.Signed|Any CPU.Build.0 = Release|Any CPU
|
||||
{805844AB-E92F-45E6-9D99-4F6D48D129A5}.Signed|x86.ActiveCfg = Release|Any CPU
|
||||
{805844AB-E92F-45E6-9D99-4F6D48D129A5}.Signed|x86.Build.0 = Release|Any CPU
|
||||
{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.AppStore|Any CPU.Build.0 = Release|Any CPU
|
||||
{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.AppStore|x86.ActiveCfg = Release|Any CPU
|
||||
{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.AppStore|x86.Build.0 = Release|Any CPU
|
||||
{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Release Mono|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Release Mono|Any CPU.Build.0 = Release|Any CPU
|
||||
{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Release Mono|x86.ActiveCfg = Release|Any CPU
|
||||
{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Release Mono|x86.Build.0 = Release|Any CPU
|
||||
{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Release|x86.Build.0 = Release|Any CPU
|
||||
{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Signed|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Signed|Any CPU.Build.0 = Release|Any CPU
|
||||
{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Signed|x86.ActiveCfg = Release|Any CPU
|
||||
{C97A239E-A96C-4D64-A844-CCF8CC30AECB}.Signed|x86.Build.0 = Release|Any CPU
|
||||
{89AB4548-770D-41FD-A891-8DAFF44F452C}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{89AB4548-770D-41FD-A891-8DAFF44F452C}.AppStore|Any CPU.Build.0 = Release|Any CPU
|
||||
{89AB4548-770D-41FD-A891-8DAFF44F452C}.AppStore|x86.ActiveCfg = Release|Any CPU
|
||||
|
@ -498,6 +478,46 @@ Global
|
|||
{4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Signed|Any CPU.Build.0 = Release|Any CPU
|
||||
{4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Signed|x86.ActiveCfg = Release|Any CPU
|
||||
{4F26D5D8-A7B0-42B3-BA42-7CB7D245934E}.Signed|x86.Build.0 = Release|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Debug|Win32.ActiveCfg = Debug|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Debug|Win32.Build.0 = Debug|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Release Mono|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Release Mono|Any CPU.Build.0 = Release|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Release Mono|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Release Mono|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Release Mono|Win32.ActiveCfg = Release|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Release Mono|Win32.Build.0 = Release|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Release Mono|x64.ActiveCfg = Release|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Release Mono|x64.Build.0 = Release|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Release Mono|x86.ActiveCfg = Release|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Release Mono|x86.Build.0 = Release|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Release|Win32.ActiveCfg = Release|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Release|Win32.Build.0 = Release|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Release|x64.Build.0 = Release|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Release|x86.Build.0 = Release|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Signed|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Signed|Any CPU.Build.0 = Release|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Signed|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Signed|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Signed|Win32.ActiveCfg = Release|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Signed|Win32.Build.0 = Release|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Signed|x64.ActiveCfg = Release|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Signed|x64.Build.0 = Release|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Signed|x86.ActiveCfg = Release|Any CPU
|
||||
{2312DA6D-FF86-4597-9777-BCEEC32D96DD}.Signed|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
|
|
@ -121,6 +121,9 @@
|
|||
<Reference Include="TagLib.Portable">
|
||||
<HintPath>..\ThirdParty\taglib\TagLib.Portable.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="SkiaSharp">
|
||||
<HintPath>..\packages\SkiaSharp.1.57.1\lib\net45\SkiaSharp.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="SQLitePCLRaw.core">
|
||||
<HintPath>..\packages\SQLitePCLRaw.core.1.1.5\lib\net45\SQLitePCLRaw.core.dll</HintPath>
|
||||
</Reference>
|
||||
|
@ -221,13 +224,9 @@
|
|||
<Project>{89AB4548-770D-41FD-A891-8DAFF44F452C}</Project>
|
||||
<Name>Emby.Photos</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Emby.Drawing.Net\Emby.Drawing.Net.csproj">
|
||||
<Project>{C97A239E-A96C-4D64-A844-CCF8CC30AECB}</Project>
|
||||
<Name>Emby.Drawing.Net</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Emby.Drawing.ImageMagick\Emby.Drawing.ImageMagick.csproj">
|
||||
<Project>{6CFEE013-6E7C-432B-AC37-CABF0880C69A}</Project>
|
||||
<Name>Emby.Drawing.ImageMagick</Name>
|
||||
<ProjectReference Include="..\Emby.Drawing.Skia\Emby.Drawing.Skia.csproj">
|
||||
<Project>{2312da6d-ff86-4597-9777-bceec32d96dd}</Project>
|
||||
<Name>Emby.Drawing.Skia</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Emby.Drawing\Emby.Drawing.csproj">
|
||||
<Project>{08FFF49B-F175-4807-A2B5-73B0EBD9F716}</Project>
|
||||
|
@ -923,12 +922,6 @@
|
|||
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\emby-textarea\emby-textarea.js">
|
||||
<Link>Resources\dashboard-ui\bower_components\emby-webcomponents\emby-textarea\emby-textarea.js</Link>
|
||||
</BundleResource>
|
||||
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\emby-toggle\emby-toggle.css">
|
||||
<Link>Resources\dashboard-ui\bower_components\emby-webcomponents\emby-toggle\emby-toggle.css</Link>
|
||||
</BundleResource>
|
||||
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\emby-toggle\emby-toggle.js">
|
||||
<Link>Resources\dashboard-ui\bower_components\emby-webcomponents\emby-toggle\emby-toggle.js</Link>
|
||||
</BundleResource>
|
||||
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\fonts\material-icons\2fcryfnatjcs6g4u3t-y5ewrjpiaoeww8aihgqwrjao.woff">
|
||||
<Link>Resources\dashboard-ui\bower_components\emby-webcomponents\fonts\material-icons\2fcryfnatjcs6g4u3t-y5ewrjpiaoeww8aihgqwrjao.woff</Link>
|
||||
</BundleResource>
|
||||
|
@ -1040,6 +1033,9 @@
|
|||
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\lazyloader\lazyloader-intersectionobserver.js">
|
||||
<Link>Resources\dashboard-ui\bower_components\emby-webcomponents\lazyloader\lazyloader-intersectionobserver.js</Link>
|
||||
</BundleResource>
|
||||
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\lazyloader\lazyedgehack.css">
|
||||
<Link>Resources\dashboard-ui\bower_components\emby-webcomponents\lazyloader\lazyedgehack.css</Link>
|
||||
</BundleResource>
|
||||
<BundleResource Include="..\MediaBrowser.WebDashboard\dashboard-ui\bower_components\emby-webcomponents\lazyloader\lazyloader-scroll.js">
|
||||
<Link>Resources\dashboard-ui\bower_components\emby-webcomponents\lazyloader\lazyloader-scroll.js</Link>
|
||||
</BundleResource>
|
||||
|
@ -2704,7 +2700,7 @@
|
|||
</BundleResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<NativeReference Include="..\ThirdParty\SQLite3\osx\libsqlite3.0.dylib">
|
||||
<NativeReference Include="..\packages\SkiaSharp.1.57.1\runtimes\osx\native\libSkiaSharp.dylib">
|
||||
<Kind>Dynamic</Kind>
|
||||
<SmartLink>False</SmartLink>
|
||||
</NativeReference>
|
||||
|
@ -2712,5 +2708,9 @@
|
|||
<Kind>Dynamic</Kind>
|
||||
<SmartLink>False</SmartLink>
|
||||
</NativeReference>
|
||||
<NativeReference Include="..\ThirdParty\SQLite3\osx\libsqlite3.0.dylib">
|
||||
<Kind>Dynamic</Kind>
|
||||
<SmartLink>False</SmartLink>
|
||||
</NativeReference>
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -32,7 +32,10 @@ using Mono.Unix.Native;
|
|||
using MediaBrowser.Model.System;
|
||||
using MediaBrowser.Model.IO;
|
||||
using Emby.Server.Core.Logging;
|
||||
using Emby.Drawing.Net;
|
||||
using Emby.Drawing;
|
||||
using Emby.Drawing.Skia;
|
||||
using MediaBrowser.Controller.Drawing;
|
||||
using MediaBrowser.Model.Drawing;
|
||||
|
||||
namespace MediaBrowser.Server.Mac
|
||||
{
|
||||
|
@ -112,7 +115,7 @@ namespace MediaBrowser.Server.Mac
|
|||
|
||||
_fileSystem = fileSystem;
|
||||
|
||||
var imageEncoder = new GDIImageEncoder(fileSystem, logManager.GetLogger("GDI"));
|
||||
var imageEncoder = GetImageEncoder(appPaths, fileSystem, logManager);
|
||||
|
||||
AppHost = new MacAppHost(appPaths,
|
||||
logManager,
|
||||
|
@ -138,6 +141,18 @@ namespace MediaBrowser.Server.Mac
|
|||
Task.Run (() => StartServer(CancellationToken.None));
|
||||
}
|
||||
|
||||
private static IImageEncoder GetImageEncoder(ServerApplicationPaths appPaths, IFileSystem fileSystem, ILogManager logManager)
|
||||
{
|
||||
try
|
||||
{
|
||||
return new SkiaEncoder(logManager.GetLogger("Skia"), appPaths, () => AppHost.HttpClient, fileSystem);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new NullImageEncoder();
|
||||
}
|
||||
}
|
||||
|
||||
private static void GenerateCertificate(string certPath, string certHost, string certPassword)
|
||||
{
|
||||
CertificateGenerator.CreateSelfSignCertificatePfx(certPath, certHost, certPassword, _logger);
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Mono.Posix" version="4.0.0.0" targetFramework="net45" />
|
||||
<package id="SkiaSharp" version="1.57.1" targetFramework="net462" />
|
||||
</packages>
|
|
@ -341,21 +341,6 @@ namespace MediaBrowser.XbmcMetadata.Parsers
|
|||
break;
|
||||
}
|
||||
|
||||
case "awardsummary":
|
||||
{
|
||||
var text = reader.ReadElementContentAsString();
|
||||
var hasAwards = item as IHasAwards;
|
||||
if (hasAwards != null)
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(text))
|
||||
{
|
||||
hasAwards.AwardSummary = text;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case "sorttitle":
|
||||
{
|
||||
var val = reader.ReadElementContentAsString();
|
||||
|
|
|
@ -81,7 +81,6 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
|||
"country",
|
||||
"audiodbalbumid",
|
||||
"audiodbartistid",
|
||||
"awardsummary",
|
||||
"enddate",
|
||||
"lockedfields",
|
||||
"zap2itid",
|
||||
|
@ -711,12 +710,6 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
|||
writer.WriteElementString("plotkeyword", tag);
|
||||
}
|
||||
|
||||
var hasAwards = item as IHasAwards;
|
||||
if (hasAwards != null && !string.IsNullOrEmpty(hasAwards.AwardSummary))
|
||||
{
|
||||
writer.WriteElementString("awardsummary", hasAwards.AwardSummary);
|
||||
}
|
||||
|
||||
var externalId = item.GetProviderId(MetadataProviders.AudioDbArtist);
|
||||
|
||||
if (!string.IsNullOrEmpty(externalId))
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
using System.Reflection;
|
||||
|
||||
[assembly: AssemblyVersion("3.2.16.1")]
|
||||
[assembly: AssemblyVersion("3.2.16.2")]
|
||||
|
|
Loading…
Reference in New Issue
Block a user