diff --git a/EdgeFixer/EdgeFixer.vcxproj b/EdgeFixer/EdgeFixer.vcxproj index b7f8c1d..a80c348 100644 --- a/EdgeFixer/EdgeFixer.vcxproj +++ b/EdgeFixer/EdgeFixer.vcxproj @@ -78,7 +78,7 @@ Disabled true MultiThreadedDebug - $(ProjectDir)..\AviSynthPlus\avs_core\include + C:\Program Files (x86)\AviSynth+\FilterSDK\include;C:\Program Files (x86)\VapourSynth\sdk\include\vapoursynth true @@ -90,7 +90,7 @@ Disabled true MultiThreadedDebug - $(ProjectDir)..\AviSynthPlus\avs_core\include + C:\Program Files (x86)\AviSynth+\FilterSDK\include;C:\Program Files (x86)\VapourSynth\sdk\include\vapoursynth true @@ -104,7 +104,7 @@ true true MultiThreaded - $(ProjectDir)..\AviSynthPlus\avs_core\include + C:\Program Files (x86)\AviSynth+\FilterSDK\include;C:\Program Files (x86)\VapourSynth\sdk\include\vapoursynth true @@ -120,7 +120,7 @@ true true MultiThreaded - C:\Program Files (x86)\AviSynth+\FilterSDK\include + C:\Program Files (x86)\AviSynth+\FilterSDK\include;C:\Program Files (x86)\VapourSynth\sdk\include\vapoursynth true @@ -134,10 +134,7 @@ - - - diff --git a/EdgeFixer/EdgeFixer.vcxproj.filters b/EdgeFixer/EdgeFixer.vcxproj.filters index a6d56cb..2ac713c 100644 --- a/EdgeFixer/EdgeFixer.vcxproj.filters +++ b/EdgeFixer/EdgeFixer.vcxproj.filters @@ -29,14 +29,5 @@ Header Files - - Header Files - - - Header Files - - - Header Files - \ No newline at end of file diff --git a/EdgeFixer/VSHelper.h b/EdgeFixer/VSHelper.h deleted file mode 100644 index 3d60441..0000000 --- a/EdgeFixer/VSHelper.h +++ /dev/null @@ -1,174 +0,0 @@ -/***************************************************************************** -* Copyright (c) 2012-2015 Fredrik Mellbin -* --- Legal stuff --- -* This program is free software. It comes without any warranty, to -* the extent permitted by applicable law. You can redistribute it -* and/or modify it under the terms of the Do What The Fuck You Want -* To Public License, Version 2, as published by Sam Hocevar. See -* http://sam.zoy.org/wtfpl/COPYING for more details. -*****************************************************************************/ - -#ifndef VSHELPER_H -#define VSHELPER_H - -#include -#include -#include -#include -#include -#include -#ifdef _WIN32 -#include -#endif -#include "VapourSynth.h" - -/* Visual Studio doesn't recognize inline in c mode */ -#if defined(_MSC_VER) && !defined(__cplusplus) -#define inline _inline -#endif - -/* A kinda portable definition of the C99 restrict keyword (or its inofficial C++ equivalent) */ -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* Available in C99 */ -#define VS_RESTRICT restrict -#elif defined(__cplusplus) || defined(_MSC_VER) /* Almost all relevant C++ compilers support it so just assume it works */ -#define VS_RESTRICT __restrict -#else /* Not supported */ -#define VS_RESTRICT -#endif - -#ifdef _WIN32 -#define VS_ALIGNED_MALLOC(pptr, size, alignment) do { *(pptr) = _aligned_malloc((size), (alignment)); } while (0) -#define VS_ALIGNED_FREE(ptr) do { _aligned_free((ptr)); } while (0) -#else -#define VS_ALIGNED_MALLOC(pptr, size, alignment) do { if(posix_memalign((void**)(pptr), (alignment), (size))) *((void**)pptr) = NULL; } while (0) -#define VS_ALIGNED_FREE(ptr) do { free((ptr)); } while (0) -#endif - -#define VSMAX(a,b) ((a) > (b) ? (a) : (b)) -#define VSMIN(a,b) ((a) > (b) ? (b) : (a)) - -#ifdef __cplusplus -/* A nicer templated malloc for all the C++ users out there */ -#if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1900) -template -#else -template -#endif -static inline T* vs_aligned_malloc(size_t size, size_t alignment) { -#ifdef _WIN32 - return (T*)_aligned_malloc(size, alignment); -#else - void *tmp = NULL; - if (posix_memalign(&tmp, alignment, size)) - tmp = 0; - return (T*)tmp; -#endif -} - -static inline void vs_aligned_free(void *ptr) { - VS_ALIGNED_FREE(ptr); -} -#endif /* __cplusplus */ - -/* convenience function for checking if the format never changes between frames */ -static inline int isConstantFormat(const VSVideoInfo *vi) { - return vi->height > 0 && vi->width > 0 && vi->format; -} - -/* convenience function to check for if two clips have the same format (unknown/changeable will be considered the same too) */ -static inline int isSameFormat(const VSVideoInfo *v1, const VSVideoInfo *v2) { - return v1->height == v2->height && v1->width == v2->width && v1->format == v2->format; -} - -/* multiplies and divides a rational number, such as a frame duration, in place and reduces the result */ -static inline void muldivRational(int64_t *num, int64_t *den, int64_t mul, int64_t div) { - /* do nothing if the rational number is invalid */ - if (!*den) - return; - - /* nobody wants to accidentally divide by zero */ - assert(div); - - int64_t a, b; - *num *= mul; - *den *= div; - a = *num; - b = *den; - while (b != 0) { - int64_t t = a; - a = b; - b = t % b; - } - if (a < 0) - a = -a; - *num /= a; - *den /= a; -} - -/* reduces a rational number */ -static inline void vs_normalizeRational(int64_t *num, int64_t *den) { - muldivRational(num, den, 1, 1); -} - -/* add two rational numbers and reduces the result */ -static inline void vs_addRational(int64_t *num, int64_t *den, int64_t addnum, int64_t addden) { - /* do nothing if the rational number is invalid */ - if (!*den) - return; - - /* nobody wants to accidentally add an invalid rational number */ - assert(addden); - - if (*den == addden) { - *num += addnum; - } else { - int64_t temp = addden; - addnum *= *den; - addden *= *den; - *num *= temp; - *den *= temp; - - *num += addnum; - - vs_normalizeRational(num, den); - } -} - -/* converts an int64 to int with saturation, useful to silence warnings when reading int properties among other things */ -static inline int int64ToIntS(int64_t i) { - if (i > INT_MAX) - return INT_MAX; - else if (i < INT_MIN) - return INT_MIN; - else return (int)i; -} - -static inline void vs_bitblt(void *dstp, int dst_stride, const void *srcp, int src_stride, size_t row_size, size_t height) { - if (height) { - if (src_stride == dst_stride && src_stride == (int)row_size) { - memcpy(dstp, srcp, row_size * height); - } else { - const uint8_t *srcp8 = (const uint8_t *)srcp; - uint8_t *dstp8 = (uint8_t *)dstp; - size_t i; - for (i = 0; i < height; i++) { - memcpy(dstp8, srcp8, row_size); - srcp8 += src_stride; - dstp8 += dst_stride; - } - } - } -} - -/* check if the frame dimensions are valid for a given format */ -/* returns non-zero for valid width and height */ -static inline int areValidDimensions(const VSFormat *fi, int width, int height) { - return !(width % (1 << fi->subSamplingW) || height % (1 << fi->subSamplingH)); -} - -/* Visual Studio doesn't recognize inline in c mode */ -#if defined(_MSC_VER) && !defined(__cplusplus) -#undef inline -#endif - -#endif diff --git a/EdgeFixer/VapourSynth.h b/EdgeFixer/VapourSynth.h deleted file mode 100644 index 5943565..0000000 --- a/EdgeFixer/VapourSynth.h +++ /dev/null @@ -1,342 +0,0 @@ -/* -* Copyright (c) 2012-2017 Fredrik Mellbin -* -* This file is part of VapourSynth. -* -* VapourSynth is free software; you can redistribute it and/or -* modify it under the terms of the GNU Lesser General Public -* License as published by the Free Software Foundation; either -* version 2.1 of the License, or (at your option) any later version. -* -* VapourSynth is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -* Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public -* License along with VapourSynth; if not, write to the Free Software -* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef VAPOURSYNTH_H -#define VAPOURSYNTH_H - -#include - -#define VAPOURSYNTH_API_MAJOR 3 -#define VAPOURSYNTH_API_MINOR 5 -#define VAPOURSYNTH_API_VERSION ((VAPOURSYNTH_API_MAJOR << 16) | (VAPOURSYNTH_API_MINOR)) - -/* Convenience for C++ users. */ -#ifdef __cplusplus -# define VS_EXTERN_C extern "C" -# if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1900) -# define VS_NOEXCEPT noexcept -# else -# define VS_NOEXCEPT -# endif -#else -# define VS_EXTERN_C -# define VS_NOEXCEPT -#endif - -#if defined(_WIN32) && !defined(_WIN64) -# define VS_CC __stdcall -#else -# define VS_CC -#endif - -/* And now for some symbol hide-and-seek... */ -#if defined(_WIN32) /* Windows being special */ -# define VS_EXTERNAL_API(ret) VS_EXTERN_C __declspec(dllexport) ret VS_CC -#elif defined(__GNUC__) && __GNUC__ >= 4 -# define VS_EXTERNAL_API(ret) VS_EXTERN_C __attribute__((visibility("default"))) ret VS_CC -#else -# define VS_EXTERNAL_API(ret) VS_EXTERN_C ret VS_CC -#endif - -#if !defined(VS_CORE_EXPORTS) && defined(_WIN32) -# define VS_API(ret) VS_EXTERN_C __declspec(dllimport) ret VS_CC -#else -# define VS_API(ret) VS_EXTERNAL_API(ret) -#endif - -typedef struct VSFrameRef VSFrameRef; -typedef struct VSNodeRef VSNodeRef; -typedef struct VSCore VSCore; -typedef struct VSPlugin VSPlugin; -typedef struct VSNode VSNode; -typedef struct VSFuncRef VSFuncRef; -typedef struct VSMap VSMap; -typedef struct VSAPI VSAPI; -typedef struct VSFrameContext VSFrameContext; - -typedef enum VSColorFamily { - /* all planar formats */ - cmGray = 1000000, - cmRGB = 2000000, - cmYUV = 3000000, - cmYCoCg = 4000000, - /* special for compatibility */ - cmCompat = 9000000 -} VSColorFamily; - -typedef enum VSSampleType { - stInteger = 0, - stFloat = 1 -} VSSampleType; - -/* The +10 is so people won't be using the constants interchangably "by accident" */ -typedef enum VSPresetFormat { - pfNone = 0, - - pfGray8 = cmGray + 10, - pfGray16, - - pfGrayH, - pfGrayS, - - pfYUV420P8 = cmYUV + 10, - pfYUV422P8, - pfYUV444P8, - pfYUV410P8, - pfYUV411P8, - pfYUV440P8, - - pfYUV420P9, - pfYUV422P9, - pfYUV444P9, - - pfYUV420P10, - pfYUV422P10, - pfYUV444P10, - - pfYUV420P16, - pfYUV422P16, - pfYUV444P16, - - pfYUV444PH, - pfYUV444PS, - - pfYUV420P12, - pfYUV422P12, - pfYUV444P12, - - pfYUV420P14, - pfYUV422P14, - pfYUV444P14, - - pfRGB24 = cmRGB + 10, - pfRGB27, - pfRGB30, - pfRGB48, - - pfRGBH, - pfRGBS, - - /* special for compatibility, if you implement these in any filter I'll personally kill you */ - /* I'll also change their ids around to break your stuff regularly */ - pfCompatBGR32 = cmCompat + 10, - pfCompatYUY2 -} VSPresetFormat; - -typedef enum VSFilterMode { - fmParallel = 100, /* completely parallel execution */ - fmParallelRequests = 200, /* for filters that are serial in nature but can request one or more frames they need in advance */ - fmUnordered = 300, /* for filters that modify their internal state every request */ - fmSerial = 400 /* for source filters and compatibility with other filtering architectures */ -} VSFilterMode; - -typedef struct VSFormat { - char name[32]; - int id; - int colorFamily; /* see VSColorFamily */ - int sampleType; /* see VSSampleType */ - int bitsPerSample; /* number of significant bits */ - int bytesPerSample; /* actual storage is always in a power of 2 and the smallest possible that can fit the number of bits used per sample */ - - int subSamplingW; /* log2 subsampling factor, applied to second and third plane */ - int subSamplingH; - - int numPlanes; /* implicit from colorFamily */ -} VSFormat; - -typedef enum VSNodeFlags { - nfNoCache = 1, - nfIsCache = 2, - nfMakeLinear = 4 /* api 3.3 */ -} VSNodeFlags; - -typedef enum VSPropTypes { - ptUnset = 'u', - ptInt = 'i', - ptFloat = 'f', - ptData = 's', - ptNode = 'c', - ptFrame = 'v', - ptFunction = 'm' -} VSPropTypes; - -typedef enum VSGetPropErrors { - peUnset = 1, - peType = 2, - peIndex = 4 -} VSGetPropErrors; - -typedef enum VSPropAppendMode { - paReplace = 0, - paAppend = 1, - paTouch = 2 -} VSPropAppendMode; - -typedef struct VSCoreInfo { - const char *versionString; - int core; - int api; - int numThreads; - int64_t maxFramebufferSize; - int64_t usedFramebufferSize; -} VSCoreInfo; - -typedef struct VSVideoInfo { - const VSFormat *format; - int64_t fpsNum; - int64_t fpsDen; - int width; - int height; - int numFrames; /* api 3.2 - no longer allowed to be 0 */ - int flags; -} VSVideoInfo; - -typedef enum VSActivationReason { - arInitial = 0, - arFrameReady = 1, - arAllFramesReady = 2, - arError = -1 -} VSActivationReason; - -typedef enum VSMessageType { - mtDebug = 0, - mtWarning = 1, - mtCritical = 2, - mtFatal = 3 -} VSMessageType; - -/* core entry point */ -typedef const VSAPI *(VS_CC *VSGetVapourSynthAPI)(int version); - -/* plugin function and filter typedefs */ -typedef void (VS_CC *VSPublicFunction)(const VSMap *in, VSMap *out, void *userData, VSCore *core, const VSAPI *vsapi); -typedef void (VS_CC *VSRegisterFunction)(const char *name, const char *args, VSPublicFunction argsFunc, void *functionData, VSPlugin *plugin); -typedef void (VS_CC *VSConfigPlugin)(const char *identifier, const char *defaultNamespace, const char *name, int apiVersion, int readonly, VSPlugin *plugin); -typedef void (VS_CC *VSInitPlugin)(VSConfigPlugin configFunc, VSRegisterFunction registerFunc, VSPlugin *plugin); -typedef void (VS_CC *VSFreeFuncData)(void *userData); -typedef void (VS_CC *VSFilterInit)(VSMap *in, VSMap *out, void **instanceData, VSNode *node, VSCore *core, const VSAPI *vsapi); -typedef const VSFrameRef *(VS_CC *VSFilterGetFrame)(int n, int activationReason, void **instanceData, void **frameData, VSFrameContext *frameCtx, VSCore *core, const VSAPI *vsapi); -typedef void (VS_CC *VSFilterFree)(void *instanceData, VSCore *core, const VSAPI *vsapi); - -/* other */ -typedef void (VS_CC *VSFrameDoneCallback)(void *userData, const VSFrameRef *f, int n, VSNodeRef *, const char *errorMsg); -typedef void (VS_CC *VSMessageHandler)(int msgType, const char *msg, void *userData); - -struct VSAPI { - VSCore *(VS_CC *createCore)(int threads) VS_NOEXCEPT; - void (VS_CC *freeCore)(VSCore *core) VS_NOEXCEPT; - const VSCoreInfo *(VS_CC *getCoreInfo)(VSCore *core) VS_NOEXCEPT; - - const VSFrameRef *(VS_CC *cloneFrameRef)(const VSFrameRef *f) VS_NOEXCEPT; - VSNodeRef *(VS_CC *cloneNodeRef)(VSNodeRef *node) VS_NOEXCEPT; - VSFuncRef *(VS_CC *cloneFuncRef)(VSFuncRef *f) VS_NOEXCEPT; - - void (VS_CC *freeFrame)(const VSFrameRef *f) VS_NOEXCEPT; - void (VS_CC *freeNode)(VSNodeRef *node) VS_NOEXCEPT; - void (VS_CC *freeFunc)(VSFuncRef *f) VS_NOEXCEPT; - - VSFrameRef *(VS_CC *newVideoFrame)(const VSFormat *format, int width, int height, const VSFrameRef *propSrc, VSCore *core) VS_NOEXCEPT; - VSFrameRef *(VS_CC *copyFrame)(const VSFrameRef *f, VSCore *core) VS_NOEXCEPT; - void (VS_CC *copyFrameProps)(const VSFrameRef *src, VSFrameRef *dst, VSCore *core) VS_NOEXCEPT; - - void (VS_CC *registerFunction)(const char *name, const char *args, VSPublicFunction argsFunc, void *functionData, VSPlugin *plugin) VS_NOEXCEPT; - VSPlugin *(VS_CC *getPluginById)(const char *identifier, VSCore *core) VS_NOEXCEPT; - VSPlugin *(VS_CC *getPluginByNs)(const char *ns, VSCore *core) VS_NOEXCEPT; - VSMap *(VS_CC *getPlugins)(VSCore *core) VS_NOEXCEPT; - VSMap *(VS_CC *getFunctions)(VSPlugin *plugin) VS_NOEXCEPT; - void (VS_CC *createFilter)(const VSMap *in, VSMap *out, const char *name, VSFilterInit init, VSFilterGetFrame getFrame, VSFilterFree free, int filterMode, int flags, void *instanceData, VSCore *core) VS_NOEXCEPT; - void (VS_CC *setError)(VSMap *map, const char *errorMessage) VS_NOEXCEPT; /* use to signal errors outside filter getframe functions */ - const char *(VS_CC *getError)(const VSMap *map) VS_NOEXCEPT; /* use to query errors, returns 0 if no error */ - void (VS_CC *setFilterError)(const char *errorMessage, VSFrameContext *frameCtx) VS_NOEXCEPT; /* use to signal errors in the filter getframe function */ - VSMap *(VS_CC *invoke)(VSPlugin *plugin, const char *name, const VSMap *args) VS_NOEXCEPT; - - const VSFormat *(VS_CC *getFormatPreset)(int id, VSCore *core) VS_NOEXCEPT; - const VSFormat *(VS_CC *registerFormat)(int colorFamily, int sampleType, int bitsPerSample, int subSamplingW, int subSamplingH, VSCore *core) VS_NOEXCEPT; - - const VSFrameRef *(VS_CC *getFrame)(int n, VSNodeRef *node, char *errorMsg, int bufSize) VS_NOEXCEPT; /* do never use inside a filter's getframe function, for external applications using the core as a library or for requesting frames in a filter constructor */ - void (VS_CC *getFrameAsync)(int n, VSNodeRef *node, VSFrameDoneCallback callback, void *userData) VS_NOEXCEPT; /* do never use inside a filter's getframe function, for external applications using the core as a library or for requesting frames in a filter constructor */ - const VSFrameRef *(VS_CC *getFrameFilter)(int n, VSNodeRef *node, VSFrameContext *frameCtx) VS_NOEXCEPT; /* only use inside a filter's getframe function */ - void (VS_CC *requestFrameFilter)(int n, VSNodeRef *node, VSFrameContext *frameCtx) VS_NOEXCEPT; /* only use inside a filter's getframe function */ - void (VS_CC *queryCompletedFrame)(VSNodeRef **node, int *n, VSFrameContext *frameCtx) VS_NOEXCEPT; /* only use inside a filter's getframe function */ - void (VS_CC *releaseFrameEarly)(VSNodeRef *node, int n, VSFrameContext *frameCtx) VS_NOEXCEPT; /* only use inside a filter's getframe function */ - - int (VS_CC *getStride)(const VSFrameRef *f, int plane) VS_NOEXCEPT; - const uint8_t *(VS_CC *getReadPtr)(const VSFrameRef *f, int plane) VS_NOEXCEPT; - uint8_t *(VS_CC *getWritePtr)(VSFrameRef *f, int plane) VS_NOEXCEPT; - - VSFuncRef *(VS_CC *createFunc)(VSPublicFunction func, void *userData, VSFreeFuncData free, VSCore *core, const VSAPI *vsapi) VS_NOEXCEPT; - void (VS_CC *callFunc)(VSFuncRef *func, const VSMap *in, VSMap *out, VSCore *core, const VSAPI *vsapi) VS_NOEXCEPT; /* core and vsapi arguments are completely ignored, they only remain to preserve ABI */ - - /* property access functions */ - VSMap *(VS_CC *createMap)(void) VS_NOEXCEPT; - void (VS_CC *freeMap)(VSMap *map) VS_NOEXCEPT; - void (VS_CC *clearMap)(VSMap *map) VS_NOEXCEPT; - - const VSVideoInfo *(VS_CC *getVideoInfo)(VSNodeRef *node) VS_NOEXCEPT; - void (VS_CC *setVideoInfo)(const VSVideoInfo *vi, int numOutputs, VSNode *node) VS_NOEXCEPT; - const VSFormat *(VS_CC *getFrameFormat)(const VSFrameRef *f) VS_NOEXCEPT; - int (VS_CC *getFrameWidth)(const VSFrameRef *f, int plane) VS_NOEXCEPT; - int (VS_CC *getFrameHeight)(const VSFrameRef *f, int plane) VS_NOEXCEPT; - const VSMap *(VS_CC *getFramePropsRO)(const VSFrameRef *f) VS_NOEXCEPT; - VSMap *(VS_CC *getFramePropsRW)(VSFrameRef *f) VS_NOEXCEPT; - - int (VS_CC *propNumKeys)(const VSMap *map) VS_NOEXCEPT; - const char *(VS_CC *propGetKey)(const VSMap *map, int index) VS_NOEXCEPT; - int (VS_CC *propNumElements)(const VSMap *map, const char *key) VS_NOEXCEPT; - char (VS_CC *propGetType)(const VSMap *map, const char *key) VS_NOEXCEPT; - - int64_t(VS_CC *propGetInt)(const VSMap *map, const char *key, int index, int *error) VS_NOEXCEPT; - double(VS_CC *propGetFloat)(const VSMap *map, const char *key, int index, int *error) VS_NOEXCEPT; - const char *(VS_CC *propGetData)(const VSMap *map, const char *key, int index, int *error) VS_NOEXCEPT; - int (VS_CC *propGetDataSize)(const VSMap *map, const char *key, int index, int *error) VS_NOEXCEPT; - VSNodeRef *(VS_CC *propGetNode)(const VSMap *map, const char *key, int index, int *error) VS_NOEXCEPT; - const VSFrameRef *(VS_CC *propGetFrame)(const VSMap *map, const char *key, int index, int *error) VS_NOEXCEPT; - VSFuncRef *(VS_CC *propGetFunc)(const VSMap *map, const char *key, int index, int *error) VS_NOEXCEPT; - - int (VS_CC *propDeleteKey)(VSMap *map, const char *key) VS_NOEXCEPT; - int (VS_CC *propSetInt)(VSMap *map, const char *key, int64_t i, int append) VS_NOEXCEPT; - int (VS_CC *propSetFloat)(VSMap *map, const char *key, double d, int append) VS_NOEXCEPT; - int (VS_CC *propSetData)(VSMap *map, const char *key, const char *data, int size, int append) VS_NOEXCEPT; - int (VS_CC *propSetNode)(VSMap *map, const char *key, VSNodeRef *node, int append) VS_NOEXCEPT; - int (VS_CC *propSetFrame)(VSMap *map, const char *key, const VSFrameRef *f, int append) VS_NOEXCEPT; - int (VS_CC *propSetFunc)(VSMap *map, const char *key, VSFuncRef *func, int append) VS_NOEXCEPT; - - int64_t (VS_CC *setMaxCacheSize)(int64_t bytes, VSCore *core) VS_NOEXCEPT; - int (VS_CC *getOutputIndex)(VSFrameContext *frameCtx) VS_NOEXCEPT; - VSFrameRef *(VS_CC *newVideoFrame2)(const VSFormat *format, int width, int height, const VSFrameRef **planeSrc, const int *planes, const VSFrameRef *propSrc, VSCore *core) VS_NOEXCEPT; - void (VS_CC *setMessageHandler)(VSMessageHandler handler, void *userData) VS_NOEXCEPT; - int (VS_CC *setThreadCount)(int threads, VSCore *core) VS_NOEXCEPT; - - const char *(VS_CC *getPluginPath)(const VSPlugin *plugin) VS_NOEXCEPT; - - /* api 3.1 */ - const int64_t *(VS_CC *propGetIntArray)(const VSMap *map, const char *key, int *error) VS_NOEXCEPT; - const double *(VS_CC *propGetFloatArray)(const VSMap *map, const char *key, int *error) VS_NOEXCEPT; - - int (VS_CC *propSetIntArray)(VSMap *map, const char *key, const int64_t *i, int size) VS_NOEXCEPT; - int (VS_CC *propSetFloatArray)(VSMap *map, const char *key, const double *d, int size) VS_NOEXCEPT; - - /* api 3.4 */ - void (VS_CC *logMessage)(int msgType, const char *msg) VS_NOEXCEPT; -}; - -VS_API(const VSAPI *) getVapourSynthAPI(int version) VS_NOEXCEPT; - -#endif /* VAPOURSYNTH_H */ diff --git a/EdgeFixer/avisynth_2.6.h b/EdgeFixer/avisynth_2.6.h deleted file mode 100644 index 4ad3d5b..0000000 --- a/EdgeFixer/avisynth_2.6.h +++ /dev/null @@ -1,975 +0,0 @@ -// Avisynth v2.5. Copyright 2002 Ben Rudiak-Gould et al. -// Avisynth v2.6. Copyright 2006 Klaus Post. -// Avisynth v2.6. Copyright 2009 Ian Brabham. -// http://www.avisynth.org - -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA, or visit -// http://www.gnu.org/copyleft/gpl.html . -// -// Linking Avisynth statically or dynamically with other modules is making -// a combined work based on Avisynth. Thus, the terms and conditions of -// the GNU General Public License cover the whole combination. -// -// As a special exception, the copyright holders of Avisynth give you -// permission to link Avisynth with independent modules that communicate -// with Avisynth solely through the interfaces defined in avisynth.h, -// regardless of the license terms of these independent modules, and to -// copy and distribute the resulting combined work under terms of your -// choice, provided that every copy of the combined work is accompanied -// by a complete copy of the source code of Avisynth (the version of -// Avisynth used to produce the combined work), being distributed under -// the terms of the GNU General Public License plus this exception. An -// independent module is a module which is not derived from or based on -// Avisynth, such as 3rd-party filters, import and export plugins, or -// graphical user interfaces. - - - - -#ifndef __AVISYNTH_6_H__ -#define __AVISYNTH_6_H__ - -enum { AVISYNTH_INTERFACE_VERSION = 6 }; - - -/* Define all types necessary for interfacing with avisynth.dll - Moved from internal.h */ - -// Win32 API macros, notably the types BYTE, DWORD, ULONG, etc. -#include - - -// Raster types used by VirtualDub & Avisynth -#define in64 (__int64)(unsigned short) -typedef unsigned long Pixel; // this will break on 64-bit machines! -typedef unsigned long Pixel32; -typedef unsigned char Pixel8; -typedef long PixCoord; -typedef long PixDim; -typedef long PixOffset; - - -/* Compiler-specific crap */ - -// Tell MSVC to stop precompiling here -#ifdef _MSC_VER - #pragma hdrstop -#endif - -// Set up debugging macros for MS compilers; for others, step down to the -// standard interface -#ifdef _MSC_VER - #include -#else - #define _RPT0(a,b) ((void)0) - #define _RPT1(a,b,c) ((void)0) - #define _RPT2(a,b,c,d) ((void)0) - #define _RPT3(a,b,c,d,e) ((void)0) - #define _RPT4(a,b,c,d,e,f) ((void)0) - - #define _ASSERTE(x) assert(x) - #include -#endif - - - -// I had problems with Premiere wanting 1-byte alignment for its structures, -// so I now set the Avisynth struct alignment explicitly here. -#pragma pack(push,8) - -#define FRAME_ALIGN 16 -// Default frame alignment is 16 bytes, to help P4, when using SSE2 - -// The VideoInfo struct holds global information about a clip (i.e. -// information that does not depend on the frame number). The GetVideoInfo -// method in IClip returns this struct. - -// Audio Sample information -typedef float SFLOAT; - -enum {SAMPLE_INT8 = 1<<0, - SAMPLE_INT16 = 1<<1, - SAMPLE_INT24 = 1<<2, // Int24 is a very stupid thing to code, but it's supported by some hardware. - SAMPLE_INT32 = 1<<3, - SAMPLE_FLOAT = 1<<4}; - -enum { - PLANAR_Y=1<<0, - PLANAR_U=1<<1, - PLANAR_V=1<<2, - PLANAR_ALIGNED=1<<3, - PLANAR_Y_ALIGNED=PLANAR_Y|PLANAR_ALIGNED, - PLANAR_U_ALIGNED=PLANAR_U|PLANAR_ALIGNED, - PLANAR_V_ALIGNED=PLANAR_V|PLANAR_ALIGNED, - PLANAR_A=1<<4, - PLANAR_R=1<<5, - PLANAR_G=1<<6, - PLANAR_B=1<<7, - PLANAR_A_ALIGNED=PLANAR_A|PLANAR_ALIGNED, - PLANAR_R_ALIGNED=PLANAR_R|PLANAR_ALIGNED, - PLANAR_G_ALIGNED=PLANAR_G|PLANAR_ALIGNED, - PLANAR_B_ALIGNED=PLANAR_B|PLANAR_ALIGNED, - }; - -class AvisynthError /* exception */ { -public: - const char* const msg; - AvisynthError(const char* _msg) : msg(_msg) {} -}; // end class AvisynthError - - -/* Forward references */ -struct __single_inheritance VideoInfo; -class __single_inheritance VideoFrameBuffer; -class __single_inheritance VideoFrame; -class IClip; -class __single_inheritance PClip; -class __single_inheritance PVideoFrame; -class IScriptEnvironment; -class __single_inheritance AVSValue; - - -/* - * Avisynth C++ plugin API code function pointers. - * - * In order to maintain binary compatibility with - * future version do not change the order of the - * existing function pointers. It will be baked - * into all existing plugins. - * - * Add new function pointers to the end of the - * structure. The linkage macros generate some - * protection code to ensure newer plugin do not - * call non-existing functions in an older host. - */ - -struct AVS_Linkage { - - size_t Size; - -/**********************************************************************/ - -// struct VideoInfo - bool (VideoInfo::*HasVideo)() const; - bool (VideoInfo::*HasAudio)() const; - bool (VideoInfo::*IsRGB)() const; - bool (VideoInfo::*IsRGB24)() const; - bool (VideoInfo::*IsRGB32)() const; - bool (VideoInfo::*IsYUV)() const; - bool (VideoInfo::*IsYUY2)() const; - bool (VideoInfo::*IsYV24)() const; - bool (VideoInfo::*IsYV16)() const; - bool (VideoInfo::*IsYV12)() const; - bool (VideoInfo::*IsYV411)() const; - bool (VideoInfo::*IsY8)() const; - bool (VideoInfo::*IsColorSpace)(int c_space) const; - bool (VideoInfo::*Is)(int property) const; - bool (VideoInfo::*IsPlanar)() const; - bool (VideoInfo::*IsFieldBased)() const; - bool (VideoInfo::*IsParityKnown)() const; - bool (VideoInfo::*IsBFF)() const; - bool (VideoInfo::*IsTFF)() const; - bool (VideoInfo::*IsVPlaneFirst)() const; - int (VideoInfo::*BytesFromPixels)(int pixels) const; - int (VideoInfo::*RowSize)(int plane) const; - int (VideoInfo::*BMPSize)() const; - __int64 (VideoInfo::*AudioSamplesFromFrames)(int frames) const; - int (VideoInfo::*FramesFromAudioSamples)(__int64 samples) const; - __int64 (VideoInfo::*AudioSamplesFromBytes)(__int64 bytes) const; - __int64 (VideoInfo::*BytesFromAudioSamples)(__int64 samples) const; - int (VideoInfo::*AudioChannels)() const; - int (VideoInfo::*SampleType)() const; - bool (VideoInfo::*IsSampleType)(int testtype) const; - int (VideoInfo::*SamplesPerSecond)() const; - int (VideoInfo::*BytesPerAudioSample)() const; - void (VideoInfo::*SetFieldBased)(bool isfieldbased); - void (VideoInfo::*Set)(int property); - void (VideoInfo::*Clear)(int property); - int (VideoInfo::*GetPlaneWidthSubsampling)(int plane) const; - int (VideoInfo::*GetPlaneHeightSubsampling)(int plane) const; - int (VideoInfo::*BitsPerPixel)() const; - int (VideoInfo::*BytesPerChannelSample)() const; - void (VideoInfo::*SetFPS)(unsigned numerator, unsigned denominator); - void (VideoInfo::*MulDivFPS)(unsigned multiplier, unsigned divisor); - bool (VideoInfo::*IsSameColorspace)(const VideoInfo& vi) const; -// end struct VideoInfo - -/**********************************************************************/ - -// class VideoFrameBuffer - const BYTE* (VideoFrameBuffer::*VFBGetReadPtr)() const; - BYTE* (VideoFrameBuffer::*VFBGetWritePtr)(); - size_t (VideoFrameBuffer::*GetDataSize)() const; - int (VideoFrameBuffer::*GetSequenceNumber)() const; - int (VideoFrameBuffer::*GetRefcount)() const; -// end class VideoFrameBuffer - -/**********************************************************************/ - -// class VideoFrame - int (VideoFrame::*GetPitch)(int plane) const; - int (VideoFrame::*GetRowSize)(int plane) const; - int (VideoFrame::*GetHeight)(int plane) const; - VideoFrameBuffer* (VideoFrame::*GetFrameBuffer)() const; - size_t (VideoFrame::*GetOffset)(int plane) const; - const BYTE* (VideoFrame::*VFGetReadPtr)(int plane) const; - bool (VideoFrame::*IsWritable)() const; - BYTE* (VideoFrame::*VFGetWritePtr)(int plane) const; - void (VideoFrame::*VideoFrame_DESTRUCTOR)(); -// end class VideoFrame - -/**********************************************************************/ - -// class IClip - /* nothing */ -// end class IClip - -/**********************************************************************/ - -// class PClip - void (PClip::*PClip_CONSTRUCTOR0)(); - void (PClip::*PClip_CONSTRUCTOR1)(const PClip& x); - void (PClip::*PClip_CONSTRUCTOR2)(IClip* x); - void (PClip::*PClip_OPERATOR_ASSIGN0)(IClip* x); - void (PClip::*PClip_OPERATOR_ASSIGN1)(const PClip& x); - void (PClip::*PClip_DESTRUCTOR)(); -// end class PClip - -/**********************************************************************/ - -// class PVideoFrame - void (PVideoFrame::*PVideoFrame_CONSTRUCTOR0)(); - void (PVideoFrame::*PVideoFrame_CONSTRUCTOR1)(const PVideoFrame& x); - void (PVideoFrame::*PVideoFrame_CONSTRUCTOR2)(VideoFrame* x); - void (PVideoFrame::*PVideoFrame_OPERATOR_ASSIGN0)(VideoFrame* x); - void (PVideoFrame::*PVideoFrame_OPERATOR_ASSIGN1)(const PVideoFrame& x); - void (PVideoFrame::*PVideoFrame_DESTRUCTOR)(); -// end class PVideoFrame - -/**********************************************************************/ - -// class AVSValue - void (AVSValue::*AVSValue_CONSTRUCTOR0)(); - void (AVSValue::*AVSValue_CONSTRUCTOR1)(IClip* c); - void (AVSValue::*AVSValue_CONSTRUCTOR2)(const PClip& c); - void (AVSValue::*AVSValue_CONSTRUCTOR3)(bool b); - void (AVSValue::*AVSValue_CONSTRUCTOR4)(int i); - void (AVSValue::*AVSValue_CONSTRUCTOR5)(float f); - void (AVSValue::*AVSValue_CONSTRUCTOR6)(double f); - void (AVSValue::*AVSValue_CONSTRUCTOR7)(const char* s); - void (AVSValue::*AVSValue_CONSTRUCTOR8)(const AVSValue* a, int size); - void (AVSValue::*AVSValue_CONSTRUCTOR9)(const AVSValue& v); - void (AVSValue::*AVSValue_DESTRUCTOR)(); - AVSValue& (AVSValue::*AVSValue_OPERATOR_ASSIGN)(const AVSValue& v); - const AVSValue& (AVSValue::*AVSValue_OPERATOR_INDEX)(int index) const; - bool (AVSValue::*Defined)() const; - bool (AVSValue::*IsClip)() const; - bool (AVSValue::*IsBool)() const; - bool (AVSValue::*IsInt)() const; - bool (AVSValue::*IsFloat)() const; - bool (AVSValue::*IsString)() const; - bool (AVSValue::*IsArray)() const; - PClip (AVSValue::*AsClip)() const; - bool (AVSValue::*AsBool1)() const; - int (AVSValue::*AsInt1)() const; - const char* (AVSValue::*AsString1)() const; - double (AVSValue::*AsFloat1)() const; - bool (AVSValue::*AsBool2)(bool def) const; - int (AVSValue::*AsInt2)(int def) const; - double (AVSValue::*AsDblDef)(double def) const; - double (AVSValue::*AsFloat2)(float def) const; - const char* (AVSValue::*AsString2)(const char* def) const; - int (AVSValue::*ArraySize)() const; -// end class AVSValue - -/**********************************************************************/ -}; - -#ifdef AVISYNTH_CORE -/* Macro resolution for code inside Avisynth.dll */ -# define AVS_BakedCode(arg) ; -# define AVS_LinkCall(arg) -# define AVS_LinkCallV(arg) - -#else -/* Macro resolution for code inside user plugin */ -# ifdef AVS_LINKAGE_DLLIMPORT -extern __declspec(dllimport) const AVS_Linkage* const AVS_linkage; -# else -extern const AVS_Linkage* AVS_linkage; -# endif - -# ifndef offsetof -# include -# endif - -# define AVS_BakedCode(arg) { arg ; } -# define AVS_LinkCall(arg) !AVS_linkage || offsetof(AVS_Linkage, arg) >= AVS_linkage->Size ? 0 : (this->*(AVS_linkage->arg)) -# define AVS_LinkCallV(arg) !AVS_linkage || offsetof(AVS_Linkage, arg) >= AVS_linkage->Size ? *this : (this->*(AVS_linkage->arg)) - -#endif - -struct VideoInfo { - int width, height; // width=0 means no video - unsigned fps_numerator, fps_denominator; - int num_frames; - // This is more extensible than previous versions. - // More properties can be added seeminglesly. - - // Colorspace properties. -/* -7<<0 Planar Width Subsampling bits - Use (X+1) & 3 for GetPlaneWidthSubsampling - 000 => 1 YV12, YV16 - 001 => 2 YV411, YUV9 - 010 => reserved - 011 => 0 YV24 - 1xx => reserved - -1<<3 VPlaneFirst YV12, YV16, YV24, YV411, YUV9 -1<<4 UPlaneFirst I420 - -7<<8 Planar Height Subsampling bits - Use ((X>>8)+1) & 3 for GetPlaneHeightSubsampling - 000 => 1 YV12 - 001 => 2 YUV9 - 010 => reserved - 011 => 0 YV16, YV24, YV411 - 1xx => reserved - -7<<16 Sample resolution bits - 000 => 8 - 001 => 16 - 010 => 32 - 011 => reserved - 1xx => reserved - -Planar match mask 1111.0000.0000.0111.0000.0111.0000.0111 -Planar signature 10xx.0000.0000.00xx.0000.00xx.00xx.00xx -Planar filter mask 1111.1111.1111.1111.1111.1111.1100.1111 -*/ - enum { - CS_BGR = 1<<28, - CS_YUV = 1<<29, - CS_INTERLEAVED = 1<<30, - CS_PLANAR = 1<<31, - - CS_Shift_Sub_Width = 0, - CS_Shift_Sub_Height = 8, - CS_Shift_Sample_Bits = 16, - - CS_Sub_Width_Mask = 7 << CS_Shift_Sub_Width, - CS_Sub_Width_1 = 3 << CS_Shift_Sub_Width, // YV24 - CS_Sub_Width_2 = 0 << CS_Shift_Sub_Width, // YV12, I420, YV16 - CS_Sub_Width_4 = 1 << CS_Shift_Sub_Width, // YUV9, YV411 - - CS_VPlaneFirst = 1 << 3, // YV12, YV16, YV24, YV411, YUV9 - CS_UPlaneFirst = 1 << 4, // I420 - - CS_Sub_Height_Mask = 7 << CS_Shift_Sub_Height, - CS_Sub_Height_1 = 3 << CS_Shift_Sub_Height, // YV16, YV24, YV411 - CS_Sub_Height_2 = 0 << CS_Shift_Sub_Height, // YV12, I420 - CS_Sub_Height_4 = 1 << CS_Shift_Sub_Height, // YUV9 - - CS_Sample_Bits_Mask = 7 << CS_Shift_Sample_Bits, - CS_Sample_Bits_8 = 0 << CS_Shift_Sample_Bits, - CS_Sample_Bits_16 = 1 << CS_Shift_Sample_Bits, - CS_Sample_Bits_32 = 2 << CS_Shift_Sample_Bits, - - CS_PLANAR_MASK = CS_PLANAR | CS_INTERLEAVED | CS_YUV | CS_BGR | CS_Sample_Bits_Mask - | CS_Sub_Height_Mask | CS_Sub_Width_Mask, - CS_PLANAR_FILTER = ~( CS_VPlaneFirst | CS_UPlaneFirst ), - - // Specific colorformats - CS_UNKNOWN = 0, - CS_BGR24 = 1<<0 | CS_BGR | CS_INTERLEAVED, - CS_BGR32 = 1<<1 | CS_BGR | CS_INTERLEAVED, - CS_YUY2 = 1<<2 | CS_YUV | CS_INTERLEAVED, -// CS_YV12 = 1<<3 Reserved -// CS_I420 = 1<<4 Reserved - CS_RAW32 = 1<<5 | CS_INTERLEAVED, - -// YV12 must be 0xA000008 2.5 Baked API will see all new planar as YV12 -// I420 must be 0xA000010 - - CS_YV24 = CS_PLANAR | CS_YUV | CS_Sample_Bits_8 | CS_VPlaneFirst | CS_Sub_Height_1 | CS_Sub_Width_1, // YVU 4:4:4 planar - CS_YV16 = CS_PLANAR | CS_YUV | CS_Sample_Bits_8 | CS_VPlaneFirst | CS_Sub_Height_1 | CS_Sub_Width_2, // YVU 4:2:2 planar - CS_YV12 = CS_PLANAR | CS_YUV | CS_Sample_Bits_8 | CS_VPlaneFirst | CS_Sub_Height_2 | CS_Sub_Width_2, // YVU 4:2:0 planar - CS_I420 = CS_PLANAR | CS_YUV | CS_Sample_Bits_8 | CS_UPlaneFirst | CS_Sub_Height_2 | CS_Sub_Width_2, // YUV 4:2:0 planar - CS_IYUV = CS_I420, - CS_YUV9 = CS_PLANAR | CS_YUV | CS_Sample_Bits_8 | CS_VPlaneFirst | CS_Sub_Height_4 | CS_Sub_Width_4, // YUV 4:1:0 planar - CS_YV411 = CS_PLANAR | CS_YUV | CS_Sample_Bits_8 | CS_VPlaneFirst | CS_Sub_Height_1 | CS_Sub_Width_4, // YUV 4:1:1 planar - - CS_Y8 = CS_PLANAR | CS_INTERLEAVED | CS_YUV | CS_Sample_Bits_8, // Y 4:0:0 planar -/* - CS_YV48 = CS_PLANAR | CS_YUV | CS_Sample_Bits_16 | CS_VPlaneFirst | CS_Sub_Height_1 | CS_Sub_Width_1, // YUV 4:4:4 16bit samples - CS_Y16 = CS_PLANAR | CS_INTERLEAVED | CS_YUV | CS_Sample_Bits_16, // Y 4:0:0 16bit samples - - CS_YV96 = CS_PLANAR | CS_YUV | CS_Sample_Bits_32 | CS_VPlaneFirst | CS_Sub_Height_1 | CS_Sub_Width_1, // YUV 4:4:4 32bit samples - CS_Y32 = CS_PLANAR | CS_INTERLEAVED | CS_YUV | CS_Sample_Bits_32, // Y 4:0:0 32bit samples - - CS_PRGB = CS_PLANAR | CS_RGB | CS_Sample_Bits_8, // Planar RGB - CS_RGB48 = CS_PLANAR | CS_RGB | CS_Sample_Bits_16, // Planar RGB 16bit samples - CS_RGB96 = CS_PLANAR | CS_RGB | CS_Sample_Bits_32, // Planar RGB 32bit samples -*/ - }; - - int pixel_type; // changed to int as of 2.5 - - - int audio_samples_per_second; // 0 means no audio - int sample_type; // as of 2.5 - __int64 num_audio_samples; // changed as of 2.5 - int nchannels; // as of 2.5 - - // Imagetype properties - - int image_type; - - enum { - IT_BFF = 1<<0, - IT_TFF = 1<<1, - IT_FIELDBASED = 1<<2 - }; - - // Chroma placement bits 20 -> 23 ::FIXME:: Really want a Class to support this - enum { - CS_UNKNOWN_CHROMA_PLACEMENT = 0 << 20, - CS_MPEG1_CHROMA_PLACEMENT = 1 << 20, - CS_MPEG2_CHROMA_PLACEMENT = 2 << 20, - CS_YUY2_CHROMA_PLACEMENT = 3 << 20, - CS_TOPLEFT_CHROMA_PLACEMENT = 4 << 20 - }; - - // useful functions of the above - bool HasVideo() const AVS_BakedCode( return AVS_LinkCall(HasVideo)() ) - bool HasAudio() const AVS_BakedCode( return AVS_LinkCall(HasAudio)() ) - bool IsRGB() const AVS_BakedCode( return AVS_LinkCall(IsRGB)() ) - bool IsRGB24() const AVS_BakedCode( return AVS_LinkCall(IsRGB24)() ) - bool IsRGB32() const AVS_BakedCode( return AVS_LinkCall(IsRGB32)() ) - bool IsYUV() const AVS_BakedCode( return AVS_LinkCall(IsYUV)() ) - bool IsYUY2() const AVS_BakedCode( return AVS_LinkCall(IsYUY2)() ) - - bool IsYV24() const AVS_BakedCode( return AVS_LinkCall(IsYV24)() ) - bool IsYV16() const AVS_BakedCode( return AVS_LinkCall(IsYV16)() ) - bool IsYV12() const AVS_BakedCode( return AVS_LinkCall(IsYV12)() ) - bool IsYV411() const AVS_BakedCode( return AVS_LinkCall(IsYV411)() ) -//bool IsYUV9() const; - bool IsY8() const AVS_BakedCode( return AVS_LinkCall(IsY8)() ) - - bool IsColorSpace(int c_space) const AVS_BakedCode( return AVS_LinkCall(IsColorSpace)(c_space) ) - - bool Is(int property) const AVS_BakedCode( return AVS_LinkCall(Is)(property) ) - bool IsPlanar() const AVS_BakedCode( return AVS_LinkCall(IsPlanar)() ) - bool IsFieldBased() const AVS_BakedCode( return AVS_LinkCall(IsFieldBased)() ) - bool IsParityKnown() const AVS_BakedCode( return AVS_LinkCall(IsParityKnown)() ) - bool IsBFF() const AVS_BakedCode( return AVS_LinkCall(IsBFF)() ) - bool IsTFF() const AVS_BakedCode( return AVS_LinkCall(IsTFF)() ) - - bool IsVPlaneFirst() const AVS_BakedCode( return AVS_LinkCall(IsVPlaneFirst)() ) // Don't use this - // Will not work on planar images, but will return only luma planes - int BytesFromPixels(int pixels) const AVS_BakedCode( return AVS_LinkCall(BytesFromPixels)(pixels) ) - int RowSize(int plane=0) const AVS_BakedCode( return AVS_LinkCall(RowSize)(plane) ) - int BMPSize() const AVS_BakedCode( return AVS_LinkCall(BMPSize)() ) - - __int64 AudioSamplesFromFrames(int frames) const AVS_BakedCode( return AVS_LinkCall(AudioSamplesFromFrames)(frames) ) - int FramesFromAudioSamples(__int64 samples) const AVS_BakedCode( return AVS_LinkCall(FramesFromAudioSamples)(samples) ) - __int64 AudioSamplesFromBytes(__int64 bytes) const AVS_BakedCode( return AVS_LinkCall(AudioSamplesFromBytes)(bytes) ) - __int64 BytesFromAudioSamples(__int64 samples) const AVS_BakedCode( return AVS_LinkCall(BytesFromAudioSamples)(samples) ) - int AudioChannels() const AVS_BakedCode( return AVS_LinkCall(AudioChannels)() ) - int SampleType() const AVS_BakedCode( return AVS_LinkCall(SampleType)() ) - bool IsSampleType(int testtype) const AVS_BakedCode( return AVS_LinkCall(IsSampleType)(testtype) ) - int SamplesPerSecond() const AVS_BakedCode( return AVS_LinkCall(SamplesPerSecond)() ) - int BytesPerAudioSample() const AVS_BakedCode( return AVS_LinkCall(BytesPerAudioSample)() ) - void SetFieldBased(bool isfieldbased) AVS_BakedCode( AVS_LinkCall(SetFieldBased)(isfieldbased) ) - void Set(int property) AVS_BakedCode( AVS_LinkCall(Set)(property) ) - void Clear(int property) AVS_BakedCode( AVS_LinkCall(Clear)(property) ) - // Subsampling in bitshifts! - int GetPlaneWidthSubsampling(int plane) const AVS_BakedCode( return AVS_LinkCall(GetPlaneWidthSubsampling)(plane) ) - int GetPlaneHeightSubsampling(int plane) const AVS_BakedCode( return AVS_LinkCall(GetPlaneHeightSubsampling)(plane) ) - int BitsPerPixel() const AVS_BakedCode( return AVS_LinkCall(BitsPerPixel)() ) - - int BytesPerChannelSample() const AVS_BakedCode( return AVS_LinkCall(BytesPerChannelSample)() ) - - // useful mutator - void SetFPS(unsigned numerator, unsigned denominator) AVS_BakedCode( AVS_LinkCall(SetFPS)(numerator, denominator) ) - - // Range protected multiply-divide of FPS - void MulDivFPS(unsigned multiplier, unsigned divisor) AVS_BakedCode( AVS_LinkCall(MulDivFPS)(multiplier, divisor) ) - - // Test for same colorspace - bool IsSameColorspace(const VideoInfo& vi) const AVS_BakedCode( return AVS_LinkCall(IsSameColorspace)(vi) ) - -}; // end struct VideoInfo - - - - -// VideoFrameBuffer holds information about a memory block which is used -// for video data. For efficiency, instances of this class are not deleted -// when the refcount reaches zero; instead they're stored in a linked list -// to be reused. The instances are deleted when the corresponding AVS -// file is closed. - -class VideoFrameBuffer { - BYTE* const data; - const size_t data_size; - // sequence_number is incremented every time the buffer is changed, so - // that stale views can tell they're no longer valid. - volatile long sequence_number; - - friend class VideoFrame; - friend class Cache; - friend class ScriptEnvironment; - volatile long refcount; - -protected: - VideoFrameBuffer(size_t size); - VideoFrameBuffer(); - ~VideoFrameBuffer(); - -public: - const BYTE* GetReadPtr() const AVS_BakedCode( return AVS_LinkCall(VFBGetReadPtr)() ) - BYTE* GetWritePtr() AVS_BakedCode( return AVS_LinkCall(VFBGetWritePtr)() ) - size_t GetDataSize() const AVS_BakedCode( return AVS_LinkCall(GetDataSize)() ) - int GetSequenceNumber() const AVS_BakedCode( return AVS_LinkCall(GetSequenceNumber)() ) - int GetRefcount() const AVS_BakedCode( return AVS_LinkCall(GetRefcount)() ) -}; // end class VideoFrameBuffer - - -// VideoFrame holds a "window" into a VideoFrameBuffer. Operator new -// is overloaded to recycle class instances. - -class VideoFrame { - volatile long refcount; - VideoFrameBuffer* const vfb; - const size_t offset; - const int pitch, row_size, height; - const size_t offsetU, offsetV; // U&V offsets are from top of picture. - const int pitchUV, row_sizeUV, heightUV; - - friend class PVideoFrame; - void AddRef(); - void Release(); - - friend class ScriptEnvironment; - friend class Cache; - - VideoFrame(VideoFrameBuffer* _vfb, size_t _offset, int _pitch, int _row_size, int _height); - VideoFrame(VideoFrameBuffer* _vfb, size_t _offset, int _pitch, int _row_size, int _height, - size_t _offsetU, size_t _offsetV, int _pitchUV, int _row_sizeUV, int _heightUV); - - void* operator new(unsigned size); -// TESTME: OFFSET U/V may be switched to what could be expected from AVI standard! -public: - int GetPitch(int plane=0) const AVS_BakedCode( return AVS_LinkCall(GetPitch)(plane) ) - int GetRowSize(int plane=0) const AVS_BakedCode( return AVS_LinkCall(GetRowSize)(plane) ) - int GetHeight(int plane=0) const AVS_BakedCode( return AVS_LinkCall(GetHeight)(plane) ) - - // generally you shouldn't use these three - VideoFrameBuffer* GetFrameBuffer() const AVS_BakedCode( return AVS_LinkCall(GetFrameBuffer)() ) - size_t GetOffset(int plane=0) const AVS_BakedCode( return AVS_LinkCall(GetOffset)(plane) ) - - // in plugins use env->SubFrame() -- because implementation code is only available inside avisynth.dll. Doh! - VideoFrame* Subframe(int rel_offset, int new_pitch, int new_row_size, int new_height) const; - VideoFrame* Subframe(int rel_offset, int new_pitch, int new_row_size, int new_height, - int rel_offsetU, int rel_offsetV, int pitchUV) const; - - const BYTE* GetReadPtr(int plane=0) const AVS_BakedCode( return AVS_LinkCall(VFGetReadPtr)(plane) ) - bool IsWritable() const AVS_BakedCode( return AVS_LinkCall(IsWritable)() ) - BYTE* GetWritePtr(int plane=0) const AVS_BakedCode( return AVS_LinkCall(VFGetWritePtr)(plane) ) - - ~VideoFrame() AVS_BakedCode( AVS_LinkCall(VideoFrame_DESTRUCTOR)() ) -#ifdef AVISYNTH_CORE -public: - void DESTRUCTOR(); /* Damn compiler won't allow taking the address of reserved constructs, make a dummy interlude */ -#endif -}; // end class VideoFrame - -enum { - // Values 0 to 5 are reserved for old 2.5 plugins - // do not use them in new plugins - - // New 2.6 explicitly defined cache hints. - CACHE_NOTHING=10, // Do not cache video. - CACHE_WINDOW=11, // Hard protect upto X frames within a range of X from the current frame N. - CACHE_GENERIC=12, // LRU cache upto X frames. - CACHE_FORCE_GENERIC=13, // LRU cache upto X frames, override any previous CACHE_WINDOW. - - CACHE_GET_POLICY=30, // Get the current policy. - CACHE_GET_WINDOW=31, // Get the current window h_span. - CACHE_GET_RANGE=32, // Get the current generic frame range. - - CACHE_AUDIO=50, // Explicitly cache audio, X byte cache. - CACHE_AUDIO_NOTHING=51, // Explicitly do not cache audio. - CACHE_AUDIO_NONE=52, // Audio cache off (auto mode), X byte intial cache. - CACHE_AUDIO_AUTO=53, // Audio cache on (auto mode), X byte intial cache. - - CACHE_GET_AUDIO_POLICY=70, // Get the current audio policy. - CACHE_GET_AUDIO_SIZE=71, // Get the current audio cache size. - - CACHE_PREFETCH_FRAME=100, // Queue request to prefetch frame N. - CACHE_PREFETCH_GO=101, // Action video prefetches. - - CACHE_PREFETCH_AUDIO_BEGIN=120, // Begin queue request transaction to prefetch audio (take critical section). - CACHE_PREFETCH_AUDIO_STARTLO=121, // Set low 32 bits of start. - CACHE_PREFETCH_AUDIO_STARTHI=122, // Set high 32 bits of start. - CACHE_PREFETCH_AUDIO_COUNT=123, // Set low 32 bits of length. - CACHE_PREFETCH_AUDIO_COMMIT=124, // Enqueue request transaction to prefetch audio (release critical section). - CACHE_PREFETCH_AUDIO_GO=125, // Action audio prefetches. - - CACHE_GETCHILD_CACHE_MODE=200, // Cache ask Child for desired video cache mode. - CACHE_GETCHILD_CACHE_SIZE=201, // Cache ask Child for desired video cache size. - CACHE_GETCHILD_AUDIO_MODE=202, // Cache ask Child for desired audio cache mode. - CACHE_GETCHILD_AUDIO_SIZE=203, // Cache ask Child for desired audio cache size. - - CACHE_GETCHILD_COST=220, // Cache ask Child for estimated processing cost. - CACHE_COST_ZERO=221, // Child response of zero cost (ptr arithmetic only). - CACHE_COST_UNIT=222, // Child response of unit cost (less than or equal 1 full frame blit). - CACHE_COST_LOW=223, // Child response of light cost. (Fast) - CACHE_COST_MED=224, // Child response of medium cost. (Real time) - CACHE_COST_HI=225, // Child response of heavy cost. (Slow) - - CACHE_GETCHILD_THREAD_MODE=240, // Cache ask Child for thread safetyness. - CACHE_THREAD_UNSAFE=241, // Only 1 thread allowed for all instances. 2.5 filters default! - CACHE_THREAD_CLASS=242, // Only 1 thread allowed for each instance. 2.6 filters default! - CACHE_THREAD_SAFE=243, // Allow all threads in any instance. - CACHE_THREAD_OWN=244, // Safe but limit to 1 thread, internally threaded. - - CACHE_GETCHILD_ACCESS_COST=260, // Cache ask Child for preferred access pattern. - CACHE_ACCESS_RAND=261, // Filter is access order agnostic. - CACHE_ACCESS_SEQ0=262, // Filter prefers sequential access (low cost) - CACHE_ACCESS_SEQ1=263, // Filter needs sequential access (high cost) - -}; - -// Base class for all filters. -class IClip { - friend class PClip; - friend class AVSValue; - volatile long refcnt; - void AddRef(); - void Release(); -public: - IClip() : refcnt(0) {} - virtual int __stdcall GetVersion() { return AVISYNTH_INTERFACE_VERSION; } - virtual PVideoFrame __stdcall GetFrame(int n, IScriptEnvironment* env) = 0; - virtual bool __stdcall GetParity(int n) = 0; // return field parity if field_based, else parity of first field in frame - virtual void __stdcall GetAudio(void* buf, __int64 start, __int64 count, IScriptEnvironment* env) = 0; // start and count are in samples - /* Need to check GetVersion first, pre v5 will return random crap from EAX reg. */ - virtual int __stdcall SetCacheHints(int cachehints,int frame_range) = 0 ; // We do not pass cache requests upwards, only to the next filter. - virtual const VideoInfo& __stdcall GetVideoInfo() = 0; - virtual __stdcall ~IClip() {} -}; // end class IClip - - -// smart pointer to IClip -class PClip { - - IClip* p; - - IClip* GetPointerWithAddRef() const; - friend class AVSValue; - friend class VideoFrame; - - void Init(IClip* x); - void Set(IClip* x); - -public: - PClip() AVS_BakedCode( AVS_LinkCall(PClip_CONSTRUCTOR0)() ) - PClip(const PClip& x) AVS_BakedCode( AVS_LinkCall(PClip_CONSTRUCTOR1)(x) ) - PClip(IClip* x) AVS_BakedCode( AVS_LinkCall(PClip_CONSTRUCTOR2)(x) ) - void operator=(IClip* x) AVS_BakedCode( AVS_LinkCall(PClip_OPERATOR_ASSIGN0)(x) ) - void operator=(const PClip& x) AVS_BakedCode( AVS_LinkCall(PClip_OPERATOR_ASSIGN1)(x) ) - - IClip* operator->() const { return p; } - - // useful in conditional expressions - operator void*() const { return p; } - bool operator!() const { return !p; } - - ~PClip() AVS_BakedCode( AVS_LinkCall(PClip_DESTRUCTOR)() ) -#ifdef AVISYNTH_CORE -public: - void CONSTRUCTOR0(); /* Damn compiler won't allow taking the address of reserved constructs, make a dummy interlude */ - void CONSTRUCTOR1(const PClip& x); - void CONSTRUCTOR2(IClip* x); - void OPERATOR_ASSIGN0(IClip* x); - void OPERATOR_ASSIGN1(const PClip& x); - void DESTRUCTOR(); -#endif -}; // end class PClip - - -// smart pointer to VideoFrame -class PVideoFrame { - - VideoFrame* p; - - void Init(VideoFrame* x); - void Set(VideoFrame* x); - -public: - PVideoFrame() AVS_BakedCode( AVS_LinkCall(PVideoFrame_CONSTRUCTOR0)() ) - PVideoFrame(const PVideoFrame& x) AVS_BakedCode( AVS_LinkCall(PVideoFrame_CONSTRUCTOR1)(x) ) - PVideoFrame(VideoFrame* x) AVS_BakedCode( AVS_LinkCall(PVideoFrame_CONSTRUCTOR2)(x) ) - void operator=(VideoFrame* x) AVS_BakedCode( AVS_LinkCall(PVideoFrame_OPERATOR_ASSIGN0)(x) ) - void operator=(const PVideoFrame& x) AVS_BakedCode( AVS_LinkCall(PVideoFrame_OPERATOR_ASSIGN1)(x) ) - - VideoFrame* operator->() const { return p; } - - // for conditional expressions - operator void*() const { return p; } - bool operator!() const { return !p; } - - ~PVideoFrame() AVS_BakedCode( AVS_LinkCall(PVideoFrame_DESTRUCTOR)() ) -#ifdef AVISYNTH_CORE -public: - void CONSTRUCTOR0(); /* Damn compiler won't allow taking the address of reserved constructs, make a dummy interlude */ - void CONSTRUCTOR1(const PVideoFrame& x); - void CONSTRUCTOR2(VideoFrame* x); - void OPERATOR_ASSIGN0(VideoFrame* x); - void OPERATOR_ASSIGN1(const PVideoFrame& x); - void DESTRUCTOR(); -#endif -}; // end class PVideoFrame - - -class AVSValue { -public: - - AVSValue() AVS_BakedCode( AVS_LinkCall(AVSValue_CONSTRUCTOR0)() ) - AVSValue(IClip* c) AVS_BakedCode( AVS_LinkCall(AVSValue_CONSTRUCTOR1)(c) ) - AVSValue(const PClip& c) AVS_BakedCode( AVS_LinkCall(AVSValue_CONSTRUCTOR2)(c) ) - AVSValue(bool b) AVS_BakedCode( AVS_LinkCall(AVSValue_CONSTRUCTOR3)(b) ) - AVSValue(int i) AVS_BakedCode( AVS_LinkCall(AVSValue_CONSTRUCTOR4)(i) ) -// AVSValue(__int64 l); - AVSValue(float f) AVS_BakedCode( AVS_LinkCall(AVSValue_CONSTRUCTOR5)(f) ) - AVSValue(double f) AVS_BakedCode( AVS_LinkCall(AVSValue_CONSTRUCTOR6)(f) ) - AVSValue(const char* s) AVS_BakedCode( AVS_LinkCall(AVSValue_CONSTRUCTOR7)(s) ) - AVSValue(const AVSValue* a, int size) AVS_BakedCode( AVS_LinkCall(AVSValue_CONSTRUCTOR8)(a, size) ) - AVSValue(const AVSValue& v) AVS_BakedCode( AVS_LinkCall(AVSValue_CONSTRUCTOR9)(v) ) - - ~AVSValue() AVS_BakedCode( AVS_LinkCall(AVSValue_DESTRUCTOR)() ) - AVSValue& operator=(const AVSValue& v) AVS_BakedCode( return AVS_LinkCallV(AVSValue_OPERATOR_ASSIGN)(v) ) - - // Note that we transparently allow 'int' to be treated as 'float'. - // There are no int<->bool conversions, though. - - bool Defined() const AVS_BakedCode( return AVS_LinkCall(Defined)() ) - bool IsClip() const AVS_BakedCode( return AVS_LinkCall(IsClip)() ) - bool IsBool() const AVS_BakedCode( return AVS_LinkCall(IsBool)() ) - bool IsInt() const AVS_BakedCode( return AVS_LinkCall(IsInt)() ) -// bool IsLong() const; - bool IsFloat() const AVS_BakedCode( return AVS_LinkCall(IsFloat)() ) - bool IsString() const AVS_BakedCode( return AVS_LinkCall(IsString)() ) - bool IsArray() const AVS_BakedCode( return AVS_LinkCall(IsArray)() ) - - PClip AsClip() const AVS_BakedCode( return AVS_LinkCall(AsClip)() ) - bool AsBool() const AVS_BakedCode( return AVS_LinkCall(AsBool1)() ) - int AsInt() const AVS_BakedCode( return AVS_LinkCall(AsInt1)() ) -// int AsLong() const; - const char* AsString() const AVS_BakedCode( return AVS_LinkCall(AsString1)() ) - double AsFloat() const AVS_BakedCode( return AVS_LinkCall(AsFloat1)() ) - - bool AsBool(bool def) const AVS_BakedCode( return AVS_LinkCall(AsBool2)(def) ) - int AsInt(int def) const AVS_BakedCode( return AVS_LinkCall(AsInt2)(def) ) - double AsDblDef(double def) const AVS_BakedCode( return AVS_LinkCall(AsDblDef)(def) ) // Value is still a float -//float AsFloat(double def) const; // def demoted to a float - double AsFloat(float def) const AVS_BakedCode( return AVS_LinkCall(AsFloat2)(def) ) - const char* AsString(const char* def) const AVS_BakedCode( return AVS_LinkCall(AsString2)(def) ) - - int ArraySize() const AVS_BakedCode( return AVS_LinkCall(ArraySize)() ) - - const AVSValue& operator[](int index) const AVS_BakedCode( return AVS_LinkCallV(AVSValue_OPERATOR_INDEX)(index) ) - -private: -#ifdef AVISYNTH64 - union { - IClip* clip; - bool boolean; - __int64 integer; - double floating_pt; - const char* string; - const AVSValue* array; - }; -#endif - short type; // 'a'rray, 'c'lip, 'b'ool, 'i'nt, 'f'loat, 's'tring, 'v'oid, or 'l'ong - short array_size; -#ifndef AVISYNTH64 - union { - IClip* clip; - bool boolean; - int integer; - float floating_pt; - const char* string; - const AVSValue* array; -// __int64 longlong; - }; -#endif - - void Assign(const AVSValue* src, bool init); -#ifdef AVISYNTH_CORE -public: - void CONSTRUCTOR0(); /* Damn compiler won't allow taking the address of reserved constructs, make a dummy interlude */ - void CONSTRUCTOR1(IClip* c); - void CONSTRUCTOR2(const PClip& c); - void CONSTRUCTOR3(bool b); - void CONSTRUCTOR4(int i); - void CONSTRUCTOR5(float f); - void CONSTRUCTOR6(double f); - void CONSTRUCTOR7(const char* s); - void CONSTRUCTOR8(const AVSValue* a, int size); - void CONSTRUCTOR9(const AVSValue& v); - void DESTRUCTOR(); - AVSValue& OPERATOR_ASSIGN(const AVSValue& v); - const AVSValue& OPERATOR_INDEX(int index) const; - - bool AsBool1() const; - int AsInt1() const; - const char* AsString1() const; - double AsFloat1() const; - - bool AsBool2(bool def) const; - int AsInt2(int def) const; - double AsFloat2(float def) const; - const char* AsString2(const char* def) const; -#endif -}; // end class AVSValue - -#undef AVS_LinkCallV -#undef AVS_LinkCall -#undef AVS_BakedCode - -// instantiable null filter -class GenericVideoFilter : public IClip { -protected: - PClip child; - VideoInfo vi; -public: - GenericVideoFilter(PClip _child) : child(_child) { vi = child->GetVideoInfo(); } - PVideoFrame __stdcall GetFrame(int n, IScriptEnvironment* env) { return child->GetFrame(n, env); } - void __stdcall GetAudio(void* buf, __int64 start, __int64 count, IScriptEnvironment* env) { child->GetAudio(buf, start, count, env); } - const VideoInfo& __stdcall GetVideoInfo() { return vi; } - bool __stdcall GetParity(int n) { return child->GetParity(n); } - int __stdcall SetCacheHints(int cachehints,int frame_range) { return 0; } ; // We do not pass cache requests upwards, only to the next filter. -}; - - - - -// For GetCPUFlags. These are backwards-compatible with those in VirtualDub. -enum { - /* oldest CPU to support extension */ - CPUF_FORCE = 0x01, // N/A - CPUF_FPU = 0x02, // 386/486DX - CPUF_MMX = 0x04, // P55C, K6, PII - CPUF_INTEGER_SSE = 0x08, // PIII, Athlon - CPUF_SSE = 0x10, // PIII, Athlon XP/MP - CPUF_SSE2 = 0x20, // PIV, K8 - CPUF_3DNOW = 0x40, // K6-2 - CPUF_3DNOW_EXT = 0x80, // Athlon - CPUF_X86_64 = 0xA0, // Hammer (note: equiv. to 3DNow + SSE2, which - // only Hammer will have anyway) - CPUF_SSE3 = 0x100, // PIV+, K8 Venice - CPUF_SSSE3 = 0x200, // Core 2 - CPUF_SSE4 = 0x400, // Penryn, Wolfdale, Yorkfield - CPUF_SSE4_1 = 0x400, -//CPUF_AVX = 0x800, // Sandy Bridge, Bulldozer - CPUF_SSE4_2 = 0x1000, // Nehalem -//CPUF_AVX2 = 0x2000, // Haswell -//CPUF_AVX512 = 0x4000, // Knights Landing -}; - - - -class IScriptEnvironment { -public: - virtual __stdcall ~IScriptEnvironment() {} - - virtual /*static*/ long __stdcall GetCPUFlags() = 0; - - virtual char* __stdcall SaveString(const char* s, int length = -1) = 0; - virtual char* __stdcall Sprintf(const char* fmt, ...) = 0; - // note: val is really a va_list; I hope everyone typedefs va_list to a pointer - virtual char* __stdcall VSprintf(const char* fmt, void* val) = 0; - - __declspec(noreturn) virtual void __stdcall ThrowError(const char* fmt, ...) = 0; - - class NotFound /*exception*/ {}; // thrown by Invoke and GetVar - - typedef AVSValue (__cdecl *ApplyFunc)(AVSValue args, void* user_data, IScriptEnvironment* env); - - virtual void __stdcall AddFunction(const char* name, const char* params, ApplyFunc apply, void* user_data) = 0; - virtual bool __stdcall FunctionExists(const char* name) = 0; - virtual AVSValue __stdcall Invoke(const char* name, const AVSValue args, const char* const* arg_names=0) = 0; - - virtual AVSValue __stdcall GetVar(const char* name) = 0; - virtual bool __stdcall SetVar(const char* name, const AVSValue& val) = 0; - virtual bool __stdcall SetGlobalVar(const char* name, const AVSValue& val) = 0; - - virtual void __stdcall PushContext(int level=0) = 0; - virtual void __stdcall PopContext() = 0; - - virtual PVideoFrame __stdcall NewVideoFrame(const VideoInfo& vi, int align=FRAME_ALIGN) = 0; - - virtual bool __stdcall MakeWritable(PVideoFrame* pvf) = 0; - - virtual void __stdcall BitBlt(BYTE* dstp, int dst_pitch, const BYTE* srcp, int src_pitch, int row_size, int height) = 0; - - typedef void (__cdecl *ShutdownFunc)(void* user_data, IScriptEnvironment* env); - virtual void __stdcall AtExit(ShutdownFunc function, void* user_data) = 0; - - virtual void __stdcall CheckVersion(int version = AVISYNTH_INTERFACE_VERSION) = 0; - - virtual PVideoFrame __stdcall Subframe(PVideoFrame src, int rel_offset, int new_pitch, int new_row_size, int new_height) = 0; - - virtual int __stdcall SetMemoryMax(int mem) = 0; - - virtual int __stdcall SetWorkingDir(const char * newdir) = 0; - - virtual void* __stdcall ManageCache(int key, void* data) = 0; - - enum PlanarChromaAlignmentMode { - PlanarChromaAlignmentOff, - PlanarChromaAlignmentOn, - PlanarChromaAlignmentTest }; - - virtual bool __stdcall PlanarChromaAlignment(PlanarChromaAlignmentMode key) = 0; - - virtual PVideoFrame __stdcall SubframePlanar(PVideoFrame src, int rel_offset, int new_pitch, int new_row_size, - int new_height, int rel_offsetU, int rel_offsetV, int new_pitchUV) = 0; - - virtual void __stdcall DeleteScriptEnvironment() = 0; - - virtual void _stdcall ApplyMessage(PVideoFrame* frame, const VideoInfo& vi, const char* message, int size, - int textcolor, int halocolor, int bgcolor) = 0; - - virtual const AVS_Linkage* const __stdcall GetAVSLinkage() = 0; - - // noThrow version of GetVar - virtual AVSValue __stdcall GetVarDef(const char* name, const AVSValue& def=AVSValue()) = 0; - -}; // end class IScriptEnvironment - - -// avisynth.dll exports this; it's a way to use it as a library, without -// writing an AVS script or without going through AVIFile. -IScriptEnvironment* __stdcall CreateScriptEnvironment(int version = AVISYNTH_INTERFACE_VERSION); - - -#pragma pack(pop) - -#endif //__AVISYNTH_6_H__ diff --git a/EdgeFixer/vsplugin.c b/EdgeFixer/vsplugin.c index 25a3a7f..6490834 100644 --- a/EdgeFixer/vsplugin.c +++ b/EdgeFixer/vsplugin.c @@ -1,6 +1,6 @@ +#include +#include #include "edgefixer.h" -#include "VapourSynth.h" -#include "VSHelper.h" typedef struct vs_edgefix_data { VSNodeRef *node;