Files
ersatztv/ErsatzTV.FFmpeg/Decoder/DecoderBase.cs
T
Jason DoveandGitHub 036b6e63c7 add new graphics engine (#2265)
* spike new graphics engine

* fix remote watermarks; add graphics engine to vaapi

* add graphics engine to qsv
2025-08-06 15:04:43 +00:00

45 lines
1.4 KiB
C#

using ErsatzTV.FFmpeg.Environment;
using ErsatzTV.FFmpeg.Format;
namespace ErsatzTV.FFmpeg.Decoder;
public abstract class DecoderBase : IDecoder
{
protected abstract FrameDataLocation OutputFrameDataLocation { get; }
public EnvironmentVariable[] EnvironmentVariables => [];
public string[] GlobalOptions => [];
public virtual string[] InputOptions(InputFile inputFile) => ["-c:v", Name];
public string[] FilterOptions => [];
public string[] OutputOptions => [];
public virtual FrameState NextState(FrameState currentState) =>
currentState with { FrameDataLocation = OutputFrameDataLocation };
public abstract string Name { get; }
public bool AppliesTo(AudioInputFile audioInputFile) => false;
public bool AppliesTo(VideoInputFile videoInputFile) => true;
public bool AppliesTo(ConcatInputFile concatInputFile) => false;
public bool AppliesTo(GraphicsEngineInput graphicsEngineInput) => false;
protected static int InputBitDepth(InputFile inputFile)
{
var bitDepth = 8;
if (inputFile is VideoInputFile videoInputFile)
{
foreach (VideoStream videoStream in videoInputFile.VideoStreams.HeadOrNone())
{
foreach (IPixelFormat pixelFormat in videoStream.PixelFormat)
{
bitDepth = pixelFormat.BitDepth;
}
}
}
return bitDepth;
}
}