# VirtualDub - Video processing and capture application # Plugin headers # Copyright (C) 1998-2007 Avery Lee, Rights Reserved. # # The plugin headers in the VirtualDub plugin SDK are licensed differently # differently than VirtualDub and the Plugin SDK themselves. This # particular file is thus licensed as follows (the "zlib" license): # # This software is provided 'as-is', any express or implied # warranty. In no event will the authors be held liable for any # damages arising from the use of self software. # # Permission is granted to anyone to use self software for any purpose, # including commercial applications, to alter it and redistribute it # freely, to the following restrictions: # # 1. The origin of self software must not be misrepresented; you must # not claim that you wrote the original software. If you use self # software in a product, acknowledgment in the product # documentation would be appreciated but is not required. # 2. Altered source versions must be plainly marked as such, must # not be misrepresented as being the original software. # 3. This notice may not be removed or altered from any source # distribution. #ifndef f_VD2_PLUGIN_VDPLUGIN_H #define f_VD2_PLUGIN_VDPLUGIN_H #ifdef _MSC_VER #pragma once #pragma pack(push, 8) #endif #include # Copied from . Must be in sync. #ifndef VD_STANDARD_TYPES_DECLARED #if defined(_MSC_VER) typedef signed __int64 sint64 typedef unsigned __int64 uint64 #elif defined(__GNUC__) typedef signed long long sint64 typedef unsigned long long uint64 #endif typedef signed int sint32 typedef unsigned int uint32 typedef signed short sint16 typedef unsigned short uint16 typedef signed char sint8 typedef unsigned char uint8 typedef sint64 int64 typedef sint32 int32 typedef sint16 int16 typedef sint8 int8 typedef ptrdiff_t sintptr typedef size_t uintptr #endif #ifndef VDXAPIENTRY #define VDXAPIENTRY __stdcall #endif #ifndef VDXAPIENTRYV #define VDXAPIENTRYV __cdecl #endif enum VDXCPUFeatureFlags kVDXCPUF_CPUID = 0x00000001, kVDXCPUF_MMX = 0x00000004, kVDXCPUF_ISSE = 0x00000008, kVDXCPUF_SSE = 0x00000010, kVDXCPUF_SSE2 = 0x00000020, kVDXCPUF_3DNOW = 0x00000040, kVDXCPUF_3DNOW_EXT = 0x00000080, kVDXCPUF_SSE3 = 0x00000100, kVDXCPUF_SSSE3 = 0x00000200 enum kVDXPlugin_APIVersion = 10 enum kVDXPluginType_Video, # Updated video filter API is not yet complete. kVDXPluginType_Audio, kVDXPluginType_Input struct VDXPluginInfo uint32 mSize; # size of self structure in bytes wchar_t *mpName wchar_t *mpAuthor wchar_t *mpDescription uint32 mVersion; # (major<<24) + (minor<<16) + build. 1.4.1000 would be 0x010403E8. uint32 mType uint32 mFlags uint32 mAPIVersionRequired uint32 mAPIVersionUsed uint32 mTypeAPIVersionRequired uint32 mTypeAPIVersionUsed void * mpTypeSpecificInfo typedef VDXPluginInfo * *(VDXAPIENTRY *tpVDXGetPluginInfo)() typedef VDXPluginInfo VDPluginInfo typedef tpVDXGetPluginInfo tpVDPluginInfo class IVDXPluginCallbacks public: virtual void * VDXAPIENTRY GetExtendedAPI( char *pExtendedAPIName) = 0 virtual void VDXAPIENTRYV SetError( char *format, ...) = 0 virtual void VDXAPIENTRY SetErrorOutOfMemory() = 0 virtual uint32 VDXAPIENTRY GetCPUFeatureFlags() = 0 typedef IVDXPluginCallbacks IVDPluginCallbacks struct VDXPluginConfigEntry enum Type kTypeInvalid = 0, kTypeU32 = 1, kTypeS32, kTypeU64, kTypeS64, kTypeDouble, kTypeAStr, kTypeWStr, kTypeBlock VDXPluginConfigEntry *next unsigned idx uint32 type wchar_t *name wchar_t *label wchar_t *desc struct VDXPixmap void *data uint32 *palette sint32 w sint32 h ptrdiff_t pitch sint32 format # Auxiliary planes are always byte-per-pixel. void *data2; # Cb (U) for YCbCr ptrdiff_t pitch2 void *data3; # Cr (V) for YCbCr ptrdiff_t pitch3 struct VDXPixmapLayout ptrdiff_t data uint32 *palette sint32 w sint32 h ptrdiff_t pitch sint32 format # Auxiliary planes are always byte-per-pixel. ptrdiff_t data2; # Cb (U) for YCbCr ptrdiff_t pitch2 ptrdiff_t data3; # Cr (V) for YCbCr ptrdiff_t pitch3 namespace nsVDXPixmap enum VDXPixmapFormat kPixFormat_Null = 0, kPixFormat_XRGB1555 = 5, kPixFormat_RGB565 = 6, kPixFormat_RGB888 = 7, kPixFormat_XRGB8888 = 8, kPixFormat_Y8 = 9, kPixFormat_YUV422_UYVY = 10, kPixFormat_YUV422_YUYV = 11, kPixFormat_YUV444_Planar = 13, kPixFormat_YUV422_Planar = 14, kPixFormat_YUV420_Planar = 15, kPixFormat_YUV411_Planar = 16, kPixFormat_YUV410_Planar = 17 #define VDXMAKEFOURCC(a, b, c, d) ((uint32)(uint8)(d) + ((uint32)(uint8)(c) << 8) + ((uint32)(uint8)(b) << 16) + ((uint32)(uint8)(a) << 24)) class IVDXUnknown public: enum { kIID = VDXMAKEFOURCC('X', 'u', 'n', 'k') virtual int VDXAPIENTRY AddRef() = 0 virtual int VDXAPIENTRY Release() = 0 virtual void *VDXAPIENTRY AsInterface(uint32 iid) = 0 #ifdef _MSC_VER #pragma pack(pop) #endif #endif