private static string GetFFMpegFilterString(VideoFilterDescriptor filterDesc) { switch (filterDesc.Type) { case VideoFilterType.HFlip: return("hflip"); case VideoFilterType.VFlip: return("vflip"); case VideoFilterType.Warm: return("curves=r='0/0 .50/.53 1/1':g='0/0 0.50/0.48 1/1':b='0/0 .50/.46 1/1'"); case VideoFilterType.Cold: return("curves=r='0/0 .50/.46 1/1':g='0/0 0.50/0.51 1/1':b='0/0 .50/.54 1/1'"); case VideoFilterType.Dark: return("curves=preset=darker"); case VideoFilterType.Light: return("curves=preset=lighter"); case VideoFilterType.Vintage: return("curves=preset=vintage"); case VideoFilterType.Sepia: return("colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131"); case VideoFilterType.Grayscale: return("eq=saturation=0"); default: return(null); } }
private IDirectXFilterStage Create(VideoFilterDescriptor desc) { switch (desc.Type) { case VideoFilterType.Warm: return(DirectXFilterStageLUT.Create(_dx, "warm.png")); case VideoFilterType.Cold: return(DirectXFilterStageLUT.Create(_dx, "cool.png")); case VideoFilterType.Dark: return(new DirectXFilterStageColorCorrection(_dx, new ColorCorrectionConfig(Brightness: 0.4))); case VideoFilterType.Light: return(new DirectXFilterStageColorCorrection(_dx, new ColorCorrectionConfig(Brightness: 0.6))); case VideoFilterType.Vintage: return(DirectXFilterStageLUT.Create(_dx, "vintage.png", SingleFrameType.Png, NormalizeValue(desc.Value))); case VideoFilterType.Sepia: return(DirectXFilterStageLUT.Create(_dx, "sepia.png", SingleFrameType.Png, NormalizeValue(desc.Value))); case VideoFilterType.Grayscale: return(DirectXFilterStageLUT.Create(_dx, "grayscale.png", SingleFrameType.Png, NormalizeValue(desc.Value))); case VideoFilterType.Contrast: return(new DirectXFilterStageColorCorrection(_dx, new ColorCorrectionConfig(Contrast: NormalizeValue(desc.Value)))); case VideoFilterType.Brightness: return(new DirectXFilterStageColorCorrection(_dx, new ColorCorrectionConfig(Brightness: NormalizeValue(desc.Value)))); case VideoFilterType.Saturation: return(new DirectXFilterStageColorCorrection(_dx, new ColorCorrectionConfig(Saturation: NormalizeValue(desc.Value)))); case VideoFilterType.Gamma: return(new DirectXFilterStageColorCorrection(_dx, new ColorCorrectionConfig(Gamma: NormalizeValue(desc.Value)))); case VideoFilterType.Hue: return(new DirectXFilterStageColorCorrection(_dx, new ColorCorrectionConfig(HueShift: NormalizeValue(desc.Value)))); case VideoFilterType.Opacity: return(new DirectXFilterStageColorCorrection(_dx, new ColorCorrectionConfig(Opacity: NormalizeValue(desc.Value)))); case VideoFilterType.Sharpness: return(new DirectXFilterStageSharpness(_dx, NormalizeValue(desc.Value))); case VideoFilterType.UserLut: return(DirectXFilterStageLUT.Create(_dx, desc.Data.Buffer, desc.Data.Type, NormalizeValue(desc.Value))); case VideoFilterType.Azure: return(DirectXFilterStageLUT.Create(_dx, "Azure.png", SingleFrameType.Png, NormalizeValue(desc.Value))); case VideoFilterType.B_W: return(DirectXFilterStageLUT.Create(_dx, "B_W.png", SingleFrameType.Png, NormalizeValue(desc.Value))); case VideoFilterType.Chill: return(DirectXFilterStageLUT.Create(_dx, "Chill.png", SingleFrameType.Png, NormalizeValue(desc.Value))); case VideoFilterType.Pastel: return(DirectXFilterStageLUT.Create(_dx, "Pastel.png", SingleFrameType.Png, NormalizeValue(desc.Value))); case VideoFilterType.Romantic: return(DirectXFilterStageLUT.Create(_dx, "Romantic.png", SingleFrameType.Png, NormalizeValue(desc.Value))); case VideoFilterType.Sapphire: return(DirectXFilterStageLUT.Create(_dx, "Sapphire.png", SingleFrameType.Png, NormalizeValue(desc.Value))); case VideoFilterType.Wine: return(DirectXFilterStageLUT.Create(_dx, "Wine.png", SingleFrameType.Png, NormalizeValue(desc.Value))); default: return(null); } }