aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations/LiveTv
diff options
context:
space:
mode:
authorLuke <luke.pulverenti@gmail.com>2017-04-20 23:49:50 -0400
committerGitHub <noreply@github.com>2017-04-20 23:49:50 -0400
commitf525f5a89e68248a81ab7cfdfa044fbe45e51863 (patch)
treef029e380a0867d6e8db7895e63d9a69e0cfd426f /Emby.Server.Implementations/LiveTv
parent5dca8cb077fb544628f62939bbda292d8c91b637 (diff)
parentb9fe720e736abacc57ffb846e4ce6644bc110f61 (diff)
Merge pull request #2591 from MediaBrowser/beta
Beta
Diffstat (limited to 'Emby.Server.Implementations/LiveTv')
-rw-r--r--Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs49
-rw-r--r--Emby.Server.Implementations/LiveTv/LiveStreamHelper.cs19
-rw-r--r--Emby.Server.Implementations/LiveTv/LiveTvManager.cs34
-rw-r--r--Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs15
-rw-r--r--Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs1
5 files changed, 96 insertions, 22 deletions
diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs
index 0ea1b38b14..666c1fdcd4 100644
--- a/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs
+++ b/Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs
@@ -39,6 +39,7 @@ using MediaBrowser.Model.FileOrganization;
using MediaBrowser.Model.System;
using MediaBrowser.Model.Threading;
using MediaBrowser.Model.Extensions;
+using MediaBrowser.Model.Querying;
namespace Emby.Server.Implementations.LiveTv.EmbyTV
{
@@ -1512,7 +1513,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
_timerProvider.AddOrUpdate(timer, false);
SaveRecordingMetadata(timer, recordPath, seriesPath);
- EnforceKeepUpTo(timer);
+ EnforceKeepUpTo(timer, seriesPath);
};
await recorder.Record(mediaStreamInfo, recordPath, duration, onStarted, cancellationToken)
@@ -1583,12 +1584,16 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
}, _logger);
}
- private async void EnforceKeepUpTo(TimerInfo timer)
+ private async void EnforceKeepUpTo(TimerInfo timer, string seriesPath)
{
if (string.IsNullOrWhiteSpace(timer.SeriesTimerId))
{
return;
}
+ if (string.IsNullOrWhiteSpace(seriesPath))
+ {
+ return;
+ }
var seriesTimerId = timer.SeriesTimerId;
var seriesTimer = _seriesTimerProvider.GetAll().FirstOrDefault(i => string.Equals(i.Id, seriesTimerId, StringComparison.OrdinalIgnoreCase));
@@ -1621,6 +1626,43 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
.ToList();
await DeleteLibraryItemsForTimers(timersToDelete).ConfigureAwait(false);
+
+ var librarySeries = _libraryManager.FindByPath(seriesPath, true) as Folder;
+
+ if (librarySeries == null)
+ {
+ return;
+ }
+
+ var episodesToDelete = (await librarySeries.GetItems(new InternalItemsQuery
+ {
+ SortBy = new[] { ItemSortBy.DateCreated },
+ SortOrder = SortOrder.Descending,
+ IsVirtualItem = false,
+ IsFolder = false,
+ Recursive = true
+
+ }).ConfigureAwait(false))
+ .Items
+ .Where(i => i.LocationType == LocationType.FileSystem && _fileSystem.FileExists(i.Path))
+ .Skip(seriesTimer.KeepUpTo - 1)
+ .ToList();
+
+ foreach (var item in episodesToDelete)
+ {
+ try
+ {
+ await _libraryManager.DeleteItem(item, new DeleteOptions
+ {
+ DeleteFileLocation = true
+
+ }).ConfigureAwait(false);
+ }
+ catch (Exception ex)
+ {
+ _logger.ErrorException("Error deleting item", ex);
+ }
+ }
}
finally
{
@@ -1658,7 +1700,8 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
await _libraryManager.DeleteItem(libraryItem, new DeleteOptions
{
DeleteFileLocation = true
- });
+
+ }).ConfigureAwait(false);
}
else
{
diff --git a/Emby.Server.Implementations/LiveTv/LiveStreamHelper.cs b/Emby.Server.Implementations/LiveTv/LiveStreamHelper.cs
index 3906df0005..d56ddc57dd 100644
--- a/Emby.Server.Implementations/LiveTv/LiveStreamHelper.cs
+++ b/Emby.Server.Implementations/LiveTv/LiveStreamHelper.cs
@@ -30,8 +30,6 @@ namespace Emby.Server.Implementations.LiveTv
var now = DateTime.UtcNow;
- var allowVideoStreamCopy = mediaSource.MediaStreams.Any(i => i.Type == MediaStreamType.Video && i.AllowStreamCopy);
-
var info = await _mediaEncoder.GetMediaInfo(new MediaInfoRequest
{
InputPath = mediaSource.Path,
@@ -76,25 +74,28 @@ namespace Emby.Server.Implementations.LiveTv
var videoStream = mediaSource.MediaStreams.FirstOrDefault(i => i.Type == MediaBrowser.Model.Entities.MediaStreamType.Video);
if (videoStream != null)
{
- videoStream.AllowStreamCopy = allowVideoStreamCopy;
-
if (!videoStream.BitRate.HasValue)
{
var width = videoStream.Width ?? 1920;
- if (width >= 1900)
+ if (width >= 3000)
{
- videoStream.BitRate = 8000000;
+ videoStream.BitRate = 30000000;
}
- else if (width >= 1260)
+ else if (width >= 1900)
{
- videoStream.BitRate = 3000000;
+ videoStream.BitRate = 20000000;
+ }
+
+ else if (width >= 1200)
+ {
+ videoStream.BitRate = 8000000;
}
else if (width >= 700)
{
- videoStream.BitRate = 1000000;
+ videoStream.BitRate = 2000000;
}
}
diff --git a/Emby.Server.Implementations/LiveTv/LiveTvManager.cs b/Emby.Server.Implementations/LiveTv/LiveTvManager.cs
index 4ffea3571f..a898d30844 100644
--- a/Emby.Server.Implementations/LiveTv/LiveTvManager.cs
+++ b/Emby.Server.Implementations/LiveTv/LiveTvManager.cs
@@ -490,7 +490,6 @@ namespace Emby.Server.Implementations.LiveTv
if (stream.Type == MediaStreamType.Video)
{
stream.IsInterlaced = true;
- stream.AllowStreamCopy = false;
}
}
}
@@ -2284,7 +2283,7 @@ namespace Emby.Server.Implementations.LiveTv
};
}
- public void AddChannelInfo(List<Tuple<BaseItemDto, LiveTvChannel>> tuples, DtoOptions options, User user)
+ public async Task AddChannelInfo(List<Tuple<BaseItemDto, LiveTvChannel>> tuples, DtoOptions options, User user)
{
var now = DateTime.UtcNow;
@@ -2304,6 +2303,12 @@ namespace Emby.Server.Implementations.LiveTv
RemoveFields(options);
+ var currentProgramsList = new List<BaseItem>();
+ var currentChannelsDict = new Dictionary<string, BaseItemDto>();
+
+ var addCurrentProgram = options.AddCurrentProgram;
+ var addMediaSources = options.Fields.Contains(ItemFields.MediaSources);
+
foreach (var tuple in tuples)
{
var dto = tuple.Item1;
@@ -2314,19 +2319,38 @@ namespace Emby.Server.Implementations.LiveTv
dto.ChannelType = channel.ChannelType;
dto.ServiceName = channel.ServiceName;
- if (options.Fields.Contains(ItemFields.MediaSources))
+ currentChannelsDict[dto.Id] = dto;
+
+ if (addMediaSources)
{
dto.MediaSources = channel.GetMediaSources(true).ToList();
}
- if (options.AddCurrentProgram)
+ if (addCurrentProgram)
{
var channelIdString = channel.Id.ToString("N");
var currentProgram = programs.FirstOrDefault(i => string.Equals(i.ChannelId, channelIdString));
if (currentProgram != null)
{
- dto.CurrentProgram = _dtoService.GetBaseItemDto(currentProgram, options, user);
+ currentProgramsList.Add(currentProgram);
+ }
+ }
+ }
+
+ if (addCurrentProgram)
+ {
+ var currentProgramDtos = await _dtoService.GetBaseItemDtos(currentProgramsList, options, user).ConfigureAwait(false);
+
+ foreach (var programDto in currentProgramDtos)
+ {
+ if (!string.IsNullOrWhiteSpace(programDto.ChannelId))
+ {
+ BaseItemDto channelDto;
+ if (currentChannelsDict.TryGetValue(programDto.ChannelId, out channelDto))
+ {
+ channelDto.CurrentProgram = programDto;
+ }
}
}
}
diff --git a/Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs b/Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs
index a9c449f837..0329ea6066 100644
--- a/Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs
+++ b/Emby.Server.Implementations/LiveTv/LiveTvMediaSourceProvider.cs
@@ -183,19 +183,24 @@ namespace Emby.Server.Implementations.LiveTv
{
var width = videoStream.Width ?? 1920;
- if (width >= 1900)
+ if (width >= 3000)
{
- videoStream.BitRate = 8000000;
+ videoStream.BitRate = 30000000;
}
- else if (width >= 1260)
+ else if (width >= 1900)
{
- videoStream.BitRate = 3000000;
+ videoStream.BitRate = 20000000;
+ }
+
+ else if (width >= 1200)
+ {
+ videoStream.BitRate = 8000000;
}
else if (width >= 700)
{
- videoStream.BitRate = 1000000;
+ videoStream.BitRate = 2000000;
}
}
}
diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs
index 4ec70f8026..8cf1106f0f 100644
--- a/Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs
+++ b/Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs
@@ -145,6 +145,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
},
RequiresOpening = true,
RequiresClosing = true,
+ RequiresLooping = true,
ReadAtNativeFramerate = false,