Browse Source

more color fixes (#1040)

pull/1042/head
Jason Dove 4 years ago committed by GitHub
parent
commit
25ea75b761
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      ErsatzTV.FFmpeg/ColorParams.cs
  2. 15
      ErsatzTV.FFmpeg/Filter/ColorspaceFilter.cs

2
ErsatzTV.FFmpeg/ColorParams.cs

@ -10,6 +10,8 @@ public record ColorParams(string ColorRange, string ColorSpace, string ColorTran
string.IsNullOrWhiteSpace(ColorTransfer) && string.IsNullOrWhiteSpace(ColorTransfer) &&
string.IsNullOrWhiteSpace(ColorPrimaries); string.IsNullOrWhiteSpace(ColorPrimaries);
public bool IsMixed => ColorSpace != ColorTransfer || ColorTransfer != ColorPrimaries;
public bool IsBt709 public bool IsBt709
{ {
get get

15
ErsatzTV.FFmpeg/Filter/ColorspaceFilter.cs

@ -24,20 +24,23 @@ public class ColorspaceFilter : BaseFilter
{ {
get get
{ {
string setParams = string.Empty; string inputOverrides = string.Empty;
if (_videoStream.ColorParams.IsUnknown) ColorParams cp = _videoStream.ColorParams;
if (cp.IsMixed)
{ {
setParams = "setparams=range=tv:colorspace=bt709:color_trc=bt709:color_primaries=bt709"; inputOverrides =
$"irange={cp.ColorRange}:ispace={cp.ColorSpace}:itrc={cp.ColorTransfer}:iprimaries={cp.ColorPrimaries}:";
} }
string colorspace = _desiredPixelFormat.BitDepth switch string colorspace = _desiredPixelFormat.BitDepth switch
{ {
10 when !_videoStream.ColorParams.IsUnknown => "colorspace=all=bt709:format=yuv420p10", _ when cp.IsUnknown => "setparams=range=tv:colorspace=bt709:color_trc=bt709:color_primaries=bt709",
8 when !_videoStream.ColorParams.IsUnknown => "colorspace=all=bt709:format=yuv420p", 10 when !cp.IsUnknown => $"colorspace={inputOverrides}all=bt709:format=yuv420p10",
8 when !cp.IsUnknown => $"colorspace={inputOverrides}all=bt709:format=yuv420p",
_ => string.Empty _ => string.Empty
}; };
return string.Join(',', new[] { setParams, colorspace }.Filter(s => !string.IsNullOrWhiteSpace(s))); return colorspace;
} }
} }
} }

Loading…
Cancel
Save