Skip to content

Commit

Permalink
Release v1.3.3
Browse files Browse the repository at this point in the history
  • Loading branch information
mysteryx93 committed Dec 30, 2015
1 parent 6d0254b commit 771f8ed
Show file tree
Hide file tree
Showing 29 changed files with 191 additions and 63 deletions.
23 changes: 11 additions & 12 deletions README.md
@@ -1,4 +1,4 @@
# AviSynth Shader v1.3.2
# AviSynth Shader v1.3.3

<a href="https://github.com/mysteryx93/AviSynthShader/releases">Download here >></a>

Expand Down Expand Up @@ -50,7 +50,7 @@ Arguments:

Input: The first input clip.

Path: The path to the HLSL pixel shader file to run.
Path: The path to the HLSL pixel shader file to run. If not specified, Clip1 will be copied to Output.

EntryPoint: If compiling HLSL source code, specified the code entry point.

Expand Down Expand Up @@ -87,13 +87,16 @@ Precision: 1 to execute with 8-bit precision, 2 to execute with 16-bit precision
OutputPrecision: 1 to get an output clip with BYTE, 2 for UINT16, 3 for half-float. Default=2


#### SuperRes(Input, Passes, Strength, Softness, UpscaleCommand, MatrixIn, MatrixOut, FormatOut, Convert, lsb_in, lsb_upscale, lsb_out)
#### function SuperResXBR(Input, Passes, Strength, Softness, xbrEdgeStrength, xbrSharpness, MatrixIn, MatrixOut, FormatOut, Convert, ConvertYuv, lsb_in, lsb_out)

In Shaders\SuperRes\SuperRes.avsi. Thanks to Shiandow for writing this great code!
Enhances upscaling quality, combining Super-xBR and SuperRes to run in the same command chain, reducing memory transfers and increasing performance.

Arguments are the same as SuperRes and Super-xBR

Enhances upscaling quality.

Supported video formats: YV12, YV24, RGB24 and RGB32.
#### SuperRes(Input, Passes, Strength, Softness, UpscaleCommand, MatrixIn, MatrixOut, FormatOut, Convert, ConvertYuv, lsb_in, lsb_upscale, lsb_out)

Enhances upscaling quality.

Arguments:

Expand All @@ -111,17 +114,15 @@ FormatOut: The output format. Default = same as input.

Convert: Whether to call ConvertToShader and ConvertFromShader within the shader. Default=true

ConvertYuv: Whether do YUV-RGB color conversion. Default=true unless Convert=true and source is RGB

lsb_in, lsb_upscale, lsb_out: Whether the input, result of UpscaleCommand and output are to be converted to/from DitherTools' Stack16 format. Default=false


#### Super-xBR(Input, EdgeStrength, Sharpness, ThirdPass, FormatOut, Convert, lsb_in, lsb_out)

In Shaders\Super-xBR\super-xbr.avsi. Thanks to Shiandow for writing this great code!

Doubles the size of the image. Produces a sharp result, but with severe ringing.

Supported video formats: YV12, YV24, RGB24 and RGB32.

Arguments:

EdgeStrength: Value between 0 and 5 specifying the strength. Default=1.
Expand All @@ -139,8 +140,6 @@ lsb_in, lsb_out: Whether the input and output are to be converted to/from Dither

#### ColorMatrixShader(input, MatrixIn, MatrixOut, FormatOut)

In Shaders\ColorMatrix\ColorMatrix.avsi

Converts the color matrix with 16 bit depth to avoid banding. Source can be YV12, YV24, RGB24 or RGB32.

Arguments:
Expand Down
Binary file added Release/AviSynthShader-1.3.3.zip
Binary file not shown.
8 changes: 8 additions & 0 deletions Release/ChangeLog.txt
@@ -1,3 +1,11 @@
Version 1.3.3: December 30th 2015
- Shader.dll: Added the option to copy clip data without processing by leaving Path empty
- Shader.dll: Fixed a bug where input textures were unecessarily copied for each command. This slightly increases performance and reduces CPU usage
- Added SuperResXBR, a hybrid between SuperRes and Super-xBR that runs both in the same command chain, reducing memory usage and improving performance
- SuperRes: Fixed a bug where YUV-RGB conversion was ignored when Convert=false
- SuperRes: Added ConvertYuv to specify whether to convert YUV-RGB data or not


Version 1.3.2: December 28th 2015
- Added FormatOut to all scripts to set output format
- Fixed SuperRes when using lsb_out
Expand Down
19 changes: 14 additions & 5 deletions Release/ReadMe.txt
@@ -1,4 +1,6 @@
AviSynthShader v1.3.2 by Etienne Charland
AviSynthShader v1.3.3 (December 30th 2015)
by Etienne Charland

Provides a bridge between AviSynth and HLSL pixel shaders for high bit depth processing on the GPU.
http://forum.doom9.org/showthread.php?t=172698

Expand All @@ -10,14 +12,21 @@ ConvertToShader(2)
SuperRes(2, 1, 0, """SuperXBR(Convert=false)""", Convert=false)
ConvertFromShader(2, "YV12")

Supported video formats: YV12, YV24, RGB24 and RGB32.



#### function SuperResXBR(Input, Passes, Strength, Softness, xbrEdgeStrength, xbrSharpness, MatrixIn, MatrixOut, FormatOut, Convert, ConvertYuv, lsb_in, lsb_out)

Enhances upscaling quality, combining Super-xBR and SuperRes to run in the same command chain, reducing memory transfers and increasing performance.

Arguments are the same as SuperRes and Super-xBR


#### SuperRes(Input, Passes, Strength, Softness, UpscaleCommand, MatrixIn, MatrixOut, FormatOut, Convert, lsb_in, lsb_upscale, lsb_out)

Enhances upscaling quality.

Supported video formats: YV12, YV24, RGB24 and RGB32.

Arguments:

Passes: How many SuperRes passes to run. Default=1.
Expand All @@ -34,15 +43,15 @@ FormatOut: The output format. Default = same as input.

Convert: Whether to call ConvertToShader and ConvertFromShader within the shader. Default=true

ConvertYuv: Whether do YUV-RGB color conversion. Default=true unless Convert=true and source is RGB

lsb_in, lsb_upscale, lsb_out: Whether the input, result of UpscaleCommand and output are to be converted to/from DitherTools' Stack16 format. Default=false


#### Super-xBR(Input, EdgeStrength, Sharpness, ThirdPass, FormatOut, Convert, lsb_in, lsb_out)

Doubles the size of the image. Produces a sharp result, but with severe ringing.

Supported video formats: YV12, YV24, RGB24 and RGB32.

Arguments:

EdgeStrength: Value between 0 and 5 specifying the strength. Default=1.
Expand Down
Binary file modified Release/Shader.dll
Binary file not shown.
4 changes: 2 additions & 2 deletions Release/SuperRes/SuperRes.avsi
@@ -1,4 +1,4 @@
function SuperRes(clip Input, int "Passes", float "Strength", float "Softness", string "UpscaleCommand", string "MatrixIn", string "MatrixOut", string "FormatOut", bool "Convert", bool "lsb_in", bool "lsb_upscale", bool "lsb_out")
function SuperRes(clip Input, int "Passes", float "Strength", float "Softness", string "UpscaleCommand", string "MatrixIn", string "MatrixOut", string "FormatOut", bool "Convert", bool "ConvertYuv", bool "lsb_in", bool "lsb_upscale", bool "lsb_out")
{
Passes = default(Passes, 1)
Strength = default(Strength, 1)
Expand All @@ -7,6 +7,7 @@ function SuperRes(clip Input, int "Passes", float "Strength", float "Softness",
MatrixOut = default(MatrixOut, "709")
FormatOut = default(FormatOut, "")
Convert = default(Convert, true)
ConvertYuv = default(ConvertYuv, Convert ? !Input.IsRGB() : true)
lsb_in = default(lsb_in, false)
lsb_upscale = default(lsb_upscale, false)
lsb_out = default(lsb_out, false)
Expand All @@ -24,7 +25,6 @@ function SuperRes(clip Input, int "Passes", float "Strength", float "Softness",
PrecisionIn = Convert && !lsb_in ? 1 : 2
PrecisionUpscale = Convert && !lsb_upscale ? 1 : 2
PrecisionOut = Convert && !lsb_out ? 1 : 2
ConvertYuv = convert && !IsRGB()
sourceFormat = FormatOut != "" ? FormatOut : IsYV12 ? "YV12" : IsYV24 ? "YV24" : IsRGB24 ? "RGB24" : IsRGB32 ? "RGB32" : ""
Assert(sourceFormat != "", chr(10) + "Source must be YV12, YV24, RGB24 or RGB32" + chr(10))

Expand Down
Binary file added Release/SuperResXBR/Bicubic.cso
Binary file not shown.
Binary file added Release/SuperResXBR/GammaToLinear.cso
Binary file not shown.
Binary file added Release/SuperResXBR/GammaToYuv.cso
Binary file not shown.
Binary file added Release/SuperResXBR/SuperRes.cso
Binary file not shown.
Binary file added Release/SuperResXBR/SuperResDiff.cso
Binary file not shown.
Binary file added Release/SuperResXBR/SuperResDiff601.cso
Binary file not shown.
Binary file added Release/SuperResXBR/SuperResDiff709.cso
Binary file not shown.
Binary file added Release/SuperResXBR/SuperResFinal.cso
Binary file not shown.
Binary file added Release/SuperResXBR/SuperResFinal601.cso
Binary file not shown.
Binary file added Release/SuperResXBR/SuperResFinal709.cso
Binary file not shown.
81 changes: 81 additions & 0 deletions Release/SuperResXBR/SuperResXBR.avsi
@@ -0,0 +1,81 @@
function SuperResXBR(clip Input, int "Passes", float "Strength", float "Softness", float "xbrEdgeStrength", float "xbrSharpness", string "MatrixIn", string "MatrixOut", string "FormatOut", bool "Convert", bool "ConvertYuv", bool "lsb_in", bool "lsb_out")
{
Passes = default(Passes, 1)
Strength = default(Strength, 1)
Softness = default(Softness, 0)
xbrEdgeStrength = default(xbrEdgeStrength, 1)
xbrSharpness = default(xbrSharpness, 1)
MatrixIn = default(MatrixIn, "709")
MatrixOut = default(MatrixOut, "709")
FormatOut = default(FormatOut, "")
Convert = default(Convert, true)
ConvertYuv = default(ConvertYuv, Convert ? !Input.IsRGB() : true)
lsb_in = default(lsb_in, false)
lsb_out = default(lsb_out, false)

Assert((Passes > 0 && Passes <= 3) ? true : false, "Passes must be between 1 and 3")
Assert((Strength >= 0 && Strength <= 1) ? true : false, "Strength must be between 0 and 1")
Assert((Softness >= 0 && Softness <= 1) ? true : false, "Softness must be between 0 and 1")
Assert(xbrEdgeStrength >= 0 && xbrEdgeStrength <= 5, "xbrEdgeStrength must be between 0 and 5")
Assert(xbrSharpness >= 0 && xbrSharpness <= 1.5, "xbrSharpness must be between 0 and 1.5")
Assert(MatrixIn == "601" || MatrixIn == "709", "MatrixIn must be 601 or 709")
Assert(MatrixOut == "601" || MatrixOut == "709", "MatrixOut must be 601 or 709")
Assert((!lsb_in && !lsb_out) || Convert, "Convert must be True to use lsb_in or lsb_out")

Input

PrecisionIn = Convert && !lsb_in ? 1 : 2
PrecisionOut = Convert && !lsb_out ? 1 : 2
sourceFormat = FormatOut != "" ? FormatOut : IsYV12 ? "YV12" : IsYV24 ? "YV24" : IsRGB24 ? "RGB24" : IsRGB32 ? "RGB32" : ""
Assert(sourceFormat != "", chr(10) + "Source must be YV12, YV24, RGB24 or RGB32" + chr(10))

InputWidth = Width / PrecisionIn
InputHeight = Height
args_string = string(xbrEdgeStrength,"%.32f") + "," + string(xbrSharpness,"%.32f") + ",0,0f"
size0_string = string(InputWidth) + "," + string(InputHeight) + "," + string(1./InputWidth,"%.32f") + "," + string(1./InputHeight,"%.32f") + "f"
size1_string = string(2*InputWidth) + "," + string(2*InputHeight) + "," + string(1./(2*InputWidth),"%.32f") + "," + string(1./(2*InputHeight),"%.32f") + "f"

Input = convert ? ConvertToShader(PrecisionIn, lsb=lsb_in) : last
Shader(Output=2)

# Super-xBR
Shader("super-xbr-pass0.cso",\
Param2 = args_string,\
Param3 = size0_string,\
Width = 2*InputWidth, Height = 2*InputHeight)
Shader("super-xbr-pass1.cso",\
Param2=args_string,\
Param3=size1_string)
Shader("super-xbr-pass2.cso",\
Param2=args_string,\
Param3=size1_string)

Shader(ConvertYuv && MatrixIn=="601" ? "Yuv601ToLinear.cso" : ConvertYuv ? "YuvToLinear.cso" : "GammaToLinear.cso")

# SuperRes
SuperResPass(last, Input, Strength, Softness, 1, Passes, ConvertYuv, Convert, PrecisionIn, MatrixIn, MatrixOut)
Passes > 1 ? SuperResPass(Input, Strength, Softness, 2, Passes, ConvertYuv, Convert, PrecisionIn, MatrixIn, MatrixOut) : nop
Passes > 2 ? SuperResPass(Input, Strength, Softness, 3, Passes, ConvertYuv, Convert, PrecisionIn, MatrixIn, MatrixOut) : nop

ExecuteShader(last, Input, Precision=3, Clip1Precision=PrecisionIn, OutputPrecision=PrecisionOut)
convert ? ConvertFromShader(PrecisionOut, format=sourceFormat, lsb=lsb_out) : last
}

function SuperResPass(clip cmd, clip Input, float Strength, float Softness, int Pass, int Passes, bool ConvertYuv, bool Convert, int PrecisionIn, string MatrixIn, string MatrixOut)
{
InputWidth = Input.Width / PrecisionIn

cmd.Shader("Bicubic.cso", Output=3, \
Param0=string(InputWidth) + "," + string(Input.Height) + "," + string(1./InputWidth,"%.32f") + "," + string(1./Input.Height,"%.32f") + "f",\
Param1=string(InputWidth*2) + "," + string(Input.Height*2) + "," + string(1./(InputWidth*2),"%.32f") + "," + string(1./(Input.Height*2),"%.32f") + "f",\
Param2=string(1/3.,"%.32f") + "," + string(1/3.,"%.32f") + "f",\
Width=InputWidth, Height=Input.Height)

Shader(ConvertYuv && MatrixIn=="601" ? "SuperResDiff601.cso" : ConvertYuv ? "SuperResDiff709.cso" : "SuperResDiff.cso", Clip1=3, Clip2=2, Output=4)

Shader(Pass==Passes ? (MatrixOut=="601" ? "SuperResFinal601.cso" : ConvertYuv ? "SuperResFinal709.cso" : "SuperResFinal.cso") : "SuperRes.cso", Clip1=1, Clip2=4, Output=1, \
Param0=string(InputWidth*2) + "," + string(Input.Height*2) + "f", \
Param1=string(1./(InputWidth*2), "%.32f") + "," + string(1./(Input.Height*2), "%.32f") + "f", \
Param2=string(InputWidth) + "," + string(Input.Height) + "," + string(1./InputWidth,"%.32f") + "," + string(1./Input.Height,"%.32f") + "f", \
Param3=string(Strength,"%.32f") + "," + string(Softness,"%.32f") + "," + string(Pass) + "," + string(Passes) + "f")
}
Binary file added Release/SuperResXBR/Yuv601ToLinear.cso
Binary file not shown.
Binary file added Release/SuperResXBR/YuvToLinear.cso
Binary file not shown.
Binary file added Release/SuperResXBR/super-xbr-pass0.cso
Binary file not shown.
Binary file added Release/SuperResXBR/super-xbr-pass1.cso
Binary file not shown.
Binary file added Release/SuperResXBR/super-xbr-pass2.cso
Binary file not shown.
4 changes: 2 additions & 2 deletions Shaders/SuperRes/SuperRes.avsi
@@ -1,4 +1,4 @@
function SuperRes(clip Input, int "Passes", float "Strength", float "Softness", string "UpscaleCommand", string "MatrixIn", string "MatrixOut", string "FormatOut", bool "Convert", bool "lsb_in", bool "lsb_upscale", bool "lsb_out")
function SuperRes(clip Input, int "Passes", float "Strength", float "Softness", string "UpscaleCommand", string "MatrixIn", string "MatrixOut", string "FormatOut", bool "Convert", bool "ConvertYuv", bool "lsb_in", bool "lsb_upscale", bool "lsb_out")
{
Passes = default(Passes, 1)
Strength = default(Strength, 1)
Expand All @@ -7,6 +7,7 @@ function SuperRes(clip Input, int "Passes", float "Strength", float "Softness",
MatrixOut = default(MatrixOut, "709")
FormatOut = default(FormatOut, "")
Convert = default(Convert, true)
ConvertYuv = default(ConvertYuv, Convert ? !Input.IsRGB() : true)
lsb_in = default(lsb_in, false)
lsb_upscale = default(lsb_upscale, false)
lsb_out = default(lsb_out, false)
Expand All @@ -24,7 +25,6 @@ function SuperRes(clip Input, int "Passes", float "Strength", float "Softness",
PrecisionIn = Convert && !lsb_in ? 1 : 2
PrecisionUpscale = Convert && !lsb_upscale ? 1 : 2
PrecisionOut = Convert && !lsb_out ? 1 : 2
ConvertYuv = convert && !IsRGB()
sourceFormat = FormatOut != "" ? FormatOut : IsYV12 ? "YV12" : IsYV24 ? "YV24" : IsRGB24 ? "RGB24" : IsRGB32 ? "RGB32" : ""
Assert(sourceFormat != "", chr(10) + "Source must be YV12, YV24, RGB24 or RGB32" + chr(10))

Expand Down
7 changes: 4 additions & 3 deletions Shaders/SuperResXBR/SuperResXBR.avsi
@@ -1,4 +1,4 @@
function SuperResXBR(clip Input, int "Passes", float "Strength", float "Softness", float "xbrEdgeStrength", float "xbrSharpness", string "MatrixIn", string "MatrixOut", string "FormatOut", bool "Convert", bool "lsb_in", bool "lsb_out")
function SuperResXBR(clip Input, int "Passes", float "Strength", float "Softness", float "xbrEdgeStrength", float "xbrSharpness", string "MatrixIn", string "MatrixOut", string "FormatOut", bool "Convert", bool "ConvertYuv", bool "lsb_in", bool "lsb_out")
{
Passes = default(Passes, 1)
Strength = default(Strength, 1)
Expand All @@ -9,6 +9,7 @@ function SuperResXBR(clip Input, int "Passes", float "Strength", float "Softness
MatrixOut = default(MatrixOut, "709")
FormatOut = default(FormatOut, "")
Convert = default(Convert, true)
ConvertYuv = default(ConvertYuv, Convert ? !Input.IsRGB() : true)
lsb_in = default(lsb_in, false)
lsb_out = default(lsb_out, false)

Expand All @@ -25,7 +26,6 @@ function SuperResXBR(clip Input, int "Passes", float "Strength", float "Softness

PrecisionIn = Convert && !lsb_in ? 1 : 2
PrecisionOut = Convert && !lsb_out ? 1 : 2
ConvertYuv = convert && !IsRGB()
sourceFormat = FormatOut != "" ? FormatOut : IsYV12 ? "YV12" : IsYV24 ? "YV24" : IsRGB24 ? "RGB24" : IsRGB32 ? "RGB32" : ""
Assert(sourceFormat != "", chr(10) + "Source must be YV12, YV24, RGB24 or RGB32" + chr(10))

Expand All @@ -36,6 +36,7 @@ function SuperResXBR(clip Input, int "Passes", float "Strength", float "Softness
size1_string = string(2*InputWidth) + "," + string(2*InputHeight) + "," + string(1./(2*InputWidth),"%.32f") + "," + string(1./(2*InputHeight),"%.32f") + "f"

Input = convert ? ConvertToShader(PrecisionIn, lsb=lsb_in) : last
Shader(Output=2)

# Super-xBR
Shader("super-xbr-pass0.cso",\
Expand All @@ -56,7 +57,7 @@ function SuperResXBR(clip Input, int "Passes", float "Strength", float "Softness
Passes > 1 ? SuperResPass(Input, Strength, Softness, 2, Passes, ConvertYuv, Convert, PrecisionIn, MatrixIn, MatrixOut) : nop
Passes > 2 ? SuperResPass(Input, Strength, Softness, 3, Passes, ConvertYuv, Convert, PrecisionIn, MatrixIn, MatrixOut) : nop

ExecuteShader(last, Input, Input, Precision=3, Clip1Precision=PrecisionIn, OutputPrecision=PrecisionOut)
ExecuteShader(last, Input, Precision=3, Clip1Precision=PrecisionIn, OutputPrecision=PrecisionOut)
convert ? ConvertFromShader(PrecisionOut, format=sourceFormat, lsb=lsb_out) : last
}

Expand Down
6 changes: 3 additions & 3 deletions Shaders/SuperResXBR/Test.avs
Expand Up @@ -5,9 +5,9 @@ Import(P+"dither.avsi")
Import("SuperResXBR.avsi")
Import(P+"ResizeX.avsi")

#SetMTMode(3,8)
SetMTMode(3,8)
AviSource("F:\AVSMeter\Preview.avi", audio=false, pixel_type="YV12")
#SetMTMode(2)
SetMTMode(2)
SuperResXBR(MatrixIn="601")
SuperResXBR()
#SuperResXBR()
#ResizeX(944, 720, 0, 4, -4, -4)
13 changes: 11 additions & 2 deletions Src/D3D9RenderImpl.cpp
Expand Up @@ -265,6 +265,15 @@ HRESULT D3D9RenderImpl::CreateScene(CommandStruct* cmd, IScriptEnvironment* env)
return m_pDevice->EndScene();
}

HRESULT D3D9RenderImpl::CopyBuffer(InputTexture* srcSurface, int commandIndex, int outputIndex, IScriptEnvironment* env) {
InputTexture* dstSurface = &m_InputTextures[9 + commandIndex];
dstSurface->ClipIndex = outputIndex;

//HR(m_pDevice->ColorFill(dstSurface->Surface, NULL, D3DCOLOR_ARGB(0xFF, 0, 0, 0)));
HR(m_pDevice->StretchRect(srcSurface->Surface, NULL, dstSurface->Surface, NULL, D3DTEXF_POINT));
return S_OK;
}

HRESULT D3D9RenderImpl::CopyAviSynthToBuffer(const byte* src, int srcPitch, int index, int width, int height, IScriptEnvironment* env) {
// Copies source frame into main surface buffer, or into additional input textures
CComPtr<IDirect3DSurface9> destSurface = m_InputTextures[index].Memory;
Expand All @@ -280,7 +289,7 @@ HRESULT D3D9RenderImpl::CopyAviSynthToBuffer(const byte* src, int srcPitch, int
HR(destSurface->UnlockRect());

// Copy to GPU
HR(m_pDevice->ColorFill(m_InputTextures[index].Surface, NULL, D3DCOLOR_ARGB(0xFF, 0, 0, 0)));
//HR(m_pDevice->ColorFill(m_InputTextures[index].Surface, NULL, D3DCOLOR_ARGB(0xFF, 0, 0, 0)));
return (m_pDevice->StretchRect(m_InputTextures[index].Memory, NULL, m_InputTextures[index].Surface, NULL, D3DTEXF_POINT));
}

Expand All @@ -294,7 +303,7 @@ HRESULT D3D9RenderImpl::CopyFromRenderTarget(int dstIndex, int outputIndex, int
HR(m_pDevice->GetRenderTarget(0, &pReadSurfaceGpu));
Output->ClipIndex = outputIndex;
if (Output->Memory == NULL) {
HR(m_pDevice->ColorFill(Output->Surface, NULL, D3DCOLOR_ARGB(0xFF, 0, 0, 0)));
//HR(m_pDevice->ColorFill(Output->Surface, NULL, D3DCOLOR_ARGB(0xFF, 0, 0, 0)));
HR(m_pDevice->StretchRect(pReadSurfaceGpu, NULL, Output->Surface, NULL, D3DTEXF_POINT));
}
else {
Expand Down
1 change: 1 addition & 0 deletions Src/D3D9RenderImpl.h
Expand Up @@ -39,6 +39,7 @@ class D3D9RenderImpl

HRESULT Initialize(HWND hDisplayWindow, int clipPrecision[9], int precision, int outputPrecision);
HRESULT CreateInputTexture(int index, int clipIndex, int width, int height, bool memoryTexture, bool isSystemMemory);
HRESULT CopyBuffer(InputTexture* srcSurface, int commandIndex, int outputIndex, IScriptEnvironment* env);
HRESULT CopyAviSynthToBuffer(const byte* src, int srcPitch, int index, int width, int height, IScriptEnvironment* env);
HRESULT CopyBufferToAviSynth(int commandIndex, byte* dst, int dstPitch, IScriptEnvironment* env);
HRESULT ProcessFrame(CommandStruct* cmd, int width, int height, bool isLast, IScriptEnvironment* env);
Expand Down

0 comments on commit 771f8ed

Please sign in to comment.