commit
20c400fee3
|
@ -298,7 +298,8 @@ namespace MediaBrowser.Api.Playback
|
||||||
// Since transcoding of folder rips is expiremental anyway, it's not worth adding additional variables such as this.
|
// Since transcoding of folder rips is expiremental anyway, it's not worth adding additional variables such as this.
|
||||||
if (state.VideoType == VideoType.VideoFile)
|
if (state.VideoType == VideoType.VideoFile)
|
||||||
{
|
{
|
||||||
var hwType = ApiEntryPoint.Instance.GetEncodingOptions().HardwareAccelerationType;
|
var encodingOptions = ApiEntryPoint.Instance.GetEncodingOptions();
|
||||||
|
var hwType = encodingOptions.HardwareAccelerationType;
|
||||||
|
|
||||||
if (string.Equals(hwType, "qsv", StringComparison.OrdinalIgnoreCase) ||
|
if (string.Equals(hwType, "qsv", StringComparison.OrdinalIgnoreCase) ||
|
||||||
string.Equals(hwType, "h264_qsv", StringComparison.OrdinalIgnoreCase))
|
string.Equals(hwType, "h264_qsv", StringComparison.OrdinalIgnoreCase))
|
||||||
|
@ -314,7 +315,7 @@ namespace MediaBrowser.Api.Playback
|
||||||
{
|
{
|
||||||
return GetAvailableEncoder("h264_omx", defaultEncoder);
|
return GetAvailableEncoder("h264_omx", defaultEncoder);
|
||||||
}
|
}
|
||||||
if (string.Equals(hwType, "vaapi", StringComparison.OrdinalIgnoreCase))
|
if (string.Equals(hwType, "vaapi", StringComparison.OrdinalIgnoreCase) && !string.IsNullOrWhiteSpace(encodingOptions.VaapiDevice))
|
||||||
{
|
{
|
||||||
return GetAvailableEncoder("h264_vaapi", defaultEncoder);
|
return GetAvailableEncoder("h264_vaapi", defaultEncoder);
|
||||||
}
|
}
|
||||||
|
@ -988,6 +989,8 @@ namespace MediaBrowser.Api.Playback
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
arg += string.Format(" -ss {0}", MediaEncoder.GetTimeParameter(TimeSpan.FromSeconds(1).Ticks));
|
||||||
|
|
||||||
return arg.Trim();
|
return arg.Trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2289,7 +2292,7 @@ namespace MediaBrowser.Api.Playback
|
||||||
return Task.FromResult(true);
|
return Task.FromResult(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!string.Equals(MediaEncoder.EncoderLocationType, "Default", StringComparison.OrdinalIgnoreCase))
|
if (!MediaEncoder.IsDefaultEncoderPath)
|
||||||
{
|
{
|
||||||
return Task.FromResult(true);
|
return Task.FromResult(true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -281,6 +281,20 @@ namespace MediaBrowser.Controller.Entities
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Task UpdateIsOffline(bool newValue)
|
||||||
|
{
|
||||||
|
var item = this;
|
||||||
|
|
||||||
|
if (item.IsOffline != newValue)
|
||||||
|
{
|
||||||
|
item.IsOffline = newValue;
|
||||||
|
// this is creating too many repeated db updates
|
||||||
|
//return item.UpdateToRepository(ItemUpdateType.None, CancellationToken.None);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Task.FromResult(true);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the type of the location.
|
/// Gets or sets the type of the location.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -290,10 +304,10 @@ namespace MediaBrowser.Controller.Entities
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (IsOffline)
|
//if (IsOffline)
|
||||||
{
|
//{
|
||||||
return LocationType.Offline;
|
// return LocationType.Offline;
|
||||||
}
|
//}
|
||||||
|
|
||||||
if (string.IsNullOrWhiteSpace(Path))
|
if (string.IsNullOrWhiteSpace(Path))
|
||||||
{
|
{
|
||||||
|
|
|
@ -375,7 +375,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
|
|
||||||
if (currentChildren.TryGetValue(child.Id, out currentChild) && IsValidFromResolver(currentChild, child))
|
if (currentChildren.TryGetValue(child.Id, out currentChild) && IsValidFromResolver(currentChild, child))
|
||||||
{
|
{
|
||||||
await UpdateIsOffline(currentChild, false).ConfigureAwait(false);
|
await currentChild.UpdateIsOffline(false).ConfigureAwait(false);
|
||||||
validChildren.Add(currentChild);
|
validChildren.Add(currentChild);
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
|
@ -404,7 +404,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
|
|
||||||
else if (!string.IsNullOrEmpty(item.Path) && IsPathOffline(item.Path))
|
else if (!string.IsNullOrEmpty(item.Path) && IsPathOffline(item.Path))
|
||||||
{
|
{
|
||||||
await UpdateIsOffline(item, true).ConfigureAwait(false);
|
await item.UpdateIsOffline(true).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -461,17 +461,6 @@ namespace MediaBrowser.Controller.Entities
|
||||||
progress.Report(100);
|
progress.Report(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Task UpdateIsOffline(BaseItem item, bool newValue)
|
|
||||||
{
|
|
||||||
if (item.IsOffline != newValue)
|
|
||||||
{
|
|
||||||
item.IsOffline = newValue;
|
|
||||||
return item.UpdateToRepository(ItemUpdateType.None, CancellationToken.None);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Task.FromResult(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task RefreshMetadataRecursive(MetadataRefreshOptions refreshOptions, bool recursive, IProgress<double> progress, CancellationToken cancellationToken)
|
private async Task RefreshMetadataRecursive(MetadataRefreshOptions refreshOptions, bool recursive, IProgress<double> progress, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var children = ActualChildren.ToList();
|
var children = ActualChildren.ToList();
|
||||||
|
|
|
@ -134,5 +134,6 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||||
|
|
||||||
Task UpdateEncoderPath(string path, string pathType);
|
Task UpdateEncoderPath(string path, string pathType);
|
||||||
bool SupportsEncoder(string encoder);
|
bool SupportsEncoder(string encoder);
|
||||||
|
bool IsDefaultEncoderPath { get; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -586,7 +586,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
|
||||||
{
|
{
|
||||||
return GetAvailableEncoder(mediaEncoder, "h264_omx", defaultEncoder);
|
return GetAvailableEncoder(mediaEncoder, "h264_omx", defaultEncoder);
|
||||||
}
|
}
|
||||||
if (string.Equals(hwType, "vaapi", StringComparison.OrdinalIgnoreCase))
|
if (string.Equals(hwType, "vaapi", StringComparison.OrdinalIgnoreCase) && !string.IsNullOrWhiteSpace(options.VaapiDevice))
|
||||||
{
|
{
|
||||||
return GetAvailableEncoder(mediaEncoder, "h264_vaapi", defaultEncoder);
|
return GetAvailableEncoder(mediaEncoder, "h264_vaapi", defaultEncoder);
|
||||||
}
|
}
|
||||||
|
|
|
@ -123,20 +123,20 @@ namespace MediaBrowser.MediaEncoding.Encoder
|
||||||
return "System";
|
return "System";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsDefaultPath(FFMpegPath))
|
|
||||||
{
|
|
||||||
return "Default";
|
|
||||||
}
|
|
||||||
|
|
||||||
return "Custom";
|
return "Custom";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool IsDefaultPath(string path)
|
public bool IsDefaultEncoderPath
|
||||||
{
|
{
|
||||||
var parentPath = Path.Combine(ConfigurationManager.ApplicationPaths.ProgramDataPath, "ffmpeg", "20160410");
|
get
|
||||||
|
{
|
||||||
|
var path = FFMpegPath;
|
||||||
|
|
||||||
return FileSystem.ContainsSubPath(parentPath, path);
|
var parentPath = Path.Combine(ConfigurationManager.ApplicationPaths.ProgramDataPath, "ffmpeg", "20160410");
|
||||||
|
|
||||||
|
return FileSystem.ContainsSubPath(parentPath, path);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool IsSystemInstalledPath(string path)
|
private bool IsSystemInstalledPath(string path)
|
||||||
|
|
|
@ -48,7 +48,6 @@ namespace MediaBrowser.Model.Configuration
|
||||||
public bool RememberAudioSelections { get; set; }
|
public bool RememberAudioSelections { get; set; }
|
||||||
public bool RememberSubtitleSelections { get; set; }
|
public bool RememberSubtitleSelections { get; set; }
|
||||||
public bool EnableNextEpisodeAutoPlay { get; set; }
|
public bool EnableNextEpisodeAutoPlay { get; set; }
|
||||||
public bool DisplayFoldersView { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="UserConfiguration" /> class.
|
/// Initializes a new instance of the <see cref="UserConfiguration" /> class.
|
||||||
|
|
|
@ -241,7 +241,7 @@ namespace MediaBrowser.Model.Net
|
||||||
}
|
}
|
||||||
if (StringHelper.EqualsIgnoreCase(ext, ".opus"))
|
if (StringHelper.EqualsIgnoreCase(ext, ".opus"))
|
||||||
{
|
{
|
||||||
return "audio/opus";
|
return "audio/ogg";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Playlists
|
// Playlists
|
||||||
|
|
|
@ -167,10 +167,13 @@ namespace MediaBrowser.Providers.MediaInfo
|
||||||
|
|
||||||
public bool HasChanged(IHasMetadata item, IDirectoryService directoryService)
|
public bool HasChanged(IHasMetadata item, IDirectoryService directoryService)
|
||||||
{
|
{
|
||||||
var file = directoryService.GetFile(item.Path);
|
if (item.EnableRefreshOnDateModifiedChange && !string.IsNullOrWhiteSpace(item.Path) && item.LocationType == LocationType.FileSystem)
|
||||||
if (file != null && file.LastWriteTimeUtc != item.DateModified)
|
|
||||||
{
|
{
|
||||||
return true;
|
var file = directoryService.GetFile(item.Path);
|
||||||
|
if (file != null && file.LastWriteTimeUtc != item.DateModified)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -171,7 +171,7 @@ namespace MediaBrowser.Providers.MediaInfo
|
||||||
|
|
||||||
public bool HasChanged(IHasMetadata item, IDirectoryService directoryService)
|
public bool HasChanged(IHasMetadata item, IDirectoryService directoryService)
|
||||||
{
|
{
|
||||||
if (item.EnableRefreshOnDateModifiedChange && !string.IsNullOrWhiteSpace(item.Path))
|
if (item.EnableRefreshOnDateModifiedChange && !string.IsNullOrWhiteSpace(item.Path) && item.LocationType == LocationType.FileSystem)
|
||||||
{
|
{
|
||||||
var file = directoryService.GetFile(item.Path);
|
var file = directoryService.GetFile(item.Path);
|
||||||
if (file != null && file.LastWriteTimeUtc != item.DateModified)
|
if (file != null && file.LastWriteTimeUtc != item.DateModified)
|
||||||
|
|
|
@ -194,7 +194,7 @@ namespace MediaBrowser.Providers.MediaInfo
|
||||||
|
|
||||||
public bool HasChanged(IHasMetadata item, IDirectoryService directoryService)
|
public bool HasChanged(IHasMetadata item, IDirectoryService directoryService)
|
||||||
{
|
{
|
||||||
if (item.EnableRefreshOnDateModifiedChange)
|
if (item.EnableRefreshOnDateModifiedChange && !string.IsNullOrWhiteSpace(item.Path) && item.LocationType == LocationType.FileSystem)
|
||||||
{
|
{
|
||||||
var file = directoryService.GetFile(item.Path);
|
var file = directoryService.GetFile(item.Path);
|
||||||
if (file != null && file.LastWriteTimeUtc != item.DateModified)
|
if (file != null && file.LastWriteTimeUtc != item.DateModified)
|
||||||
|
|
|
@ -154,10 +154,13 @@ namespace MediaBrowser.Providers.Photos
|
||||||
|
|
||||||
public bool HasChanged(IHasMetadata item, IDirectoryService directoryService)
|
public bool HasChanged(IHasMetadata item, IDirectoryService directoryService)
|
||||||
{
|
{
|
||||||
var file = directoryService.GetFile(item.Path);
|
if (item.EnableRefreshOnDateModifiedChange && !string.IsNullOrWhiteSpace(item.Path) && item.LocationType == LocationType.FileSystem)
|
||||||
if (file != null && file.LastWriteTimeUtc != item.DateModified)
|
|
||||||
{
|
{
|
||||||
return true;
|
var file = directoryService.GetFile(item.Path);
|
||||||
|
if (file != null && file.LastWriteTimeUtc != item.DateModified)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -313,8 +313,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
|
|
||||||
if (Folder.IsPathOffline(path))
|
if (Folder.IsPathOffline(path))
|
||||||
{
|
{
|
||||||
libraryItem.IsOffline = true;
|
await libraryItem.UpdateIsOffline(true).ConfigureAwait(false);
|
||||||
await libraryItem.UpdateToRepository(ItemUpdateType.None, cancellationToken).ConfigureAwait(false);
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -211,7 +211,6 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
_connection.AddColumn(Logger, "TypedBaseItems", "ProductionYear", "INT");
|
_connection.AddColumn(Logger, "TypedBaseItems", "ProductionYear", "INT");
|
||||||
_connection.AddColumn(Logger, "TypedBaseItems", "ParentId", "GUID");
|
_connection.AddColumn(Logger, "TypedBaseItems", "ParentId", "GUID");
|
||||||
_connection.AddColumn(Logger, "TypedBaseItems", "Genres", "Text");
|
_connection.AddColumn(Logger, "TypedBaseItems", "Genres", "Text");
|
||||||
_connection.AddColumn(Logger, "TypedBaseItems", "ParentalRatingValue", "INT");
|
|
||||||
_connection.AddColumn(Logger, "TypedBaseItems", "SchemaVersion", "INT");
|
_connection.AddColumn(Logger, "TypedBaseItems", "SchemaVersion", "INT");
|
||||||
_connection.AddColumn(Logger, "TypedBaseItems", "SortName", "Text");
|
_connection.AddColumn(Logger, "TypedBaseItems", "SortName", "Text");
|
||||||
_connection.AddColumn(Logger, "TypedBaseItems", "RunTimeTicks", "BIGINT");
|
_connection.AddColumn(Logger, "TypedBaseItems", "RunTimeTicks", "BIGINT");
|
||||||
|
@ -488,7 +487,6 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
"ProductionYear",
|
"ProductionYear",
|
||||||
"ParentId",
|
"ParentId",
|
||||||
"Genres",
|
"Genres",
|
||||||
"ParentalRatingValue",
|
|
||||||
"InheritedParentalRatingValue",
|
"InheritedParentalRatingValue",
|
||||||
"SchemaVersion",
|
"SchemaVersion",
|
||||||
"SortName",
|
"SortName",
|
||||||
|
@ -795,7 +793,6 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
}
|
}
|
||||||
|
|
||||||
_saveItemCommand.GetParameter(index++).Value = string.Join("|", item.Genres.ToArray());
|
_saveItemCommand.GetParameter(index++).Value = string.Join("|", item.Genres.ToArray());
|
||||||
_saveItemCommand.GetParameter(index++).Value = item.GetParentalRatingValue() ?? 0;
|
|
||||||
_saveItemCommand.GetParameter(index++).Value = item.GetInheritedParentalRatingValue() ?? 0;
|
_saveItemCommand.GetParameter(index++).Value = item.GetInheritedParentalRatingValue() ?? 0;
|
||||||
|
|
||||||
_saveItemCommand.GetParameter(index++).Value = LatestSchemaVersion;
|
_saveItemCommand.GetParameter(index++).Value = LatestSchemaVersion;
|
||||||
|
|
|
@ -386,7 +386,6 @@ namespace MediaBrowser.Server.Startup.Common
|
||||||
new MovieDbEpisodeProviderMigration(ServerConfigurationManager),
|
new MovieDbEpisodeProviderMigration(ServerConfigurationManager),
|
||||||
new DbMigration(ServerConfigurationManager, TaskManager),
|
new DbMigration(ServerConfigurationManager, TaskManager),
|
||||||
new UpdateLevelMigration(ServerConfigurationManager, this, HttpClient, JsonSerializer, _releaseAssetFilename),
|
new UpdateLevelMigration(ServerConfigurationManager, this, HttpClient, JsonSerializer, _releaseAssetFilename),
|
||||||
new FolderViewSettingMigration(ServerConfigurationManager, UserManager),
|
|
||||||
new CollectionGroupingMigration(ServerConfigurationManager, UserManager),
|
new CollectionGroupingMigration(ServerConfigurationManager, UserManager),
|
||||||
new CollectionsViewMigration(ServerConfigurationManager, UserManager)
|
new CollectionsViewMigration(ServerConfigurationManager, UserManager)
|
||||||
};
|
};
|
||||||
|
|
|
@ -72,7 +72,6 @@
|
||||||
<Compile Include="MbLinkShortcutHandler.cs" />
|
<Compile Include="MbLinkShortcutHandler.cs" />
|
||||||
<Compile Include="Migrations\CollectionGroupingMigration.cs" />
|
<Compile Include="Migrations\CollectionGroupingMigration.cs" />
|
||||||
<Compile Include="Migrations\CollectionsViewMigration.cs" />
|
<Compile Include="Migrations\CollectionsViewMigration.cs" />
|
||||||
<Compile Include="Migrations\FolderViewSettingMigration.cs" />
|
|
||||||
<Compile Include="Migrations\IVersionMigration.cs" />
|
<Compile Include="Migrations\IVersionMigration.cs" />
|
||||||
<Compile Include="Migrations\DbMigration.cs" />
|
<Compile Include="Migrations\DbMigration.cs" />
|
||||||
<Compile Include="Migrations\MovieDbEpisodeProviderMigration.cs" />
|
<Compile Include="Migrations\MovieDbEpisodeProviderMigration.cs" />
|
||||||
|
|
|
@ -1,40 +0,0 @@
|
||||||
using System.Linq;
|
|
||||||
using MediaBrowser.Controller.Configuration;
|
|
||||||
using MediaBrowser.Controller.Library;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Server.Startup.Common.Migrations
|
|
||||||
{
|
|
||||||
public class FolderViewSettingMigration : IVersionMigration
|
|
||||||
{
|
|
||||||
private readonly IServerConfigurationManager _config;
|
|
||||||
private readonly IUserManager _userManager;
|
|
||||||
|
|
||||||
public FolderViewSettingMigration(IServerConfigurationManager config, IUserManager userManager)
|
|
||||||
{
|
|
||||||
_config = config;
|
|
||||||
_userManager = userManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Run()
|
|
||||||
{
|
|
||||||
var migrationKey = this.GetType().Name;
|
|
||||||
var migrationKeyList = _config.Configuration.Migrations.ToList();
|
|
||||||
|
|
||||||
if (!migrationKeyList.Contains(migrationKey))
|
|
||||||
{
|
|
||||||
if (_config.Configuration.IsStartupWizardCompleted)
|
|
||||||
{
|
|
||||||
if (_userManager.Users.Any(i => i.Configuration.DisplayFoldersView))
|
|
||||||
{
|
|
||||||
_config.Configuration.EnableFolderView = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
migrationKeyList.Add(migrationKey);
|
|
||||||
_config.Configuration.Migrations = migrationKeyList.ToArray();
|
|
||||||
_config.SaveConfiguration();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user