mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-10-26 16:45:09 +00:00
Backport pull request #18025 from jellyfin/release-12.z
Fix incorrect color range during CSC after VK tonemapping
Original-merge: 8455f7c838
Merged-by: crobibero <cody@robibe.ro>
Backported-by: Cody Robibero <cody@robibe.ro>
This commit is contained in:
1 parent
f87390e218
commit
57d19b185c
1 file changed
+25
-2
@@ -3807,6 +3807,11 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
var formatArg = isFormatFixed ? (":format=" + videoFormat) : string.Empty;
|
||||
var tonemapArg = string.Empty;
|
||||
|
||||
// libplacebo only support full range RGB
|
||||
forceFullRange = forceFullRange
|
||||
|| (videoFormat ?? string.Empty).Contains("rgb", StringComparison.OrdinalIgnoreCase)
|
||||
|| (videoFormat ?? string.Empty).Contains("bgr", StringComparison.OrdinalIgnoreCase);
|
||||
|
||||
if (doTonemap)
|
||||
{
|
||||
var algorithm = options.TonemappingAlgorithm;
|
||||
@@ -3830,6 +3835,10 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
tonemapArg += ":range=" + range.ToString().ToLowerInvariant();
|
||||
}
|
||||
}
|
||||
else if (forceFullRange)
|
||||
{
|
||||
formatArg += ":range=pc";
|
||||
}
|
||||
|
||||
return string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
@@ -5470,7 +5479,14 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
mainFilters.Add("format=vaapi");
|
||||
|
||||
// clear the surf->meta_offset and output nv12
|
||||
mainFilters.Add("scale_vaapi=format=nv12");
|
||||
var hwCscFilter = "scale_vaapi=format=nv12";
|
||||
|
||||
if (!isMjpegEncoder && options.TonemappingRange != TonemappingRange.pc)
|
||||
{
|
||||
hwCscFilter += ":out_range=tv";
|
||||
}
|
||||
|
||||
mainFilters.Add(hwCscFilter);
|
||||
|
||||
// hw deint
|
||||
if (doDeintH2645)
|
||||
@@ -5540,7 +5556,14 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
overlayFilters.Add("format=vaapi");
|
||||
|
||||
// clear the surf->meta_offset and output nv12
|
||||
overlayFilters.Add("scale_vaapi=format=nv12");
|
||||
var hwCscFilter = "scale_vaapi=format=nv12";
|
||||
|
||||
if (!doVkTonemap || (doVkTonemap && options.TonemappingRange != TonemappingRange.pc))
|
||||
{
|
||||
hwCscFilter += ":out_range=tv";
|
||||
}
|
||||
|
||||
overlayFilters.Add(hwCscFilter);
|
||||
|
||||
// hw deint
|
||||
if (doDeintH2645)
|
||||
|
||||
Reference in new issue
Block a user