mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-06-02 21:24:15 -04:00
update deinterlace param
This commit is contained in:
parent
f1371b17d8
commit
f55b138e1d
@ -247,7 +247,10 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
var liveStream = await GetChannelStream(host, channelId, streamId, cancellationToken).ConfigureAwait(false);
|
var liveStream = await GetChannelStream(host, channelId, streamId, cancellationToken).ConfigureAwait(false);
|
||||||
|
var startTime = DateTime.UtcNow;
|
||||||
await liveStream.Open(cancellationToken).ConfigureAwait(false);
|
await liveStream.Open(cancellationToken).ConfigureAwait(false);
|
||||||
|
var endTime = DateTime.UtcNow;
|
||||||
|
Logger.Info("Live stream opened after {0}ms", (endTime - startTime).TotalMilliseconds);
|
||||||
return liveStream;
|
return liveStream;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
@ -347,6 +347,15 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
|||||||
videoCodec = "h264";
|
videoCodec = "h264";
|
||||||
videoBitrate = 1000000;
|
videoBitrate = 1000000;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// This is for android tv's 1200 condition. Remove once not needed anymore so that we can avoid possible side effects of dummying up this data
|
||||||
|
if ((channelInfo.IsHD ?? true))
|
||||||
|
{
|
||||||
|
width = 1920;
|
||||||
|
height = 1080;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (channelInfo != null)
|
if (channelInfo != null)
|
||||||
{
|
{
|
||||||
|
@ -48,7 +48,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
|||||||
_tempFilePath = Path.Combine(appPaths.TranscodingTempPath, UniqueId + ".ts");
|
_tempFilePath = Path.Combine(appPaths.TranscodingTempPath, UniqueId + ".ts");
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override async Task OpenInternal(CancellationToken openCancellationToken)
|
protected override Task OpenInternal(CancellationToken openCancellationToken)
|
||||||
{
|
{
|
||||||
_liveStreamCancellationTokenSource.Token.ThrowIfCancellationRequested();
|
_liveStreamCancellationTokenSource.Token.ThrowIfCancellationRequested();
|
||||||
|
|
||||||
@ -73,7 +73,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
|||||||
//OpenedMediaSource.SupportsDirectStream = true;
|
//OpenedMediaSource.SupportsDirectStream = true;
|
||||||
//OpenedMediaSource.SupportsTranscoding = true;
|
//OpenedMediaSource.SupportsTranscoding = true;
|
||||||
|
|
||||||
await taskCompletionSource.Task.ConfigureAwait(false);
|
return taskCompletionSource.Task;
|
||||||
|
|
||||||
//await Task.Delay(5000).ConfigureAwait(false);
|
//await Task.Delay(5000).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
@ -799,13 +799,12 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|||||||
|
|
||||||
if (videoStream.IsInterlaced)
|
if (videoStream.IsInterlaced)
|
||||||
{
|
{
|
||||||
if (state.DeInterlace(videoStream.Codec))
|
if (state.DeInterlace(videoStream.Codec, false))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (videoStream.IsAnamorphic ?? false)
|
if (videoStream.IsAnamorphic ?? false)
|
||||||
{
|
{
|
||||||
if (request.RequireNonAnamorphic)
|
if (request.RequireNonAnamorphic)
|
||||||
@ -1365,7 +1364,7 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|||||||
filters.Add("hwupload");
|
filters.Add("hwupload");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state.DeInterlace("h264") && !string.Equals(outputVideoCodec, "h264_vaapi", StringComparison.OrdinalIgnoreCase))
|
if (state.DeInterlace("h264", true) && !string.Equals(outputVideoCodec, "h264_vaapi", StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
// If it is already 60fps then it will create an output framerate that is much too high for roku and others to handle
|
// If it is already 60fps then it will create an output framerate that is much too high for roku and others to handle
|
||||||
if (string.Equals(options.DeinterlaceMethod, "bobandweave", StringComparison.OrdinalIgnoreCase) && (state.VideoStream.RealFrameRate ?? 60) <= 30)
|
if (string.Equals(options.DeinterlaceMethod, "bobandweave", StringComparison.OrdinalIgnoreCase) && (state.VideoStream.RealFrameRate ?? 60) <= 30)
|
||||||
|
@ -161,7 +161,7 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|||||||
public int? OutputAudioBitrate;
|
public int? OutputAudioBitrate;
|
||||||
public int? OutputAudioChannels;
|
public int? OutputAudioChannels;
|
||||||
|
|
||||||
public bool DeInterlace(string videoCodec)
|
public bool DeInterlace(string videoCodec, bool forceDeinterlaceIfSourceIsInterlaced)
|
||||||
{
|
{
|
||||||
// Support general param
|
// Support general param
|
||||||
if (BaseRequest.DeInterlace)
|
if (BaseRequest.DeInterlace)
|
||||||
@ -177,6 +177,15 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (forceDeinterlaceIfSourceIsInterlaced)
|
||||||
|
{
|
||||||
|
var videoStream = VideoStream;
|
||||||
|
if (videoStream != null && videoStream.IsInterlaced)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -559,7 +568,7 @@ namespace MediaBrowser.Controller.MediaEncoding
|
|||||||
return VideoStream == null ? (bool?)null : VideoStream.IsInterlaced;
|
return VideoStream == null ? (bool?)null : VideoStream.IsInterlaced;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DeInterlace(ActualOutputVideoCodec))
|
if (DeInterlace(ActualOutputVideoCodec, true))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user