📄 testframefwd.cpp
字号:
// test frame forwarding
#include <stdio.h>
#include <windows.h>
#include "../maviscomm.h"
void writeBmp(BYTE * frameBuf, FrameSize_t fs, const char * filename);
int main(int argc, char** argv)
{
FrameSize_t fs;
HINSTANCE mavisLib = NULL;
GETFRAMESIZEPROC procGetFrameSize = NULL;
GETFRAMEPROC procGetFrame = NULL;
mavisLib = LoadLibrary("mavisclient");
if(!mavisLib)
{
fprintf(stderr, "Can't load dll");
return -1;
}
procGetFrameSize = (GETFRAMESIZEPROC)GetProcAddress(mavisLib, GETFRAMESIZEPROC_NAME);
procGetFrame = (GETFRAMEPROC)GetProcAddress(mavisLib, GETFRAMEPROC_NAME);
procGetFrameSize(&fs);
printf("h = %d, w = %d, bufSize = %d, nPixels = %d\n", fs.height, fs.width, fs.nBufSize, fs.nPixels);
BYTE * buf = new BYTE[fs.nBufSize];
if( procGetFrame(buf, fs.nBufSize) )
printf("failed to get frame data\n");
else
writeBmp(buf, fs, "myfile.bmp");
int count = 0;
for(int i=0; i<fs.nBufSize; i++) if(buf[i]) ++count;
printf("count = %d\n", count);
if(mavisLib) FreeLibrary(mavisLib);
delete[] buf;
return 0;
}
void writeBmp(BYTE * frameBuf, FrameSize_t fs, const char * filename)
{
// Create the bitmap file
HANDLE hf = CreateFile(
filename,
GENERIC_WRITE,
FILE_SHARE_READ,
NULL,
CREATE_ALWAYS,
NULL,
NULL
);
if( INVALID_HANDLE_VALUE == hf )
{
int err = GetLastError();
printf("Can\'t create file %s: %s", filename, strerror(err));
return;
}
// Write out the bitmap file header
BITMAPFILEHEADER bfh;
memset( &bfh, 0, sizeof( bfh ) );
bfh.bfType = 'MB';
bfh.bfSize = sizeof( bfh ) + fs.nBufSize + sizeof( BITMAPINFOHEADER );
bfh.bfOffBits = sizeof( BITMAPINFOHEADER ) + sizeof( BITMAPFILEHEADER );
DWORD written = 0;
WriteFile( hf, &bfh, sizeof( bfh ), &written, NULL );
// Write the bitmap format information
BITMAPINFOHEADER bih;
memset( &bih, 0, sizeof( bih ) );
bih.biSize = sizeof( bih );
bih.biWidth = fs.width;
bih.biHeight = fs.height;
bih.biPlanes = 1;
bih.biBitCount = 24;
written = 0;
WriteFile( hf, &bih, sizeof( bih ), &written, NULL );
// Write the bitmap bits
written = 0;
WriteFile( hf, frameBuf, fs.nBufSize, &written, NULL );
// release resources
CloseHandle( hf );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -