⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kmpplgin.h

📁 啊看见电脑哦啊师父破案对方;啊老大你发;dfadsdsfadfd发
💻 H
字号:
#include <windows.h>
#include <objbase.h>
#include <initguid.h>
#if (1100 > _MSC_VER)
#include <olectlid.h>
#else
#include <olectl.h>
#endif
#include <stdio.h>


/////////////////////////////////////////////////////////////////////////////
//
//          KMP侩 坷叼坷/厚叼坷 敲矾弊牢 牢磐其捞胶
//
//  KMP狼 敲矾弊牢 葛碘篮 扩沮橇狼 DSP敲矾弊牢苞
// 备炼啊 芭狼 鞍促. 坷叼坷 敲矾弊牢狼 版快绰 廊沮橇客 备炼啊
// 鞍扁 锭巩俊 扩沮橇狼 DSP敲矾弊牢阑 KMP俊辑 荤侩窍绰 巴捞 啊瓷窍促.
// 厚叼坷 敲矾弊牢狼 版快档 芭狼 厚搅窍骨肺 奖霸 累己且荐啊 乐阑巴捞促.
// 弊府绊 窃荐 痹距捞 cdel捞促.. 曼绊...
//
// 康惑敲矾弊牢狼 版快绰 WaSaVi客 崔扼脸促... 肚茄 曼绊...
//
/////////////////////////////////////////////////////////////////////////////


// header version: 0x20 == 0.20 == winamp 2.0
#define DSP_HDRVER 0x20



// DSP plugin interface

// notes:
// any window that remains in foreground should optimally pass unused
// keystrokes to the parent (winamp's) window, so that the user
// can still control it. As for storing configuration,
// Configuration data should be stored in <dll directory>\plugin.ini
// (look at the vis plugin for configuration code)

typedef struct winampDSPModule {
  char *description;		// description
  HWND hwndParent;			// parent window (filled in by calling app)
  HINSTANCE hDllInstance;	// instance handle to this DLL (filled in by calling app)

  void (*Config)(struct winampDSPModule *this_mod);  // configuration dialog (if needed)
  int (*Init)(struct winampDSPModule *this_mod);     // 0 on success, creates window, etc (if needed)

  // modify waveform samples: returns number of samples to actually write
  // (typically numsamples, but no more than twice numsamples, and no less than half numsamples)
  // numsamples should always be at least 128. should, but I'm not sure
  int (*ModifySamples)(struct winampDSPModule *this_mod, short int *samples, int numsamples, int bps, int nch, int srate);
   // 扩沮橇俊辑 荤侩窍绰 澜己阑 函版窍绰 窃荐...
   // samples : 基敲捞 甸绢啊 乐绰 滚欺
   // numsamples : 基敲狼 肮荐(角龙利牢 滚欺狼 辨捞啊 酒聪扼 基敲狼 肮荐烙...
   // bps : 基敲寸 厚飘荐 8 or 16
   // nch : 盲澄荐 1 : 葛畴  , 2 : 胶飘饭坷
   // srate : 基敲傅 饭捞飘 44000殿殿..
   // 捞窃荐俊辑 府畔蔼捞 函版茄 单捞鸥狼 肮荐捞促. 肚茄 角龙利栏肺 免仿栏肺
   // 唱啊绰 肮荐捞扁档 窍促. 扩沮橇俊辑 抛胶飘茄 版快绰 涝仿罐篮 基敲焊促
   // 腹霸秦档 悼累阑 窍看促. 蝶扼辑 KMP俊辑档 涝仿焊促 3-4硅沥档狼
   // 皋葛府甫 郴何利栏肺 且寸阑 秦初疽促. 弊矾骨肺 3-4硅 捞惑阑 贸府窍搁 坷幅啊
   // 老绢朝荐档 乐促...
   //

  
  void (*Quit)(struct winampDSPModule *this_mod);    // called when unloading

  void *userData; // user data, optional
} winampDSPModule;

typedef struct {
  int version;       // DSP_HDRVER
  char *description; // description of library
  winampDSPModule* (*getModule)(int);	// module retrieval function
} winampDSPHeader;

// exported symbols
typedef winampDSPHeader* (*winampDSPGetHeaderType)();
// winampDSPHeader *winampDSPGetHeader2()
// 澜己 DLL俊辑 Exports秦具 登绰 窃荐狼 屈侥
// 溜 困狼 窃荐甫 畴免矫难具 茄促....





////////////////////////////////////////////////////////////////////////////
//
// Video PlugIn Type( Modifyed from Winamp DSP Plugin type ...)
//
// 扩沮橇狼 DSP敲矾弊牢狼 备炼甫 炼陛 函版秦辑 KMP狼 厚叼坷
// 敲矾弊牢阑 荤侩茄促.
////////////////////////////////////////////////////////////////////////////




 // KMP俊辑 力傍登绰 拳惑狼 备炼
 // KMP俊辑绰 敲饭牢 YV12捞固瘤狼 备炼甫 荤侩茄促.
 // Y狼 农扁绰 捞固瘤狼 农扁客 鞍绊,
 // U,V狼 农扁绰 啊肺啊 2硅累绊, 技肺啊 2硅累促.
 // 溜 U,V狼 农扁绰 Y狼 农扁焊促 4硅啊 累促.
typedef struct kmpYV12Image {
   int Width, Height; // 啊肺, 技肺狼 农扁
   unsigned char *y_plain; // Y敲饭牢 滚欺, 农扁:Width*Height
   unsigned char *u_plain; // U敲饭牢 滚欺, 农扁:Width*Height/4
   unsigned char *v_plain; // V敲饭牢 滚欺, 农扁:Width*Height/4
   unsigned char *Mask;    // 捧疙阑 困茄 付胶农 郴何利栏肺 荤侩
} kmpYV12Image;


DEFINE_GUID(IID_IYV12ImageProcessor,
0x249F44BC, 0xB8BF, 0x411F, 0xB0, 0x47, 0xD9, 0xC0, 0x17, 0xDF, 0xEC, 0xF2);

DECLARE_INTERFACE_(IkmpYV12ImageProcessor, IUnknown)
{
 // YV12捞固瘤甫 包府窍绊 贸府窍绰单 档框阑 林绰 牢磐其捞胶
 // 泅犁 RGB32,24,565,555狼 DIB捞固瘤父 瘤盔茄促.
 // 抗力甫 曼绊窍扁 官恩...
   STDMETHOD(kmpAllocYV12Image) (THIS_
		int width,int height,kmpYV12Image **pImage
             ) PURE;
			// width, height狼 农扁肺 YV12Image备炼眉甫 父电促...
            // 2狼 硅荐肺 沥纺捞 登绢 乐绢具 登绊,
            // 啊瓷窍搁 16狼 硅荐啊 登绢 乐绢具父 救沥窍霸 悼累茄促.
            // AllocYV12Image肺 父电巴篮 酒贰狼 FreeYV12Image肺 秦力甫 秦具 等促.
   STDMETHOD(kmpFreeYV12Image) (THIS_
		kmpYV12Image **pImage
			) PURE;
            // AllocYV12Image肺 父电 捞固瘤甫 秦力 茄促.
   STDMETHOD(kmpCopyYV12Image) (THIS_
		kmpYV12Image *pSrc,kmpYV12Image *pDst
			) PURE;
            // YV12Image甫 汗荤茄促.
   STDMETHOD(kmpRGB32ToYV12) (THIS_
		void *DIB32,int Width,int Height,kmpYV12Image *pImage
			) PURE;
   STDMETHOD(kmpRGB24ToYV12) (THIS_
		void *DIB24,int Width,int Height,kmpYV12Image *pImage
			) PURE;
   STDMETHOD(kmpRGB565ToYV12) (THIS_
		void *DIB565,int Width,int Height,kmpYV12Image *pImage
			) PURE;
   STDMETHOD(kmpRGB555ToYV12) (THIS_
		void *DIB555,int Width,int Height,kmpYV12Image *pImage
			) PURE;
            // RGB器镐(DIB)阑 YV12捞固瘤肺 官槽促.
   STDMETHOD(kmpYV12ToRGB32) (THIS_
		kmpYV12Image *pImage,void *DIB32,int Width,int Height
			) PURE;
   STDMETHOD(kmpYV12ToRGB24) (THIS_
		kmpYV12Image *pImage,void *DIB24,int Width,int Height
			) PURE;
   STDMETHOD(kmpYV12ToRGB565) (THIS_
		kmpYV12Image *pImage,void *DIB565,int Width,int Height
			) PURE;
   STDMETHOD(kmpYV12ToRGB555) (THIS_
		kmpYV12Image *pImage,void *DIB555,int Width,int Height
			) PURE;
            // YV12Image狼 屈侥栏肺 等巴阑 RGB(DIB)狼 屈侥栏肺 官槽促.
            // 捞锭 Height俊 澜狼荐甫 持绢林搁 拳搁捞 第笼绢廉辑 唱柯促.
            // Width绰 剧父 瘤盔窃...
   STDMETHOD(kmpYV12NormalDraw) (THIS_
		kmpYV12Image *Src,kmpYV12Image *Dst,RECT *SRect,int dx,int dy
			) PURE;
            // 酒公繁 瓤苞 绝捞 捞固瘤甫 弊赴促.
   STDMETHOD(kmpYV12BlendDraw) (THIS_
		kmpYV12Image *Src,kmpYV12Image *Dst,RECT *SRect,int dx,int dy,int alpha
			) PURE;
            // 馆捧疙瓤苞肺 捞固瘤甫 弊赴促. 0<=alpha<=255
   STDMETHOD(kmpYV12TransDraw) (THIS_
		kmpYV12Image *Src,kmpYV12Image *Dst,RECT *SRect,int dx,int dy
			) PURE;
            // 硅版祸阑 捧疙栏肺 弊赴促. 硅版祸篮 0锅掳 祸阑 扁霖栏肺 茄促.
   STDMETHOD(kmpYV12BlendTransDraw) (THIS_
		kmpYV12Image *Src,kmpYV12Image *Dst,RECT *SRect,int dx,int dy,int alpha
			) PURE;
            // 硅版祸阑 捧疙栏肺 弊府绊, 傈眉甫 馆捧疙瓤苞肺 弊赴促. 0<=alpha<=255
};



typedef struct kmpDSPModule {
  char *description;		// description
  HWND hwndParent;			// parent window (filled in by calling app)
  HINSTANCE hDllInstance;	// instance handle to this DLL (filled in by calling app)

  void (*Config)(struct kmpDSPModule *this_mod);  // configuration dialog (if needed)
  int (*Init)(struct kmpDSPModule *this_mod);     // 0 on success, creates window, etc (if needed)

  // modify waveform samples: returns number of samples to actually write
  // (typically numsamples, but no more than twice numsamples, and no less than half numsamples)
  // numsamples should always be at least 128. should, but I'm not sure
  int (*BeforeModifySamples)(struct kmpDSPModule *this_mod,struct kmpYV12Image *image,int ewidth); // 基敲阑 函版窍绰窃荐
   // kmp俊辑 荤侩窍绰 康惑阑 函版窍绰 窃荐...
   // image : 捞固瘤狼 滚欺, 困俊辑 汲疙
   // ewidth : 角龙利牢 捞固瘤狼 啊肺 辨捞
   // image狼 width绰 且寸等 捞固瘤狼 啊肺辨捞捞促.
   // 角龙利牢巴苞 且寸利牢巴捞 瞒捞啊 唱绰 捞蜡绰 鞘磐甸捞 楷搬瞪锭俊绰
   // 滚欺啊 沥纺捞 登绢 乐绢具 凳... 蝶扼辑 角力肺 康惑捞 甸绢啊 乐绰 辨捞客
   // 且寸等 滚欺狼 辨捞啊 撇妨瘤霸凳...
   // 焊烹 拳惑阑 贸府窍绰 版快绰 喊肺 脚版阑 臼静档 登瘤父 谅快甫 第笼绰 版快绰
   // 康惑狼 场阑 舅酒具登扁 锭巩俊 颇扼皋磐肺 逞败霖促...
   // 溜 image狼 width=ewidth+?? 咯扁辑 ??绰 眠啊 官捞飘肺 沥纺阑 困秦辑 眠啊等 官捞飘捞促.
   // 技肺俊辑绰 沥纺捞 鞘夸啊 绝促.
   // 康惑篮 农扁甫 函版且荐啊 绝促.
   // 府畔蔼篮 乐瘤父 贸府窍瘤 臼酒档 等促.
  int (*AfterModifySamples)(struct kmpDSPModule *this_mod,struct kmpYV12Image *image,int ewidth); // 基敲阑 函版窍绰窃荐
   // 颇扼固磐绰 困客 鞍澜.
   // BeforeModifyImage狼 版快绰 歹喉基敲捞 悼累且锭父 阂府绢瘤霸 等促.
   // 蝶扼辑 粱歹狐弗 捞固瘤 贸府甫 困秦辑绰 BeforeModifyImage甫
   // 贸府窍搁 等促.
   // 溜 歹喉基敲 悼累矫  BeforeModifyImage -> AfterModifyImage
   //             救窍搁        AfterModifyImage
   //  贸府甫 救且妨搁 NULL肺 汲沥窍搁 凳....
   //

  void (*Quit)(struct kmpDSPModule *this_mod);    // called when unloading

  void *userData; // user data, optional
  IkmpYV12ImageProcessor *ImageProcessor; // 捞固瘤贸府甫 困茄 牢磐其捞胶
                                          // 困俊辑 汲疙  
} kmpDSPModule;

typedef struct {
  int version;       // DSP_HDRVER
  char *description; // description of library
  kmpDSPModule* (*getModule)(int);	// module retrieval function
} kmpDSPHeader;

// exported symbols
typedef kmpDSPHeader* (*kmpDSPGetHeaderType)();
// kmpDSPHeader *kmpDSPGetHeader2()
// 康惑 DLL俊辑 Export秦具登绰 窃荐狼 屈侥
// 溜 困狼 窃荐甫 畴免矫难具 茄促....

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -