mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-12-16 22:13:06 +03:00
Fix the transparency issue of ASS subtitle rendering in HWA (#14024)
This commit is contained in:
@@ -3947,6 +3947,7 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
{
|
||||
if (hasSubs)
|
||||
{
|
||||
var alphaFormatOpt = string.Empty;
|
||||
if (hasGraphicalSubs)
|
||||
{
|
||||
var subPreProcFilters = GetGraphicalSubPreProcessFilters(swpInW, swpInH, subW, subH, reqW, reqH, reqMaxW, reqMaxH);
|
||||
@@ -3964,10 +3965,13 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
subFilters.Add(alphaSrcFilter);
|
||||
subFilters.Add("format=yuva420p");
|
||||
subFilters.Add(subTextSubtitlesFilter);
|
||||
|
||||
alphaFormatOpt = _mediaEncoder.SupportsFilterWithOption(FilterOptionType.OverlayCudaAlphaFormat)
|
||||
? ":alpha_format=premultiplied" : string.Empty;
|
||||
}
|
||||
|
||||
subFilters.Add("hwupload=derive_device=cuda");
|
||||
overlayFilters.Add("overlay_cuda=eof_action=pass:repeatlast=0");
|
||||
overlayFilters.Add($"overlay_cuda=eof_action=pass:repeatlast=0{alphaFormatOpt}");
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -4164,6 +4168,7 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
{
|
||||
if (hasSubs)
|
||||
{
|
||||
var alphaFormatOpt = string.Empty;
|
||||
if (hasGraphicalSubs)
|
||||
{
|
||||
var subPreProcFilters = GetGraphicalSubPreProcessFilters(swpInW, swpInH, subW, subH, reqW, reqH, reqMaxW, reqMaxH);
|
||||
@@ -4181,10 +4186,13 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
subFilters.Add(alphaSrcFilter);
|
||||
subFilters.Add("format=yuva420p");
|
||||
subFilters.Add(subTextSubtitlesFilter);
|
||||
|
||||
alphaFormatOpt = _mediaEncoder.SupportsFilterWithOption(FilterOptionType.OverlayOpenclAlphaFormat)
|
||||
? ":alpha_format=premultiplied" : string.Empty;
|
||||
}
|
||||
|
||||
subFilters.Add("hwupload=derive_device=opencl");
|
||||
overlayFilters.Add("overlay_opencl=eof_action=pass:repeatlast=0");
|
||||
overlayFilters.Add($"overlay_opencl=eof_action=pass:repeatlast=0{alphaFormatOpt}");
|
||||
overlayFilters.Add("hwmap=derive_device=d3d11va:mode=write:reverse=1");
|
||||
overlayFilters.Add("format=d3d11");
|
||||
}
|
||||
@@ -6947,7 +6955,8 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
|
||||
if (string.Equals(videoStream.Codec, "av1", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return GetHwaccelType(state, options, "av1", bitDepth, hwSurface);
|
||||
var accelType = GetHwaccelType(state, options, "av1", bitDepth, hwSurface);
|
||||
return accelType + ((!string.IsNullOrEmpty(accelType) && isAfbcSupported) ? " -afbc rga" : string.Empty);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user