diff --git a/CodeLegacy/Data/VidExtraData.cs b/CodeLegacy/Data/VidExtraData.cs
index 7f23827..6cc455a 100644
--- a/CodeLegacy/Data/VidExtraData.cs
+++ b/CodeLegacy/Data/VidExtraData.cs
@@ -7,19 +7,22 @@ namespace Flowframes.Data
class VidExtraData
{
// Color
- public string colorSpace = "";
- public string colorRange = "";
- public string colorTransfer = "";
- public string colorPrimaries = "";
+ public string ColSpace = "";
+ public string ColRange = "";
+ public string ColTransfer = "";
+ public string ColPrimaries = "";
// Aspect Ratio
- public string displayRatio = "";
+ public string Dar = "";
// Rotation
public int Rotation = 0;
- private readonly string[] validColorSpaces = new string[] { "bt709", "bt470m", "bt470bg", "smpte170m", "smpte240m", "linear", "log100",
- "log316", "iec61966-2-4", "bt1361e", "iec61966-2-1", "bt2020-10", "bt2020-12", "smpte2084", "smpte428", "arib-std-b67" };
+ private readonly string[] _validColorSpaces = new string[] { "bt709", "bt470m", "bt470bg", "smpte170m", "smpte240m", "linear", "log100", "log316", "iec61966-2-4", "bt1361e", "iec61966-2-1", "bt2020-10", "bt2020-12", "smpte2084", "smpte428", "arib-std-b67" };
+
+ public bool HasAllColorValues => ColSpace.IsNotEmpty() && ColRange.IsNotEmpty() && ColTransfer.IsNotEmpty() && ColPrimaries.IsNotEmpty();
+ public bool HasAnyColorValues => ColSpace.IsNotEmpty() || ColRange.IsNotEmpty() || ColTransfer.IsNotEmpty() || ColPrimaries.IsNotEmpty();
+ public string ColorsStr => $"Color Primaries {(ColPrimaries.IsEmpty() ? "unset" : ColPrimaries)}, Space {(ColSpace.IsEmpty() ? "unset" : ColSpace)}, Transfer {(ColTransfer.IsEmpty() ? "unset" : ColTransfer)}, Range {(ColRange.IsEmpty() ? "unset" : ColRange)}";
public VidExtraData () { }
@@ -28,89 +31,42 @@ namespace Flowframes.Data
string[] lines = ffprobeOutput.SplitIntoLines();
bool keepColorSpace = Config.GetBool(Config.Key.keepColorSpace, true);
- foreach (string line in lines)
+ string GetValue (string key)
{
- if(line.StartsWith("rotation="))
- {
- Rotation = line.Split('=').LastOrDefault().GetInt();
- continue;
- }
-
- if (keepColorSpace)
- {
- if (line.StartsWith("color_range"))
- {
- colorRange = line.Split('=').LastOrDefault().Lower();
- continue;
- }
-
- if (line.StartsWith("color_space"))
- {
- colorSpace = line.Split('=').LastOrDefault().Lower();
- continue;
- }
-
- if (line.StartsWith("color_transfer"))
- {
- colorTransfer = line.Split('=').LastOrDefault().Lower();
- continue;
- }
-
- if (line.StartsWith("color_primaries"))
- {
- colorPrimaries = line.Split('=').LastOrDefault().Lower();
- continue;
- }
- }
-
- if (line.StartsWith("display_aspect_ratio") && Config.GetBool(Config.Key.keepAspectRatio, true))
- {
- displayRatio = line.Split('=').LastOrDefault();
- continue;
- }
+ return lines.FirstOrDefault(l => l.StartsWith(key + "="))?.Split('=').LastOrDefault();
}
- if (!validColorSpaces.Contains(colorSpace.Trim()))
+ Rotation = GetValue("display_rotation")?.GetInt() ?? 0;
+ Dar = GetValue("display_aspect_ratio") ?? "";
+
+ if (keepColorSpace)
{
- Logger.Log($"Warning: Ignoring invalid color space '{colorSpace.Trim()}'.", true, false, "ffmpeg");
- colorSpace = "";
+ ColPrimaries = GetValue("color_primaries")?.Lower().Replace("unknown", "") ?? "";
+ ColRange = GetValue("color_range")?.Lower().Replace("unknown", "") ?? "";
+ ColSpace = GetValue("color_space")?.Lower().Replace("unknown", "") ?? "";
+ ColTransfer = GetValue("color_transfer")?.Lower().Replace("unknown", "") ?? "";
+ ColTransfer = ColTransfer.Replace("bt470bg", "gamma28").Replace("bt470m", "gamma28"); // https://forum.videohelp.com/threads/394596-Color-Matrix
}
- if (colorRange.Trim() == "unknown")
- colorRange = "";
+ Logger.Log($"{ColorsStr}; Display Aspect Ratio {Dar.Wrap()}, Rotation {Rotation}", true, false, "ffmpeg");
- if (!validColorSpaces.Contains(colorTransfer.Trim()))
+ if (!_validColorSpaces.Contains(ColSpace.Trim()))
{
- Logger.Log($"Warning: Color Transfer '{colorTransfer.Trim()}' not valid.", true, false, "ffmpeg");
- colorTransfer = "";
- }
- else
- {
- colorTransfer = colorTransfer.Replace("bt470bg", "gamma28").Replace("bt470m", "gamma28"); // https://forum.videohelp.com/threads/394596-Color-Matrix
+ Logger.Log($"Warning: Ignoring invalid color space '{ColSpace.Trim()}'.", true, false, "ffmpeg");
+ ColSpace = "";
}
- if (!validColorSpaces.Contains(colorPrimaries.Trim()))
+ if (!_validColorSpaces.Contains(ColTransfer.Trim()))
{
- Logger.Log($"Warning: Color Primaries '{colorPrimaries.Trim()}' not valid.", true, false, "ffmpeg");
- colorPrimaries = "";
+ Logger.Log($"Warning: Color Transfer '{ColTransfer.Trim()}' not valid.", true, false, "ffmpeg");
+ ColTransfer = "";
+ }
+
+ if (!_validColorSpaces.Contains(ColPrimaries.Trim()))
+ {
+ Logger.Log($"Warning: Color Primaries '{ColPrimaries.Trim()}' not valid.", true, false, "ffmpeg");
+ ColPrimaries = "";
}
}
-
- public bool HasAllColorValues()
- {
- if (string.IsNullOrWhiteSpace(colorSpace))
- return false;
-
- if (string.IsNullOrWhiteSpace(colorRange))
- return false;
-
- if (string.IsNullOrWhiteSpace(colorTransfer))
- return false;
-
- if (string.IsNullOrWhiteSpace(colorPrimaries))
- return false;
-
- return true;
- }
}
}
diff --git a/CodeLegacy/Extensions/ExtensionMethods.cs b/CodeLegacy/Extensions/ExtensionMethods.cs
index 5aa7658..7e8b75c 100644
--- a/CodeLegacy/Extensions/ExtensionMethods.cs
+++ b/CodeLegacy/Extensions/ExtensionMethods.cs
@@ -471,5 +471,14 @@ namespace Flowframes
return 0f;
}
}
+
+ /// Add to list if is true
+ public static void AddIf(this IList list, T item, bool condition = true)
+ {
+ if (list == null || !condition || item == null)
+ return;
+
+ list.Add(item);
+ }
}
}
diff --git a/CodeLegacy/Main/FrameOrder.cs b/CodeLegacy/Main/FrameOrder.cs
index 4dc013b..54f5392 100644
--- a/CodeLegacy/Main/FrameOrder.cs
+++ b/CodeLegacy/Main/FrameOrder.cs
@@ -77,13 +77,9 @@ namespace Flowframes.Main
int frameCountWithoutLast = frameCount - 1;
string dupesFile = Path.Combine(tempFolder, "dupes.test.json");
var dupes = JsonConvert.DeserializeObject>>(File.ReadAllText(dupesFile));
-
- bool debug = Config.GetBool("frameOrderDebug", false);
-
+ bool debug = Debugger.IsAttached || Config.GetBool("frameOrderDebug", false);
int targetFrameCount = (frameCount * interpFactor).RoundToInt() - InterpolateUtils.GetRoundedInterpFramesPerInputFrame(interpFactor);
-
Fraction step = new Fraction(frameCount, targetFrameCount + InterpolateUtils.GetRoundedInterpFramesPerInputFrame(interpFactor));
-
var framesList = new List();
for (int i = 0; i < targetFrameCount; i++)
diff --git a/CodeLegacy/Media/FfmpegEncode.cs b/CodeLegacy/Media/FfmpegEncode.cs
index b2646a4..91e0947 100644
--- a/CodeLegacy/Media/FfmpegEncode.cs
+++ b/CodeLegacy/Media/FfmpegEncode.cs
@@ -70,14 +70,17 @@ namespace Flowframes.Media
var mf = Interpolate.currentMediaFile;
int inputs = 1;
- if (Config.GetBool(Config.Key.keepColorSpace) && extraData.HasAllColorValues())
+ if (Config.GetBool(Config.Key.keepColorSpace) && extraData.HasAnyColorValues)
{
- Logger.Log($"Using color data: Space {extraData.colorSpace}; Primaries {extraData.colorPrimaries}; Transfer {extraData.colorTransfer}; Range {extraData.colorRange}", true, false, "ffmpeg");
- extraArgs.Add($"-colorspace {extraData.colorSpace} -color_primaries {extraData.colorPrimaries} -color_trc {extraData.colorTransfer} -color_range:v {extraData.colorRange.Wrap()}");
+ Logger.Log($"Using color data: {extraData.ColorsStr}", true, false, "ffmpeg");
+ extraArgs.AddIf($"-colorspace {extraData.ColSpace}", extraData.ColSpace.IsNotEmpty());
+ extraArgs.AddIf($"-color_primaries {extraData.ColPrimaries}", extraData.ColPrimaries.IsNotEmpty());
+ extraArgs.AddIf($"-color_trc {extraData.ColTransfer}", extraData.ColTransfer.IsNotEmpty());
+ extraArgs.AddIf($"-color_range:v {extraData.ColRange.Wrap()}", extraData.ColRange.IsNotEmpty());
}
- if (!string.IsNullOrWhiteSpace(extraData.displayRatio) && !extraData.displayRatio.MatchesWildcard("*N/A*"))
- extraArgs.Add($"-aspect {extraData.displayRatio}");
+ if (!string.IsNullOrWhiteSpace(extraData.Dar) && !extraData.Dar.MatchesWildcard("*N/A*"))
+ extraArgs.Add($"-aspect {extraData.Dar}");
if (!isChunk && settings.Format == Enums.Output.Format.Mp4 || settings.Format == Enums.Output.Format.Mov)
extraArgs.Add($"-movflags +faststart");