SpectrumExpression type
Spectrum expression tree describing a video processing pipeline. Each expression takes a source (another expression) and transforms it.
Signature:
export type SpectrumExpression = {
type: "source";
name?: string;
} | {
type: "resize";
source: SpectrumExpression;
width: number;
height: number;
algorithm?: ResizeAlgorithm;
name?: string;
} | {
type: "crop";
source: SpectrumExpression;
x: number;
y: number;
width: number;
height: number;
maintainAspect?: boolean;
fillMode?: CropFillMode;
name?: string;
} | {
type: "compose";
source: SpectrumExpression;
overlays: CompositeLayer[];
name?: string;
} | {
type: "colorGrade";
source: SpectrumExpression;
liftR?: number;
liftG?: number;
liftB?: number;
gammaR?: number;
gammaG?: number;
gammaB?: number;
gainR?: number;
gainG?: number;
gainB?: number;
hueShift?: number;
saturation?: number;
lightness?: number;
brightness?: number;
contrast?: number;
vibrance?: number;
shadowsR?: number;
shadowsG?: number;
shadowsB?: number;
highlightsR?: number;
highlightsG?: number;
highlightsB?: number;
midtonesR?: number;
midtonesG?: number;
midtonesB?: number;
name?: string;
} | {
type: "toneMap";
source: SpectrumExpression;
algorithm: ToneMapMethod;
peakNits: number;
displayNits: number;
exposure?: number;
contrast?: number;
saturation?: number;
name?: string;
} | {
type: "lut";
source: SpectrumExpression;
lutData: number[];
lutDimensionSize: number;
interpolationMethod?: LutInterpolationMethod;
strength?: number;
name?: string;
} | {
type: "transferFunction";
source: SpectrumExpression;
targetTransfer: TransferFunction;
sourceTransfer?: TransferFunction;
name?: string;
} | {
type: "gamutMap";
source: SpectrumExpression;
targetPrimaries: ColorPrimaries;
sourcePrimaries?: ColorPrimaries;
method: GamutMappingMethod;
name?: string;
} | {
type: "frameRateConvert";
source: SpectrumExpression;
targetFpsNum: number;
targetFpsDen: number;
method?: FRCMethod;
name?: string;
} | {
type: "deinterlace";
source: SpectrumExpression;
method?: DeinterlaceMethod;
fieldOrder?: FieldOrder;
name?: string;
} | {
type: "interlace";
source: SpectrumExpression;
fieldOrder?: FieldOrder;
name?: string;
};