|
|
|
@ -1,4 +1,6 @@ |
|
|
|
namespace ErsatzTV.FFmpeg.Filter; |
|
|
|
using ErsatzTV.FFmpeg.Format; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace ErsatzTV.FFmpeg.Filter; |
|
|
|
|
|
|
|
|
|
|
|
public class PadFilter : BaseFilter |
|
|
|
public class PadFilter : BaseFilter |
|
|
|
{ |
|
|
|
{ |
|
|
|
@ -16,13 +18,20 @@ public class PadFilter : BaseFilter |
|
|
|
get |
|
|
|
get |
|
|
|
{ |
|
|
|
{ |
|
|
|
string pad = $"pad={_paddedSize.Width}:{_paddedSize.Height}:-1:-1:color=black"; |
|
|
|
string pad = $"pad={_paddedSize.Width}:{_paddedSize.Height}:-1:-1:color=black"; |
|
|
|
string pixelFormat = _currentState.PixelFormat.Match(pf => pf.FFmpegName, () => string.Empty); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (_currentState.FrameDataLocation == FrameDataLocation.Hardware) |
|
|
|
if (_currentState.FrameDataLocation == FrameDataLocation.Hardware) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (!string.IsNullOrWhiteSpace(pixelFormat)) |
|
|
|
foreach (IPixelFormat pixelFormat in _currentState.PixelFormat) |
|
|
|
{ |
|
|
|
{ |
|
|
|
return $"hwdownload,format={pixelFormat},{pad}"; |
|
|
|
if (pixelFormat is PixelFormatVaapi) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
foreach (IPixelFormat pf in AvailablePixelFormats.ForPixelFormat(pixelFormat.Name, null)) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return $"hwdownload,format=vaapi|{pf.FFmpegName},{pad}"; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return $"hwdownload,format={pixelFormat.FFmpegName},{pad}"; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return $"hwdownload,{pad}"; |
|
|
|
return $"hwdownload,{pad}"; |
|
|
|
|