📄 dsp_testc.cpp
字号:
// DSP_TestC.cpp : Defines the entry point for the DLL application.
//
#include <stdlib.h>
#include <windows.h>
#include "stdafx.h"
#include "..\KMPPlgIn.h"
winampDSPHeader _winampDSPHeader;
winampDSPModule _winampDSPModule;
kmpDSPHeader _kmpDSPHeader;
kmpDSPModule _kmpDSPModule[3];
winampDSPModule *getwinampDSPModule(int num)
{
if(num==0) return &_winampDSPModule;
else return NULL;
}
int rand() // 厚林倔 C俊辑 伐待函荐甫 给父甸绢辑... 弊成 C绰 登绰单
{ // 恐 扩档快俊辑绰 救等绰芭具... 舅酒辑 绊媚 结技夸...
return 1;
}
int ModifyAudio(winampDSPModule *this_mod,short int *samples,
int numsamples,int bps,int nch,int srate)
{
int i,rr,aa;
unsigned short *ps;
unsigned char *pb;
// 厚林倔 C俊辑 罚待函荐甫 给父甸百匙...
if (bps==16) {
ps=(unsigned short *)samples;
if (nch==2) {
for(i=0;i<numsamples;i++) {
rr=rand() % (0x8fff / 5);
aa=*ps+rr;
if(aa<-32768) aa=-32768;
else if(aa>32767) aa=32767;
*ps=aa;
ps++;
rr=rand() % (0x8fff / 5);
aa=*ps+rr;
if(aa<-32768) aa=-32768;
else if(aa>32767) aa=32767;
*ps=aa;
ps++;
}
}
else if(nch==1) {
for(i=0;i<numsamples;i++) {
rr=rand() % (0x8fff / 5);
aa=*ps+rr;
if(aa<-32768) aa=-32768;
else if(aa>32767) aa=32767;
*ps=aa;
ps++;
}
}
}
else if(bps==8) {
pb=(unsigned char *)samples;
if(nch==2) {
for(i=0;i<numsamples;i++) {
rr=rand() % (0x7f / 5);
aa=*pb+rr;
if(aa<0) aa=0;
else if(aa>255) aa=255;
*pb=aa;
pb++;
rr=rand() % (0x7f / 5);
aa=*pb+rr;
if(aa<0) aa=0;
else if(aa>255) aa=255;
*pb=aa;
pb++;
}
}
else if(nch==1) {
for(i=0;i<numsamples;i++) {
rr=rand() % (0x7f / 5);
aa=*pb+rr;
if(aa<0) aa=0;
else if(aa>255) aa=255;
*pb=aa;
pb++;
}
}
}
return numsamples;
}
kmpDSPModule *getkmpDSPModule(int num)
{
if(num==0) return &_kmpDSPModule[0];
else if(num==1) return &_kmpDSPModule[1];
else if(num==2) return &_kmpDSPModule[2];
else return NULL;
}
int ModifyVideoHori(kmpDSPModule *this_mod,kmpYV12Image *image,int ewidth)
{
int i,j;
unsigned char *ps,*pd;
ps=image->y_plain;
for(i=0;i<image->Height;i++) {
pd=ps;
for(j=0;j<ewidth;j++) {
if ((j & 3)==0) *pd=0;
pd++;
}
ps=ps+image->Width;
}
return 0;
}
int ModifyVideoVert(kmpDSPModule *this_mod,kmpYV12Image *image,int ewidth)
{
int i;
unsigned char *pp;
pp=image->y_plain;
for(i=0;i<image->Height;i++) {
if ((i & 3)==0) memset(pp,0,ewidth);
pp=pp+image->Width;
}
return 0;
}
/*
int TimeDisplay(kmpDSPModule *this_mod,kmpYV12Image *image,int ewidth)
{
HWND han;
HDC comhdc,hdc;
HBITMAP hbitmap;
HBRUSH hbrush;
RECT rr;
SYSTEMTIME time;
char buf[200];
void *dib;
BITMAPINFO bitmapinfo;
kmpYV12Image *Img;
han=GetDesktopWindow();
hdc=GetDC(han);
comhdc=CreateCompatibleDC(hdc);
SetRect(&rr,0,0,image->Width,20);
hbitmap=CreateCompatibleBitmap(hdc,rr.right,rr.bottom);
hbrush=CreateSolidBrush(RGB(0,0,0));
SelectObject(comhdc,hbrush);
SelectObject(comhdc,hbitmap);
FillRect(comhdc,&rr,hbrush);
SetTextColor(comhdc,RGB(255,255,255));
SetBkMode(comhdc,TRANSPARENT);
GetSystemTime(&time);
sprintf(buf,"%02d:%02d:%02d",time.wHour,time.wMinute,time.wSecond);
TextOut(comhdc,1,1,buf,strlen(buf));
dib=malloc(rr.right*rr.bottom*4);
memset((void *)&bitmapinfo,0,sizeof(bitmapinfo));
bitmapinfo.bmiHeader.biBitCount=32;
bitmapinfo.bmiHeader.biHeight=rr.bottom;
bitmapinfo.bmiHeader.biWidth=rr.right;
bitmapinfo.bmiHeader.biPlanes=1;
bitmapinfo.bmiHeader.biSize=sizeof(bitmapinfo.bmiHeader);
bitmapinfo.bmiHeader.biSizeImage=rr.right*rr.bottom*4;
GetDIBits(comhdc,hbitmap,0,rr.bottom,dib,&bitmapinfo,DIB_RGB_COLORS);
DeleteObject(hbrush);
DeleteObject(hbitmap);
DeleteDC(comhdc);
ReleaseDC(han,hdc);
// 酒捞啊唱 DIB甫 父甸扁 困秦辑 捞犯霸 腹捞 秦具 登唱....
// 澜... 开矫 C绰 汗棱秦...
// 柳楼 汗累秦...
// 酒流 弥利拳 登瘤 臼疽嚼聪促.
// 绊荐丛甸篮 舅酒辑 绊媚 静技夸...
if(this_mod->ImageProcessor!=NULL) {
this_mod->ImageProcessor->kmpAllocYV12Image(rr.right,rr.bottom,&Img);
this_mod->ImageProcessor->kmpRGB32ToYV12(dib,rr.right,rr.bottom,Img);
this_mod->ImageProcessor->kmpYV12BlendTransDraw(Img,image,&rr,0,0,200);
this_mod->ImageProcessor->kmpFreeYV12Image(&Img);
}
free(dib);
return 0;
}
*/
int TimeDisplay(kmpDSPModule *this_mod,kmpYV12Image *image,int ewidth)
{
//HWND han;
HDC comhdc,hdc;
HBITMAP hbitmap;
HBRUSH hbrush;
RECT rr;
SYSTEMTIME time;
char buf[200];
void *dib;
BITMAPINFO bitmapinfo;
kmpYV12Image *Img;
// DesktopDC甫 掘绢晨..//
hdc=GetDC(NULL);
comhdc=CreateCompatibleDC(hdc);
SetRect(&rr,0,0,image->Width,20);
// CreateDIBSection阑 窍扁 困茄 汲沥 //
memset((void *)&bitmapinfo,0,sizeof(bitmapinfo));
bitmapinfo.bmiHeader.biBitCount=32;
bitmapinfo.bmiHeader.biHeight=rr.bottom;
bitmapinfo.bmiHeader.biWidth=rr.right;
bitmapinfo.bmiHeader.biPlanes=1;
bitmapinfo.bmiHeader.biSize=sizeof(bitmapinfo.bmiHeader);
bitmapinfo.bmiHeader.biSizeImage=rr.right*rr.bottom*4;
bitmapinfo.bmiHeader.biCompression = BI_RGB;
// CreateDIBSection篮 DDB(HBITMAP)窍绊 DIB阑 悼矫俊 积己茄促.//
hbitmap= CreateDIBSection(hdc, &bitmapinfo, DIB_RGB_COLORS,
&dib, NULL, NULL);
HBITMAP hOldBitmap = (HBITMAP)SelectObject(comhdc, hbitmap);
// 捞固瘤甫 贸府窍绰 苞沥 烙.. //
hbrush=CreateSolidBrush(RGB(0,0,0));
FillRect(comhdc,&rr,hbrush);
DeleteObject(hbrush);
SetTextColor(comhdc,RGB(255,255,255));
SetBkMode(comhdc,TRANSPARENT);
GetSystemTime(&time);
sprintf(buf,"%02d:%02d:%02d",time.wHour,time.wMinute,time.wSecond);
TextOut(comhdc,1,1,buf,strlen(buf));
//dib=malloc(rr.right*rr.bottom*4);
//GetDIBits(comhdc,hbitmap,0,rr.bottom,dib,&bitmapinfo,DIB_RGB_COLORS);
//DeleteObject(hbitmap); <-- DeleteObject甫 窍搁 dib鳖瘤 绝绢咙...//
SelectObject(comhdc, hOldBitmap);
DeleteDC(comhdc);
ReleaseDC(NULL,hdc);
// 酒捞啊唱 DIB甫 父甸扁 困秦辑 捞犯霸 腹捞 秦具 登唱....
// 澜... 开矫 C绰 汗棱秦...
// 柳楼 汗累秦...
// 酒流 弥利拳 登瘤 臼疽嚼聪促.
// 绊荐丛甸篮 舅酒辑 绊媚 静技夸...
if(this_mod->ImageProcessor!=NULL) {
this_mod->ImageProcessor->kmpAllocYV12Image(rr.right,rr.bottom,&Img);
this_mod->ImageProcessor->kmpRGB32ToYV12(dib,rr.right,rr.bottom,Img);
this_mod->ImageProcessor->kmpYV12BlendTransDraw(Img,image,&rr,0,0,200);
this_mod->ImageProcessor->kmpFreeYV12Image(&Img);
}
//free(dib); <--- 措脚俊 DeleteObject肺 dib鳖瘤 瘤框//
DeleteObject(hbitmap);
return 0;
}
winampDSPHeader *winampDSPGetHeader2() // 坷叼坷敲矾弊牢 Export窃荐
{
// For Audio
_winampDSPHeader.version=0x20;
_winampDSPHeader.description="Test for Audio Plugin K-MultimediaPlayer";
_winampDSPHeader.getModule=&getwinampDSPModule;
_winampDSPModule.description="Add noise v0.001 for K-MultimediaPlayer";
_winampDSPModule.hwndParent=0;
_winampDSPModule.hDllInstance=0;
_winampDSPModule.Config=NULL;
_winampDSPModule.Init=NULL;
_winampDSPModule.ModifySamples=ModifyAudio;
_winampDSPModule.Quit=NULL;
_winampDSPModule.userData=NULL;
return &_winampDSPHeader;
}
kmpDSPHeader *kmpDSPGetHeader2() //厚叼坷 敲矾弊牢 Export窃荐
{
// For Video
_kmpDSPHeader.version=0x20;
_kmpDSPHeader.description="Test for Video Plugin K-MultimediaPlayer";
_kmpDSPHeader.getModule=getkmpDSPModule;
_kmpDSPModule[0].description="Hori Scanline v0.001 for K-MultimediaPlayer";
_kmpDSPModule[0].hwndParent=0;
_kmpDSPModule[0].hDllInstance=0;
_kmpDSPModule[0].Config=NULL;
_kmpDSPModule[0].Init=NULL;
_kmpDSPModule[0].BeforeModifySamples=NULL;
_kmpDSPModule[0].AfterModifySamples=ModifyVideoHori;
_kmpDSPModule[0].Quit=NULL;
_kmpDSPModule[0].userData=NULL;
_kmpDSPModule[1].description="Hori Scanline v0.001 for K-MultimediaPlayer";
_kmpDSPModule[1].hwndParent=0;
_kmpDSPModule[1].hDllInstance=0;
_kmpDSPModule[1].Config=NULL;
_kmpDSPModule[1].Init=NULL;
_kmpDSPModule[1].BeforeModifySamples=NULL;
_kmpDSPModule[1].AfterModifySamples=ModifyVideoVert;
_kmpDSPModule[1].Quit=NULL;
_kmpDSPModule[1].userData=NULL;
_kmpDSPModule[2].description="Time Display v0.001 for K-MultimediaPlayer";
_kmpDSPModule[2].hwndParent=0;
_kmpDSPModule[2].hDllInstance=0;
_kmpDSPModule[2].Config=NULL;
_kmpDSPModule[2].Init=NULL;
_kmpDSPModule[2].BeforeModifySamples=NULL;
_kmpDSPModule[2].AfterModifySamples=TimeDisplay;
_kmpDSPModule[2].Quit=NULL;
_kmpDSPModule[2].userData=NULL;
return &_kmpDSPHeader;
}
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -